femm
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@femmBuild a C-core actuator with a 1 mm gap and 200 turns at 2 A; solve and report pull force."
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.
FEMM Agent Suite
Let an AI agent build, solve, sweep and verify FEMM 5 models in magnetics, electrostatics, heat flow and current flow, and show you the physics checks that prove each number.
Contents: What you can ask · Why this exists · Install · Tool groups · Skills · Video tour · Architecture · Validation · FEMM 5 facts you will hit · Python API · Development · Licence · Acknowledgement
What you can ask
Build a planar C-core actuator with a 1 mm gap, 200 turns at 2 A and a 20 mm stack, solve it, and tell me the gap flux density and the pull force. Check both against hand calculations.
Here is my 12-slot / 4-pole surface-PM motor. Run cogging torque by rotating the rotor and again with the air-gap element, and tell me whether the two agree.
Open-circuit back-EMF at 1000 rpm, Ld and Lq, and the mean torque at iq = 10 A. Is the torque consistent with 3/2 p psi iq?
Sweep a round copper conductor from 1 Hz to 10 kHz and compare R(f) with the Bessel solution. Does the input power match the losses?
This FEMM 4.2 Lua script uses "M-19 Steel" and "NdFeB 32 MGOe". Run it on FEMM 5, port it to Python, and tell me which materials changed.
The agent uses the MCP tools and the skill family below. Every tool answers with
{"ok", "result" | "error": {"message", "hint"}, "session", "seconds"}, errors carry the next
action as a hint, and the skills teach the agent to back each number with a health check and an
analytic estimate before calling it a result.
Related MCP server: Magnetics SME MCP Server
Why this exists
FEMM is the finite element program a generation of engineers learned magnetics with. FEMM 5 (femm-qt, by David Meeker) is the first FEMM with cross-platform scripting: a Qt build for Windows, macOS and Linux, a headless engine, and a plain TCP protocol that any language can speak, with MicroPython inside the engine instead of Lua 4.
An agent still cannot just "call FEMM". It needs:
validated building blocks: tools that put arguments in the right order for each physics (the 12-argument
mi_addboundprop, the frequency that moves position betweenmi_probdefandci_probdef), save before analysing, handle stateful selections, and turn every FEMM error into an actionable hint;physics checks: energy and coenergy identities, force and torque by two methods, AC power balance, flux conservation, saturation, boundary distance, magnet operating points, plus 25 closed-form estimates to compare against;
a catalog: all 677 FEMM 5 scripting commands with arguments, return values and code tables, the four material libraries, and a record of FEMM 5 behaviour verified live.
This suite is meant as the golden-standard library a future finite element workflow can build on: an MCP server with 88 tools, a pure-Python engineering layer (health rules, estimates, experiments, file parser), and eleven Claude skills that teach the agent how a FEMM user works and when not to trust a number.
Install
Requirements: FEMM 5.0 (build 06oct2026 or newer), Python 3.10 or newer, and Claude Code or any MCP client. FEMM itself is not bundled.
Windows
git clone https://github.com/Zwl20085/femm-agent-suite
cd femm-agent-suite
.\scripts\install.ps1 # venv + package, MCP server "femm", the 11 skills
.\scripts\install.ps1 -FemmDir "D:\femm-qt\bin" # if FEMM is not in a default locationmacOS / Linux
git clone https://github.com/Zwl20085/femm-agent-suite
cd femm-agent-suite
./scripts/install.sh # same steps
FEMM_DIR=~/.local/opt/femm-qt/bin ./scripts/install.shRestart Claude Code and ask: run the FEMM self-test. It solves an axisymmetric thick solenoid and compares the centre field with the closed form (0.7 % on build 06oct2026), and checks materials, units, bulk getters and circuits.
Plugin (the plugin starts the server with uv):
/plugin marketplace add Zwl20085/femm-agent-suite
/plugin install femm@femm-agent-suiteManual registration with any Python 3.10+ that has the package installed
(pip install -e . in the clone):
claude mcp add femm -- <python> -m femm_agent
claude mcp add femm -e FEMM_DIR=/path/to/femm-qt/bin -- <python> -m femm_agentCopy .claude/skills/* to ~/.claude/skills/ to install the skills by hand.
Other MCP clients (stdio):
{"mcpServers": {"femm": {"command": "<python>", "args": ["-m", "femm_agent"],
"env": {"FEMM_DIR": "C:/femm-qt/bin"}}}}The console script femm-mcp is the same server.
Variable | Meaning | Default |
| FEMM 5 bin folder (holding | auto: |
| root of the per-session work dirs (models, arrays, plots, reports) |
|
Tool groups
88 tools in 12 groups. One line per tool: .claude/skills/femm/references/tool-map.md.
Group | Tools | Headline tools |
session | 5 |
|
document | 7 |
|
geometry | 18 |
|
properties | 10 |
|
materials | 6 |
|
mesh and solve | 4 |
|
post-processing | 10 |
|
scripting | 6 |
|
docs | 5 |
|
experiments | 9 |
|
health | 3 |
|
report | 5 |
|
Anything without a curated tool is one femm_call away; the call is checked against the
677-command catalog first.
Skills
Eleven skills in .claude/skills/. The router femm is the entry point and
states the safety rules; each specialised skill has references/ for depth.
Skill | Use it for |
| Start here: which skill next, safety rules, tool map, FEMM 5 vs 4.2, self-check tasks |
| The core loop for magnetostatic and AC problems: boundaries, the air-gap element recipe, circuits, the feedback ladder |
| The other three physics: probdef, conductors, boundary types, point-value layouts, integral codes |
| Drawing, selection by coordinates, groups, copy/rotate for slots and poles, DXF, symmetry, meshing failures |
| Library search, the FEMM 4.2 rename map, B-H curves, magnets, laminations, MS/m vs S/m |
| Force vs position, torque vs angle, cogging by two routes, back-EMF, Ld/Lq, AC sweep, parametric, magnet operating point |
| Every health rule, its tolerance, the 25 estimates, how to report PASS / FAIL / CHECK |
| Point values, block and line integral codes, bulk arrays, field statistics, plots, reports, comparisons |
|
|
| Slot/pole choice, winding factor, magnet load line, Carter, dq torque, and a parametrised SPM model in one call |
| Every error hint, engine and port problems, GUI vs headless, results that look wrong |
Video tour
A 109-second narrated introduction to the suite: the problem, the architecture, an agent building and proving a 12-slot / 4-pole motor, the validation table, the skills and the install.
Architecture
MCP client (Claude Code, ...)
| stdio
v
femm_agent.server ---- 12 tool groups, 88 tools, envelope {ok, result | error{message, hint}}
|-- sessions.py named FEMM engines: port, pid, physics, open document, solved flag, work dir
| `-- ipc.py FemmLink: TCP 127.0.0.1, one MicroPython line per request, reply parsing,
| timeouts, journal of every line sent (no pyFEMM import needed)
|-- catalog.py data/commands.json: 677 commands, arguments, returns, code tables
|-- materials.py data/materials/*.json + the installed .dat libraries, 4.2 rename map
|-- experiments.py force-position, torque-angle, cogging, back-EMF, inductance, AC sweep, parametric
|-- health.py pure physics invariants (unit tested) diagnostics.py live health check
|-- estimate.py 25 closed-form references units.py conversions
|-- benchmarks.py validated models: ccore, coilgun, spm, round_wire
`-- femfile.py, plotting.py, reporting.py file parser, field maps, Markdown reports
|
v TCP, one engine per session
femm_headless(w) --port N or femm_gui --port N
(FEMM 5: MicroPython engine, tangle mesher, fkn / belasolv / hsolv / csolv solvers)Each session spawns its own headless engine on a free port (launch about 0.5 s), so several models
can run side by side. Bulk results (whole-mesh nodes, elements, B) are written to .npz/.csv in
the work dir and summarised; they never flood the agent's context.
Validation
Measured live on FEMM 5.0 build 06oct2026 (Windows, headless) by examples/ and tests/live/.
Case | FEMM 5 via the suite | Reference | Agreement |
Thick solenoid centre field (self-test, axisymmetric, 500 turns, 1 A) |
| B0 = mu0 J l ln[(b + sqrt(b^2 + l^2)) / (a + sqrt(a^2 + l^2))] | 0.695 % |
C-core gap flux density | 0.238 T | mu0 N I / (2g + l_fe/mu_r) = 0.2405 T | 1 % (fringing) |
C-core energy | W = W' = 1/2 L I^2 = 0.0149452 J | identity for a linear model | 0.00 % |
C-core force at 1 mm | -9.74 N; WST vs virtual work 1.6 % RMS over 1-3 mm | 2 B^2 A / 2 mu0 = -9.21 N | 6 % (fringing, leakage) |
SPM cogging, peak to peak | 0.3824 N·m (rotate + re-mesh) | 0.3835 N·m (air-gap element) | 0.3 % |
SPM mean torque, iq = 10 A | 1.415 N·m | 3/2 p psi_d iq from FEM flux linkage = 1.428 N·m | 0.9 % |
SPM back-EMF fundamental, 1000 rpm | 9.973 V (rotate) | 9.977 V (air-gap element) | 0.04 % |
SPM inductances | Ld 0.427 mH, Lq 0.421 mH | mutuals reciprocal | 0.4 % |
Round copper wire R(f), r = 5 mm | 1 Hz - 10 kHz sweep | exact Bessel internal impedance | 0.0 % to 100 Hz, 0.1 % at 1 kHz, 1.3 % at 10 kHz |
AC power balance | 1/2 Re(V conj I) | block-integral total losses | 0.00 % |
Parallel-plate capacitor, heat-flow slab, current-flow strip | charge and energy, heat flux, current density | eps A / d, k dT / L, sigma V / L | within 1 % |
The C-core inductance (7.47 mH vs 4.81 mH from the no-fringing formula) is the reminder that a formula is a reference, not a target: the skills teach the agent to explain the gap, not to tune it away.
FEMM 5 facts you will hit
Material names changed.
M-19 SteelisM-19 14 mil,Pure IronisARMCO Pure Iron,1010 Steelis1010 Steel (hot rolled), andNdFeB 32 MGOehas no entry (nearestN33). FEMM raisesCouldn't load "..." from the materials library;femm_material_searchmaps the old names.Commands exist only with a document.
mi_*appears afternewdocument(0),mo_*only after a solution is loaded, andmi_analyzerefuses an unsaved model.One line per request. Multi-line MicroPython goes through
exec(open(path).read()); lines over 64 KiB are split by the engine.One client per engine, and the engine dies with it. A second connection gets
femm-qt is already connected to another client; a headless engine exits within about 0.5 s of its client disconnecting.No screenshots headless.
mo_savebitmapsucceeds but writes nothing without the GUI; the suite renders field maps from the bulk mesh arrays instead.The air-gap element needs a
<No Mesh>annulus, the stress-tensor block integral reads about zero across it (usemo_gapintegral), and an unknown boundary name returns zeros, not an error.pyFEMM helpers are not engine commands.
mo_getband 61 other conveniences answername 'mo_getb' isn't defined; usemo_getpointvalues(14 values). Standalone pyFEMM finds the engine only throughFEMM_DIR.Units. Magnetic current density is in MA/m^2, magnetic conductivity in MS/m, current-flow conductivity in S/m; the post-processor reports depth in metres, the pre-processor in problem units.
All verified behaviour is collected in docs/femm5-facts.md and served to
the agent by femm_facts.
Python API
The engineering layer works without an MCP client. From examples/ccore/run_ccore.py:
from pathlib import Path
from femm_agent import benchmarks, diagnostics, experiments, ipc
out = Path("out").resolve()
out.mkdir(exist_ok=True)
link = ipc.launch(port=ipc.pick_free_port(49700), cwd=str(out)) # headless FEMM 5 engine
try:
model = (out / "ccore.fem").as_posix()
meta = benchmarks.build_ccore(link, model) # validated C-core benchmark
link.call("mi_analyze", 1)
link.call("mi_loadsolution")
x, y = meta["probe_gap_point"]
print("gap B", abs(link.call("mo_getpointvalues", x, y)[2]), "T",
"analytic", meta["estimate"]["gap_B_T"])
hc = diagnostics.run(link, model, force_groups=[1], reaction_groups=[2, 3])
print(hc["summary"])
fr = experiments.force_vs_position(link, [1], dy=0.25, steps=9,
out_dir=out / "experiments", restore_path=model)
print(fr["summary"], fr["files"]["csv"])
finally:
link.close() # the engine exits with itFull examples with reports: examples/ccore/run_ccore.py and examples/spm_motor/run_spm.py (about 130 solves,
about 25 s). See examples/README.md.
Development
python -m venv .venv; .venv\Scripts\pip install -e ".[dev]"
.venv\Scripts\python -m pytest # offline suite: a fake engine, no FEMM needed (runs in CI)
.venv\Scripts\python -m pytest -m live # live tests against a local FEMM 5
.venv\Scripts\python -m femm_agent # run the MCP server on stdiotests/test_tool_names.py fails if this README or any skill names a femm_* tool that is not
registered. Repository layout:
Path | What |
| server, IPC, sessions, tool groups, engineering layer |
|
|
| verified FEMM 5 behaviour, with evidence tags |
| the eleven skills |
| end-to-end C-core and SPM scripts |
| installers for Windows and macOS / Linux |
| offline tests; |
Contributions: see CONTRIBUTING.md. Only document behaviour observed on a real
FEMM 5, and mark the rest unverified.
Licence
The suite is MIT licensed (LICENSE). FEMM 5 itself is not part of this repository and
is not redistributed: the femm-qt application, engine, mesher, bindings and material libraries are
MIT, and the finite element solvers (fkn, belasolv, hsolv, csolv) are GPLv3 or later. The
suite talks to FEMM over its TCP interface and does not link the solvers. The JSON summaries in
data/ are generated from the installed FEMM 5 libraries and keep their MIT licence.
Acknowledgement
FEMM is the work of David Meeker. Thank you for decades of a free, rigorous 2D field solver, and for FEMM 5's open scripting interface that made this project possible. Get FEMM 5 from femm.info: download page. This project is independent and not affiliated with or endorsed by the FEMM author.
Available Tools
88 toolsfemm_add_arcsA
Add arcs [[x1, y1, x2, y2, angle_deg, maxseg_deg], ...]: from (x1,y1) counter-clockwise to
(x2,y2) sweeping angle_deg (0 < angle <= 180); maxseg_deg is the arc discretisation
(1 deg fine, 5-10 coarse; air gaps want <= 1). End nodes are created as needed.
| Name | Required | Description | Default |
|---|---|---|---|
| arcs | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real behavior: arc direction (counter-clockwise), the valid angle range (0 < angle <= 180), and the side effect that end nodes are created as needed. It omits error handling, whether arcs join to existing geometry, and return 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?
Single dense sentence that front-loads the tuple format before the edge-case constraints, with each parenthetical earning its place. It is slightly run-on but well organized and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a geometry-creation tool with no annotations and no output schema, the description supplies the input format, direction, constraints, and side effect adequately. Missing only the meaning of the session parameter and any error/return expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it thoroughly explains the complex `arcs` tuple (x1,y1,x2,y2,angle_deg,maxseg_deg) including the meaning and tuning of maxseg_deg. The `session` parameter is left completely unexplained, which is the only gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Add) and resource (arcs) and even specifies the tuple layout, so the action is unambiguous. It does not explicitly differentiate itself from siblings like femm_add_segments or femm_add_polyline, so the distinction is only implicit in the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose arcs over segments, polylines, or circles, and offers no prerequisites. The 'air gaps want <= 1' note is a parameter hint, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_add_block_labelA
Add a block label at (x, y) inside a closed region and assign its properties in one call.
material: a name already loaded/defined (femm_material_load / femm_material_add), or "" for a hole. mesh_size: max element size in problem units, None = automatic. Magnetics only: circuit (name from femm_add_circuit, "" for none), magdir (magnetisation direction in degrees for magnets), turns (number of turns of this block in the circuit; negative = opposite direction). group: integer group for selection/integrals. Each closed region needs exactly one label; a label in the wrong region is a common bug (check with femm_geometry_summary).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| group | No | ||
| turns | No | ||
| magdir | No | ||
| circuit | No | ||
| session | No | main | |
| material | Yes | ||
| mesh_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the magnetics-only scope of circuit/magdir/turns, that negative turns means opposite direction, that mesh_size None means automatic, and that a wrong-region label is a common bug. It does not cover error behavior or the session parameter, but the behavioral surface is largely disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence states the action and scope immediately, followed by a parameter glossary and a caveat sentence. Dense but front-loaded and each line carries information; only the slightly ragged line-wrapping keeps it from being maximally clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description supplies purpose, prerequisites, parameter semantics, and a placement pitfall. It omits the session parameter and any return/error behavior, leaving a small but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does for material, mesh_size, circuit, magdir, turns, and group, explaining defaults and semantics (e.g., '' for no circuit, integer group for selection/integrals). x/y and session are left unexplained, but x/y are self-evident coordinates, so the compensation is strong overall.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Add a block label') plus the coordinates and the 'in one call' property assignment. It is clearly distinguishable from sibling mutation tools like femm_set_block_prop (which modifies an existing label) because it is an additive creation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on dependencies: material must come from femm_material_load/femm_material_add or be '<No Mesh>' for a hole, circuit names come from femm_add_circuit, and it recommends checking placement with femm_geometry_summary. It gives clear preconditions but does not explicitly state when to prefer this over femm_set_block_prop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_add_boundaryA
Define a boundary condition for the current physics and (optionally) assign it.
Magnetics bc_type (mi_addboundprop, 12 args): prescribed_a (A = a0 + a1x + a2y, phase phi; A=0 is the usual outer boundary), small_skin_depth (mu = relative permeability, sigma MS/m), mixed (c0, c1 complex OK), strategic_dual_image, periodic, antiperiodic, periodic_air_gap / antiperiodic_air_gap (sliding band: inner_angle/outer_angle = rotor/stator shift in degrees). Assign it to BOTH concentric arcs of the gap annulus and put a "" block label inside the annulus (verified: without it the solver stops with "a region has no material assigned"). Electrostatics: fixed_voltage (value = V), mixed (c0, c1), surface_charge (flux = C/m^2), periodic, antiperiodic. Currentflow: fixed_voltage (value), mixed, surface_current (flux), periodic, antiperiodic. Heatflow: fixed_temperature (value = K), heat_flux (flux W/m^2), convection (h W/m^2K, t_inf K), radiation (beta emissivity, t_inf_rad K), periodic, antiperiodic. segments / arcs: [[x, y], ...] points ON the segments/arcs (e.g. midpoints) to assign this boundary to (each picks the nearest). Periodic pairs need one boundary per pair, assigned to both sides. For an unbounded open boundary see femm_call('mi_makeABC').
| Name | Required | Description | Default |
|---|---|---|---|
| h | No | ||
| a0 | No | ||
| a1 | No | ||
| a2 | No | ||
| c0 | No | ||
| c1 | No | ||
| mu | No | ||
| phi | No | ||
| arcs | No | ||
| beta | No | ||
| flux | No | ||
| name | Yes | ||
| sigma | No | ||
| t_inf | No | ||
| value | No | ||
| bc_type | No | prescribed_a | |
| session | No | main | |
| segments | No | ||
| t_inf_rad | No | ||
| arc_maxseg | No | ||
| inner_angle | No | ||
| outer_angle | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and delivers high-value behavioral facts: the verified requirement to place a '<No Mesh>' block label inside the gap annulus or the solver aborts with 'a region has no material assigned', that assignment resolves each point to the nearest segment/arc, and the periodic-pairing pairing rule. It omits return behavior, idempotency, and session scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is long but deliberately structured per physics and front-loaded with the one-line purpose; the dense bc_type inventories are justified given 22 parameters and zero schema descriptions. Minor redundancy (periodic/antiperiodic repeated per physics) is a small cost.
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 22-param mutation tool with no annotations, no output schema, and 0% schema coverage, the description supplies the argument semantics, the assignment workflow, and a critical failure-mode warning. Gaps remain around arc_maxseg/session and the interaction with femm_set_segment_prop, but nothing essential to calling 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?
Schema description coverage is 0% across 22 parameters, so the description must compensate, and it largely does: it explains a0/a1/a2/phi, mu/sigma, c0/c1, value, flux, h/t_inf, beta/t_inf_rad, inner_angle/outer_angle, and the segments/arcs point-list semantics. Only arc_maxseg and session are left undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Define a boundary condition') and adds the important qualifier that assignment is optional, which tells the agent this tool both creates and can bind the property. It is clearly distinguished from geometry/property siblings like femm_set_segment_prop and femm_add_block_label.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditional routing: which bc_type applies to magnetics vs electrostatics vs currentflow vs heatflow, the rule that periodic pairs need one boundary per pair assigned to both sides, and it names an alternative for open boundaries ('see femm_call(\'mi_makeABC\')'). It does not state when not to use this tool relative to other property-setting siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_add_circuitA
Magnetics: define a circuit carrying current amps (peak for AC; [re, im] or "1+2j" for
phase). series=True: every block in it carries current per turn (set turns on the block
labels; stranded coils). series=False (parallel): current is the total, split between
blocks by impedance (solid conductors). Results: femm_circuit_results.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| series | No | ||
| current | No | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose substantive traits: peak-vs-complex current interpretation, per-turn semantics for series circuits, and impedance-based splitting for parallel ones. It omits any statement of document/session prerequisites, error behavior, or what happens on re-definition, so a mutation tool's full profile is not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but efficient: the Magnetics scope is front-loaded, followed by the current format, the series/parallel meanings, and the results pointer. Every clause adds information, though the series/parallel sentence packs several distinct concepts into one run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming femm_circuit_results, which is genuinely useful. However, with zero annotation coverage and no mention of session/document prerequisites or the undocumented name/session parameters, it is only partially complete for a four-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It richly documents two of four parameters (current's AC/complex format, series' two modes), but says nothing about name or the session parameter that defaults to 'main'. Half the parameters are undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: defines a circuit that carries current, scoped explicitly to Magnetics problems. An agent can identify it as the circuit-definition tool and distinguish it from femm_modify_circuit or femm_add_conductor, though the distinction from the modify sibling is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The series=True vs series=False explanation functions as real usage guidance, telling the agent which configuration matches stranded coils versus solid conductors and how current is interpreted in each. It routes the agent to femm_circuit_results for outputs, but gives no ordering/prerequisite context (open document, session) or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_add_conductorA
Electrostatics / heat flow / current flow: define a conductor property. fixed: electrostatics 'voltage' (value V) or 'charge' (value C/m); heatflow 'temperature' (value K) or 'flux' (value W/m, total heat); currentflow 'voltage' (V) or 'current' (A; complex OK at AC). Assign it to segments/arcs/nodes with femm_set_segment_prop(conductor=name) etc. Results after solving: femm_circuit_results(name).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| fixed | No | voltage | |
| value | No | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses domain behavior (which 'fixed' values are legal in each physics mode and the units for each), but is silent on mutation semantics, duplicate-name handling, session requirements, and reversibility for what is clearly a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose then lays out the mode/value matrix compactly in one block. Dense but each clause carries distinct information; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description supplies solid domain context and points to where solved results appear. It is complete enough to call correctly, though session semantics and write-side effects remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: it enumerates valid 'fixed' strings per physics mode and gives units for 'value' (V, C/m, K, W/m, A incl. complex at AC). Only 'name' and 'session' are left undocumented, and both are self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('define a conductor property') and scopes it across the three problem types it applies to. It names sibling tools (femm_set_segment_prop, femm_circuit_results) that an agent would otherwise confuse it with, so it is distinguishable without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear workflow context: define here, then assign with femm_set_segment_prop(conductor=name), then read results via femm_circuit_results(name). It does not state when NOT to use it (e.g. when a conductor already exists, or vs. add_boundary/add_circuit), but the positive routing is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_add_nodesA
Add nodes at [[x, y], ...] (problem units; axi: x is r >= 0). Existing nodes at the same place are reused by FEMM. Usually you want femm_draw_polygon / femm_add_segments instead.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose a genuinely non-obvious behavioral trait — 'Existing nodes at the same place are reused by FEMM' (effective dedup), plus units and coordinate-system constraints. It omits what is returned (node handles/indices), whether the session must be open, and any error 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 short clauses, each load-bearing: format/units first, then the reuse behavior, then the alternative-tool routing. No filler and everything an agent needs is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema creation tool the description is adequate but not complete: it omits the undocumented 'session' parameter and gives no hint of what the call returns (node identifiers), which an agent would need to follow up with femm_set_node_prop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It documents the required 'points' parameter well (nested [[x,y]] pairs, problem units, axi semantics) but never mentions the 'session' parameter, leaving half the inputs unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Add nodes') and immediately pins down the input format '[[x, y], ...]' plus problem units and the axi constraint (x is r >= 0). It also distinguishes itself from nearby siblings by naming femm_draw_polygon / femm_add_segments as the usual choice, so an agent can route without opening 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?
Explicitly tells the agent when NOT to use it ('Usually you want femm_draw_polygon / femm_add_segments instead'), which is stronger than most siblings. The positive condition (standalone points not tied to a segment/polygon) is only implied rather than stated, so it falls just short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_add_point_propB
Define a nodal point property and optionally assign it to the nodes nearest points.
magnetics: value = prescribed A (Wb/m), source = point current (A).
electrostatics: value = V, source = point charge (C/m). heatflow: value = T (K),
source = point heat (W/m). currentflow: value = V, source = point current (A/m).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | No | ||
| points | No | ||
| source | No | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully defines what `value` and `source` represent per physics module (A vs V vs T, Wb/m vs C/m vs watts), which is real behavioral context, but it says nothing about overwrite semantics, error behavior when no nodes lie near `points`, or required session state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the primary action in the first sentence, then adds compact per-physics unit lines. Dense and information-bearing with minimal waste, though the tabular physics breakdown could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations and no output schema, the description covers the two most semantically loaded parameters well but leaves `name`/`session` and error/overwrite behavior unexplained. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does explain the meaning and units of `value` and `source` across four physics types plus what `points` triggers. However `name` and `session` are left entirely undocumented in both schema and description, leaving a notable gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Define a nodal point property') and adds the optional assignment behavior to nearest nodes. It does not differentiate from the similar sibling femm_set_node_prop, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance and no routing away from the sibling femm_set_node_prop, which operates on node properties and could plausibly be confused with this tool. The physics-type unit breakdown hints at context but does not tell the agent when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_add_segmentsB
Add straight segments [[[x1,y1],[x2,y2]], ...] (or [x1,y1,x2,y2] each). End nodes are created as needed. Segments that cross are split by FEMM at the intersection.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | main | |
| segments | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses two non-obvious behaviors: end nodes are auto-created, and crossing segments are split at intersections by FEMM. However, it omits the return value, coordinate units, and any session/state requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler, and the input-format spec is front-loaded ahead of the behavioral notes. Efficient and easy to scan, though terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a geometry-mutation tool with no output schema and no annotations, the description covers the key behaviors and input format. It still omits units, the session parameter's meaning, and what is returned, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does document the accepted formats for 'segments' ('[[[x1,y1],[x2,y2]], ...]' or '[x1,y1,x2,y2] each'), which is valuable. The 'session' parameter is left entirely unexplained, so half the parameters remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add straight segments') with the qualifier 'straight' that distinguishes it from femm_add_arcs and the draw_* family. No sibling is named, but an agent can infer the role from the verb+resource without opening a 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?
No explicit when-to-use, when-not, or alternative guidance is given. With many sibling geometry tools (femm_add_arcs, femm_add_nodes, femm_draw_polyline), the agent gets no signal about which to choose, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_api_getB
Full catalog entry of one command: args (name, type, optional, description), return value, integer code tables (enums), read_only flag, notes (e.g. pyFEMM-only helpers the engine does not define), and where it is documented in the manual.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does describe the output contents thoroughly (args, return value, enums, notes, manual location), which is helpful transparency about what the tool returns. However, it does not explicitly state side effects, permissions, or that the operation is read-only, leaving some behavioral 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 that immediately states the tool's purpose, followed by a compact enumeration of returned fields. Every clause contributes information, and there is 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?
With no output schema, the description appropriately explains the return structure, which is valuable. However, with no annotations and 0% input schema coverage, the definition leaves important invocation and selection details unclear, especially how to specify a command name and when to use this tool instead of related lookup tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the sole required parameter 'name' is undocumented in the schema. The description only says 'of one command', which hints that 'name' refers to a command identifier but does not explain expected format, case sensitivity, or examples. This is insufficient compensation for the complete lack of schema-level parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: it retrieves the full catalog entry for one command. It enumerates the returned fields in detail, so the agent knows exactly what kind of information this tool provides. It does not explicitly differentiate itself from siblings like femm_api_search or femm_manual_section, which prevents a top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, nor any mention of alternatives. The description implies that it is used for looking up a specific command's full entry, but it never states when to choose this over femm_api_search or femm_manual_section, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_api_searchA
Search the catalog of every FEMM 5 scripting command (name, signature, description). physics: magnetics|electrostatics|heatflow|currentflow (common commands always included); phase: pre (mi_/ei_/hi_/ci_) or post (mo_/eo_/ho_/co_). Examples: 'block integral', 'air gap', 'boundary', 'bitmap', 'mi_addmaterial'. Then femm_api_get(name) for full args.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| phase | No | ||
| query | Yes | ||
| physics | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses return fields and the non-obvious filtering rule that common commands are always included, but says nothing about the limit parameter's effect, pagination, or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the two filter vocabularies, then examples, then the follow-up call. Every clause carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search with no output schema or annotations, the description covers purpose, filters, return fields, and the downstream call. The main gap is the unexplained limit/result-count behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the physics and phase filters and gives query examples, but leaves the limit parameter (default 15) entirely unexplained, so one of four parameters remains undocumented in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (catalog of every FEMM 5 scripting command), and explicitly names what it returns (name, signature, description). It cleanly distinguishes itself from the sibling femm_api_get, which it positions as the follow-up for full args.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use and an explicit workflow hand-off ('Then femm_api_get(name) for full args'), plus concrete example queries. It does not state when-not to use search (e.g., when the command name is already known), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_block_integralA
Integrate over blocks: select the blocks containing points and/or every block in
group (list of group numbers), then evaluate xo_blockintegral for each code.
Magnetics codes (manual 3.7.1): 0 A.J, 1 A, 2 field energy (J), 3 hysteresis/lamination
loss, 4 resistive loss (W), 5 area, 6 total loss, 7 total current, 8/9 integral of Bx/By,
10 volume, 11/12 Lorentz force x/y, 15 Lorentz torque, 17 coenergy, 18/19 weighted
stress tensor force x/y (N, select the moving part surrounded by air), 22 stress tensor
torque (N m), 24 R^2... Other physics: see femm_api_get('eo_blockintegral') etc.
Defaults: magnetics [2,17,5,10,7]; electrostatics [0,1,2]; heatflow [0,1,2]; currentflow [0,1,4,5].
Planar results are per the problem depth (total, not per metre).
| Name | Required | Description | Default |
|---|---|---|---|
| codes | No | ||
| group | No | ||
| points | No | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and reveals substantial behavior: the block-selection rule, per-physics default codes, result units (J, W, N, N m), the 'select moving part surrounded by air' caveat for stress-tensor forces, and the planar-length caveat that results are totals not per metre. It omits any mention of the session parameter or requirement that a solved problem exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scoping rule, then the code table. The code listing is long but each entry carries load-bearing meaning (units, selection caveats). Slightly dense but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param tool with no annotations and no output schema, the description supplies enough to call it correctly, including per-physics defaults and result semantics. The unexplained session parameter and the unstated dependency on a prior solve are the only notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: it defines group as a list of group numbers, points as the basis for block selection, and codes as the integration quantities with an explicit magnetics code table and defaults. Only the session parameter is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Integrate over blocks') and immediately explains block selection via points/group. It is distinguishable from siblings like femm_line_integral and femm_point_values by naming the underlying xo_blockintegral operation and the block-scoped selection model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides strong context on when to use each code (per-physics default code sets for magnetics/electrostatics/heatflow/currentflow) and how blocks are chosen (points vs group). It does not explicitly state when to prefer this over femm_line_integral or name exclusions, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_build_benchmarkA
Build a validated benchmark model from scratch (new magnetics document, saved to path,
default <work_dir>/.fem) and return its groups, circuits and analytic estimates:
'ccore' (planar U-core + armature, groups armature=1 core=2 coil=3, circuit 'coil'),
'coilgun' (axisymmetric coil + iron slug group 1), 'spm' (12-slot 4-pole surface PM machine,
params rotor_method='rotate'|'age', rotor groups [1,10] or AGE boundary 'AGE', circuits A/B/C),
'round_wire' (copper wire in an A=0 circle for AC sweeps). params are the builder keyword
arguments (e.g. {"gap": 0.5, "turns": 100}); see femm_agent.benchmarks.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| path | No | ||
| params | No | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and partially discharges it: it discloses that this creates and writes a new document, gives the default save location, and describes the return content (groups, circuits, analytic estimates). It does not say whether an existing file at `path` is overwritten, what permissions/session state are required, or how failures surface.
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 action and return value are front-loaded, followed by a dense but information-bearing per-kind enumeration. It is a long single block with no formatting aids and slight redundancy between the parenthetical save note and the path mention, but every clause carries real 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 four-parameter tool with no output schema and no annotations, the description is unusually complete: it covers the return shape, the default file destination, and the semantics of three of four parameters. The remaining gaps (session behavior, overwrite policy, error handling) keep it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: `kind` values are effectively enumerated with per-kind structure, `path` is explained including its default, and `params` is explained as builder kwargs with a concrete example. Only `session` (default 'main') is left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Build a validated benchmark model from scratch (new magnetics document...)') and enumerates the four supported kinds with their internal structure. It clearly distinguishes itself from generic document tools like femm_new_document by being a benchmark scaffolder that also returns groups, circuits and analytic estimates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer this is the entry point for a canned benchmark setup, and the kind list helps pick a model. However, there is no explicit when-to-use/when-not guidance and no named alternative (e.g. vs femm_new_document for a blank document or femm_experiment_* for running sweeps).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_callA
Call any FEMM 5 scripting command by name with positional args, e.g.
femm_call('mi_makeABC', [7, 50, 0, 0, 0]) or femm_call('mo_getgapb', ['AGE', 15]).
The call is checked against the command catalog first; warnings (wrong arity or types,
unknown name, pyFEMM-only helpers such as mo_getb that the engine lacks) are returned in
warnings, and the call is still sent unless the name is unknown to both the catalog and
the engine. Strings are quoted for you; complex values: [re, im] is NOT converted here,
pass a string expression via femm_eval instead. Use femm_api_search to find commands.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| command | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: it discloses catalog pre-validation, that warnings (arity/type mismatches, unknown names, pyFEMM-only helpers like mo_getb) are surfaced in `warnings`, and crucially that the call is still sent unless the name is unknown to both catalog and engine. Automatic string quoting and the non-conversion of complex values are also stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and an example, then the validation/warning semantics, then the femm_eval pointer. The two examples and the cross-reference to femm_api_search each earn their place; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic passthrough tool with no output schema and no annotations, it covers invocation, validation, and warning behavior well. It does not describe what a successful call returns beyond the `warnings` field, and omits the session parameter, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does well for `args` (positional, with two worked examples, plus quoting and complex-value rules) and `command` (a catalog command name). However, the `session` parameter (default 'main') is never mentioned, leaving one of three parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Call any FEMM 5 scripting command by name with positional args') and grounds it with two concrete call examples. An agent can distinguish it from siblings like femm_eval, femm_run_script, and femm_run_lua, which are different mechanisms rather than a single named command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context (raw command passthrough) and an explicit alternative with a condition: complex values should go through femm_eval instead, and femm_api_search is named for discovery. It stops short of stating when to prefer this over femm_run_script/femm_run_lua for multi-statement work, so it lacks full exclusion coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_check_ruleA
Run one pure physics rule on numbers you already have (no FEMM call). Call with rule='list' to see them. Examples: femm_check_rule("energy_consistency", {"energy": 0.0149, "flux_linkages": [0.0149], "currents": [2]}); femm_check_rule("power_balance", {"p_input": 1.2, "p_losses": 1.19}); femm_check_rule("force_consistency", {"f_a": -9.7, "f_b": -9.2, "tolerance": 0.1}). Returns {name, ok, value, expected, tolerance, message}.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| rule | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does well: it discloses that this performs no FEMM call (no session required, side-effect free) and gives the exact return shape {name, ok, value, expected, tolerance, message}. It omits error/failure behavior, but the compute-only nature is made explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then a discovery hint, then three compact illustrative examples and the return shape. Dense but every element earns its place; the examples add a little bulk over a minimal statement.
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 2-param offline compute tool with no output schema, the description supplies the return contract, the rule discovery mechanism, and concrete argument examples, leaving little an agent needs 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 coverage is 0% and the generic 'args' object is opaque, but the description compensates by naming the rule strings and showing the required args per rule (energy/flux_linkages/currents, p_input/p_losses, f_a/f_b/tolerance). This meaningfully fills the 0% coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Run one pure physics rule on numbers you already have') and immediately scopes it with 'no FEMM call', which cleanly distinguishes it from session-driven siblings like femm_solve or femm_point_values.
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?
Tells the agent when to use it (numbers you already have, offline check) and how to discover the rules via rule='list'. It doesn't name an alternative tool or state when NOT to use it, but the offline-vs-session framing is a clear usage cue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_circuit_resultsA
Magnetics: current (A), voltage drop (V) and flux linkage (Wb) of circuit name
(mo_getcircuitproperties), with derived inductance L = flux/current (for a circuit alone in
the model; mutual effects included), resistance (DC) or impedance V/I (AC).
Electrostatics/heat/current: conductor results (xo_getconductorproperties): voltage &
charge, temperature & heat flux, or voltage & current.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses returned quantities, units, derivation formulas, and the important caveat that inductance is valid for a circuit alone in the model with mutual effects included. It stops short of stating read-only status or session requirements, but is rich for a results-query 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 dense but organized by physics mode and front-loads the magnetics case. Technical parentheticals and function names add density, but every clause conveys useful result semantics rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must explain return values, which it does well across multiple physics modes. It still omits the session parameter and any call prerequisites, but is largely complete for a complex result-retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that `name` refers to the circuit or conductor name, but it completely omits the `session` parameter and its default behavior, leaving one of two parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (circuit/conductor results) with exact quantities returned, including current, voltage, flux linkage, and derived inductance/resistance/impedance. It distinguishes itself from generic field tools by scoping to circuit and conductor properties across magnetics, electrostatics, heat, and current modes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains which physics modes produce which result types, which implies when the tool applies. However, it does not name alternative result tools such as femm_point_values, femm_block_integral, or femm_line_integral, nor does it say when to prefer this tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_clear_selectedC
Deselect everything in the pre-processor.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does not state that this is non-destructive (i.e., clears selection without deleting geometry, unlike femm_delete_selected), nor whether the operation affects the active document/session or how it behaves if nothing is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no wasted words. It is arguably too terse for the value it could add, but structurally clean.
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, low-risk selection-clearing tool with no output schema and one optional defaulted parameter, the description is nearly adequate. However, it omits the non-destructive distinction and any mention of the session parameter, leaving small gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and one parameter ('session', default 'main'), which the description never mentions. Since the parameter is optional with a default, the omission is not fatal, but the description adds no meaning beyond the bare 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?
States a specific verb ('Deselect') and object ('everything in the pre-processor'), clearly the inverse of the sibling femm_select and distinct from femm_delete_selected. It does not explicitly name those siblings, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus femm_select or why one would clear a selection before another operation. 'In the pre-processor' hints at context but states no prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_close_documentA
Close the current pre-processor document and its post-processor (if any). The engine keeps running; call femm_new_document or femm_open next.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two useful behavioral facts: both pre- and post-processor documents are closed, and the engine/session survives. However, it does not say whether unsaved changes are discarded or whether the call errors when nothing is open, which matters for a destructive close.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste. The scope of the close is front-loaded, and the sequencing note follows immediately; 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 simple one-parameter tool with no output schema and no annotations, the description covers what is closed and what to do next, which is most of what an agent needs. It is still incomplete on the session parameter and on the fate of unsaved work, the two gaps most likely to cause a wrong invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions the 'session' parameter at all. The highest-value information here — that closing applies to a named session defaulting to 'main' — is left entirely to the raw schema, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: closing the 'current pre-processor document and its post-processor (if any)'. It implicitly distinguishes itself from femm_session_close by noting 'the engine keeps running', making the scope of the close operation unambiguous. It stops just short of naming the sibling it differs from explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear forward guidance: 'call femm_new_document or femm_open next', naming both alternatives for the follow-up step. There is no explicit when-not condition (e.g. unsaved-changes behavior), but the sequencing context is unusually concrete for a close tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_compare_resultsA
A/B comparison of two experiment results (paths to the experiment .json files, or JSON
text): every numeric summary value and every common numeric column (rows matched on the first
column, e.g. angle). Use it to compare mesh refinements, the rotate vs air-gap-element
methods, or two designs. Differences beyond rtol are flagged.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| rtol | No | ||
| label_a | No | A | |
| label_b | No | B |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose useful traits: rows are matched on the first column, and differences beyond `rtol` are flagged. However, it says nothing about side effects, session/auth requirements, or what the comparison returns, leaving real gaps relative to a no-annotation baseline.
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, front-loaded with the core action, then matching semantics, then usage examples. Some density in the parenthetical '(rows matched on the first column, e.g. angle)', but every clause carries information and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should ideally convey the shape of the comparison result; it only notes that out-of-tolerance differences are flagged. Combined with two undescribed params, it is adequate for calling the tool but incomplete about what comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does well for the three substantive params: `a`/`b` are explained as paths to experiment .json files or raw JSON text, and `rtol` is explained as the difference tolerance. `label_a`/`label_b` are not described, but they are self-evident labels with defaults, making this a strong compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (A/B comparison) and resource (two experiment results), and goes further to specify exactly what is compared: every numeric summary value and every common numeric column. No sibling tool overlaps this function, so an agent can identify it unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: 'to compare mesh refinements, the rotate vs air-gap-element methods, or two designs.' This is clear context, but it does not name a competing tool or state when-not to use it (e.g., comparing a single result or non-experiment data).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_copy_selectedA
Copy the selection copies times, each shifted by a further (dx, dy) or rotated by a
further rotate_deg about about (default origin). Typical: one slot drawn, then
femm_select(kind='group') + femm_copy_selected(rotate_deg=360/Q, copies=Q-1, entities='group').
| Name | Required | Description | Default |
|---|---|---|---|
| dx | No | ||
| dy | No | ||
| about | No | ||
| copies | No | ||
| session | No | main | |
| entities | No | ||
| rotate_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses that offsets are cumulative ('a further' shift/rotation) and that rotation is about `about` (default origin), but it says nothing about permissions, whether the original selection is preserved or altered, or whether new entities become the active selection.
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 operation and followed by a compact worked example. No filler, though the example is dense with inline code that could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-annotation, no-output-schema tool this is close to adequate: the geometry parameters and a canonical workflow are covered. Gaps remain around `session` and the fate of the original selection, but the essential calling information 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?
Schema description coverage is 0%, so the description must compensate, and it does for the geometric core: copies, dx, dy, rotate_deg, about, and entities are all given meaning (including cumulative semantics and the default origin). The `session` parameter is left entirely unaddressed, preventing a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (copy) and resource (the selection), and clarifies that copies are cumulative ('each shifted by a further (dx, dy)'). This distinguishes it cleanly from femm_move_selected, femm_mirror_selected, and femm_scale_selected in the sibling 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?
Provides a concrete workflow: draw one slot, then femm_select(kind='group') followed by femm_copy_selected(rotate_deg=360/Q, copies=Q-1, entities='group'). This tells the agent the prerequisite (a selection / group) and the intended pattern, though it never states when *not* to use it or contrasts it with mirror/scale alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_create_meshA
Mesh the model without solving (xi_createmesh) to check that meshing succeeds. FEMM requires a saved file, so the model is saved first. FEMM 5 returns no element count from createmesh; the count is reported by femm_solve (fast: a 10k-element static solve takes well under a second). Meshing errors usually mean open regions or overlapping lines.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the hidden side effect that the model is saved first, that no element count is returned by FEMM 5, and how to interpret meshing errors (open regions, overlapping lines). It omits what the tool actually returns on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope in the first clause; the parenthetical about solve timing is mild padding but the rest earns its place. No redundant restatement of the name.
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 no-annotation, no-output-schema, one-param tool, the description covers the important behavioral traits (implicit save, no return count, error interpretation). It is only short on session semantics and what a successful call actually returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'session' parameter has 0% schema description coverage, and the description never mentions sessions or how to target a non-default one. The description adds no meaning beyond the bare schema property name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Mesh the model') and pins the scope precisely with 'without solving', naming the underlying API call (xi_createmesh) and the goal ('check that meshing succeeds'). This clearly separates it from femm_solve and femm_smartmesh in the sibling 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?
Explains the use case (verify meshing succeeds before/instead of solving) and implicitly routes the agent to femm_solve when element counts or results are actually wanted. It doesn't state exclusions as explicitly as 'use X instead' but the when-to-use context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_delete_selectedB
Delete the current selection. kind: all | nodes | segments | arcs | labels (deleting nodes also deletes segments/arcs attached to them).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | all | |
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses one non-obvious destructive side effect (deleting nodes cascades to attached segments/arcs), but says nothing about reversibility/undo, permissions, or how 'session' affects scope. One good disclosure against several unstated traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and followed by the parameter vocabulary. Every clause earns its place; the parenthetical caveat is well placed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, an agent still lacks reversibility, prerequisite, and 'session' scoping information. The cascade note partially covers the risk profile but leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does document the accepted values for 'kind' (all | nodes | segments | arcs | labels) plus the node-cascade behavior, which is real added value; however 'session' is left entirely unexplained and there is no enum in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (the current selection), which is distinct from siblings like femm_clear_selected (deselection) and femm_move_selected/copy_selected. It does not explicitly contrast itself with those siblings, but the verb+object 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?
Implies a selection must exist first ('the current selection'), but never states when to prefer this over femm_clear_selected or other selection operations, nor any prerequisites (e.g., an open document/session). Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_draw_circleA
Full circle of radius r around (cx, cy) as four 90-degree arcs (nodes at 0/90/180/270 deg). maxseg = arc discretisation in degrees. For a half circle in axi models, use femm_add_arcs.
| Name | Required | Description | Default |
|---|---|---|---|
| r | Yes | ||
| cx | Yes | ||
| cy | Yes | ||
| maxseg | No | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the internal decomposition (four 90-degree arcs, node placement at cardinal angles), which is real behavioral context. However it says nothing about permissions, undo/reversibility, selection state effects, or how the result interacts with existing geometry — notable gaps for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core construction detail front-loaded and the alternative routing last. Dense but every sentence earns its place; the parenthetical node angles are arguably more than needed but genuinely informative.
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 geometry-drawing tool with no output schema and no annotations, the definition supplies the essentials: what is created, how it is discretised, and when to prefer a sibling. The single unexplained 'session' parameter is a minor residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: r is the radius, cx/cy the centre, and maxseg is defined as 'arc discretisation in degrees'. Only the session parameter (default 'main') is left undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (draw) plus resource (circle) with precise construction semantics: 'Full circle of radius r around (cx, cy) as four 90-degree arcs (nodes at 0/90/180/270 deg).' It distinguishes itself from the sibling femm_add_arcs, so an agent can choose correctly without opening 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?
Gives an explicit alternative with its condition: 'For a half circle in axi models, use femm_add_arcs.' That is clear routing, though it covers only one exclusion and says nothing about when a circle should be drawn vs a rectangle or polygon approximation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_draw_polygonB
Polygon through [[x, y], ...]: nodes + segments, closed back to the first point by default. Returns the vertex centroid (a block-label candidate only if the polygon is convex).
| Name | Required | Description | Default |
|---|---|---|---|
| closed | No | ||
| points | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses genuinely useful behavior beyond the schema: that nodes and segments are created, closure is applied by default, and the return is the vertex centroid with a convexity caveat for block labels. It omits session/permission context and whether existing geometry is affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the most important detail (the points structure) and no filler. Slightly dense with the parenthetical caveat but nothing wasteful.
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 three-parameter drawing tool with no output schema and no annotations, the description covers the input format, default closure, and return value, which is adequate. It still leaves session handling and any side effects on existing document geometry unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It usefully explains the points format ([[x, y], ...]) and ties 'closed back to the first point by default' to the closed parameter, but leaves the session parameter entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (draw) and resource (polygon) plus the concrete effect of creating nodes + segments. It distinguishes itself from femm_draw_rectangle/circle by being point-driven, but never explicitly contrasts with femm_draw_polyline or femm_add_segments, so sibling differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus the many alternatives (femm_draw_polyline, femm_draw_rectangle, femm_add_nodes/add_segments). The only usable cue is the implicit 'closed by default' behavior, which is not framed as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_draw_polylineB
Open chain of segments through [[x, y], ...] (not closed). Same as femm_draw_polygon(closed=False).
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond shape. It does not say whether the geometry is committed immediately, whether it replaces or appends to existing document content, what session scoping does, or whether the operation is reversible. For a document-mutating geometry call with zero annotation coverage this is a real 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?
Two short sentences, front-loaded with the shape definition, with zero filler. '(not closed)' is mildly redundant with 'open chain of segments', a tiny bit of duplication that keeps it just short of perfect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations mean the description must stand alone, yet it omits the session parameter entirely, says nothing about return values, and gives no constraints such as minimum points or units. For a geometry-creating tool in a large CAD-style toolset, this leaves the agent under-informed about correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add meaning for 'points' by showing the [[x, y], ...] nesting, clarifying that items are coordinate pairs in a specific order that the untyped nested arrays do not convey. But the 'session' parameter is documented nowhere, and no coordinate units, ranges, or minimum-point-count constraints are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (draw) and resource (polyline, defined inline as an 'open chain of segments'), and explicitly distinguishes it from the sibling femm_draw_polygon by noting it is the non-closed case. An agent can tell it apart from femm_polygon and femm_add_segments without opening a 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 equivalence note 'Same as femm_draw_polygon(closed=False)' implicitly tells the agent these two are interchangeable, which is useful routing information. However, there is no explicit guidance on when to prefer a polyline over separate segments (femm_add_segments) or when drawing vs. adding geometry, so usage stays implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_draw_rectangleA
Axis-aligned rectangle with opposite corners (x1,y1), (x2,y2): 4 nodes + 4 segments. Add a block label inside it afterwards (femm_add_block_label).
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | ||
| x2 | Yes | ||
| y1 | Yes | ||
| y2 | Yes | ||
| session | No | main |
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, but it does disclose a meaningful side effect: the tool creates exactly 4 nodes and 4 segments. It omits units, whether an open document/session is required, and what happens with degenerate coordinates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the geometry definition front-loaded and the follow-up action second. Nothing is redundant.
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 5-parameter drawing tool with no output schema and no annotations, the description covers geometry, side effects, and the next workflow step. It could still note coordinate units and session/document prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that (x1,y1) and (x2,y2) are opposite corners, which the bare titles X1/X2/Y1/Y2 do not convey, but it never mentions the optional 'session' parameter (default 'main').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Axis-aligned rectangle with opposite corners (x1,y1), (x2,y2)') and adds the resulting geometry ('4 nodes + 4 segments'), which distinguishes it from siblings like femm_draw_polygon or femm_draw_polyline that could also enclose a rectangle. It stops short of explicitly naming which sibling to use 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 second sentence gives a real workflow cue: add a block label inside it afterwards via femm_add_block_label. However, there is no when-not guidance and no contrast against the other draw_* tools, so usage is implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_estimateA
Analytic sanity references in SI units (m, A, T, H, N, N*m). Call with no name to list the formulas and their arguments. Examples: femm_estimate("ccore_gap_b", {"turns": 200, "current": 2, "gap": 0.002, "iron_path": 0.18, "mu_r": 2000}); femm_estimate("dq_torque", {"pole_pairs": 2, "psi_d": 0.05, "psi_q": 0, "i_d": 0, "i_q": 10}); femm_estimate("skin_depth", {"freq": 1000, "sigma": 58e6}). Others: solenoid / loop / thick- solenoid fields, inductances, Maxwell force B^2 A/2mu0, Carter coefficient, PM load line, SPM gap flux and flux linkage, cogging period, capacitances, resistance, round-wire AC impedance. Compare FEMM results to these within the idealisation error (fringing, leakage, saturation).
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does reasonably well: it declares the calling convention (no name lists formulas), the unit system, and the idealisation-error caveat. It stops short of describing validation/error behavior for unknown formula names, but for a pure read-only computation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with units and the no-name behavior, followed by concrete examples, with no filler sentences. It is dense but each clause adds either a formula name, an argument key, or a usage caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterised estimator with no output schema and 0% schema description coverage, the description supplies the formula inventory, argument examples, and the self-documenting no-name mode. The main residual gap is that per-formula argument semantics must be discovered by an extra call, but the tool provides that path explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: three fully worked call examples show the exact shape of the args object and its keys (turns, current, gap, mu_r, pole_pairs, psi_d, etc.), and the formula list enumerates valid name values. It does not document every argument of every formula, but it points to the no-name listing mode for the full set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: evaluate analytic reference formulas in SI units to sanity-check FEMM results. The concrete examples (ccore_gap_b, dq_torque, skin_depth) and the formula list make the tool's function unmistakable and distinguish it from solver/measurement siblings like femm_solve and femm_point_values.
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 frames the use case ('Compare FEMM results to these within the idealisation error') and explains the no-name listing mode, giving clear when-to-use context. It does not name alternative siblings to prefer for other tasks, but for this standalone estimator the guidance is solid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_evalA
Evaluate ONE LINE of MicroPython inside FEMM and return its value (tab-separated reply parsed to numbers/lists). Statements return null; expressions return their value. A newline is rejected: for multi-line code use femm_run_script. Examples: 'mo_getpointvalues(0,0)[1]', 'mi_getboundingbox()', '[mo_getgapb("AGE",a)[0] for a in range(0,90,10)]'. Variables persist between calls in the same session.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | main | |
| expression | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden and does well: it discloses the return convention ('tab-separated reply parsed to numbers/lists'), that statements yield null while expressions yield values, the one-line constraint, and that variables persist per session. Missing only error/failure behavior and any auth or side-effect notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then constraints, then concrete examples. Every sentence carries information; the worked examples ('mo_getpointvalues(0,0)[1]') are genuinely useful rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers return shape, statement-vs-expression semantics, and the session persistence model, so an agent can call it correctly. The main residual gap is the 'session' parameter's semantics, which neither schema nor description explains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The description implicitly clarifies 'expression' (one line, newline rejected) but never explains the 'session' parameter, its meaning, its default, or how sessions relate across calls beyond 'variables persist between calls in the same session.' Partial compensation for a real coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Evaluate ONE LINE of MicroPython inside FEMM and return its value.' It distinguishes itself from siblings both by language ('MicroPython' vs the Lua sibling) and by naming femm_run_script as the multi-line alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-not guidance: 'A newline is rejected: for multi-line code use femm_run_script.' This routes the agent cleanly. It does not, however, address the other plausible alternatives (femm_call, femm_run_lua, femm_api_get), so the routing picture is not fully closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_examples_listA
Example models and scripts shipped with FEMM 5 (examples/ and pyfemm/examples/): name,
path, size, and for models the header (problem type, units, frequency, depth). Filter by
substring query and/or extension ('.fem', '.py', '.lua', ...). Open one with femm_open.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| extension | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full burden and does disclose the shape of results: name, path, size, and a header containing problem type, units, frequency, depth for models. It's implicitly a safe read operation. It doesn't state ordering or result-count behavior, but the behavioral profile is otherwise clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads what is listed and what comes back, the second covers filtering and the next action. No filler, no repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter listing tool with no output schema, the description covers inputs, return fields, and the follow-up call. Minor omissions (ordering, whether an empty query returns everything) are not enough to prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: `query` is defined as a substring filter and `extension` is illustrated with concrete values ('.fem', '.py', '.lua', ...), which is exactly what the bare schema lacks. It stops short of stating case-sensitivity or whether filters combine as AND, but the semantics are usable.
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 the specific resource (example models and scripts shipped with FEMM 5, in examples/ and pyfemm/examples/) and enumerates the returned fields (name, path, size, header details for models). An agent can immediately tell this is a read-only enumeration of bundled sample content, distinct from document/file tools like femm_file_summary or femm_open.
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 concrete filtering guidance ('Filter by substring query and/or extension') and routes the agent onward with 'Open one with femm_open.' There are no explicit exclusions or when-not conditions, but the intended workflow (list, then open) is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_experiment_ac_sweepA
Time-harmonic frequency sweep (Hz): per frequency, circuit phasors (peak amplitudes) ->
Z = V/I, R(f), L(f) = Im Z / omega, and losses (total / resistive / hysteresis) over all blocks.
Check: 1/2 Re(V conj I) equals total losses. Other probdef settings are kept and the original
frequency restored. current overrides every swept circuit's current. Conductors must have
conductivity and the mesh must resolve the skin depth (femm_estimate skin_depth).
| Name | Required | Description | Default |
|---|---|---|---|
| current | No | ||
| session | No | main | |
| circuits | No | ||
| frequencies | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, and it does disclose real side-effect semantics: other probdef settings are kept and the original frequency is restored after the sweep, and `current` overrides every swept circuit's current. It omits runtime/cost expectations for a multi-frequency solve, but the state-restoration disclosure is genuinely useful context beyond a bare read/write 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?
Front-loaded with the core purpose and formula-level output description, then prerequisites. Dense but efficient; the arrow notation is terse rather than wasteful, though the invariant-check sentence could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, and the description supplies the return contents (Z, R, L, losses) plus a verification invariant, preconditions, and state-restoration behavior. Missing `session` semantics keeps it short of fully complete for a 4-parameter experiment tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does explain `current` (overrides all swept circuits' current) and implies `circuits`/`frequencies` behavior via 'swept circuit', but `session` is never mentioned and `frequencies`/`circuits` syntax and defaults are left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation (time-harmonic frequency sweep in Hz) and enumerates exactly what it computes (Z = V/I, R(f), L(f), and total/resistive/hysteresis losses across blocks). This clearly separates it from sibling experiment tools like femm_experiment_inductance or femm_experiment_backemf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states concrete preconditions — conductors must have conductivity and the mesh must resolve the skin depth, pointing at femm_estimate skin_depth — which tells the agent when the tool can be called. It does not explicitly contrast itself with the other femm_experiment_* siblings, so routing is only partly addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_experiment_backemfB
Open-circuit back-EMF: flux linkage of each circuit (default all) over one electrical period
(360/pole_pairs mech deg, steps samples), EMF = omega * dpsi/dtheta (spectral derivative),
fundamental / THD / harmonics / line-line EMF / Ke. Currents are zeroed and restored.
psi_estimate (Wb, peak) adds an analytic comparison (femm_estimate spm_flux_linkage_fundamental).
| Name | Required | Description | Default |
|---|---|---|---|
| rpm | No | ||
| steps | No | ||
| center | No | ||
| method | No | rotate | |
| session | No | main | |
| circuits | No | ||
| pole_pairs | Yes | ||
| gap_boundary | No | ||
| psi_estimate | No | ||
| rotate_groups | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a real side effect ('Currents are zeroed and restored') plus the spectral-derivative method. However it omits key behavioral facts for a solver experiment: whether an FEMM solve is required per step, expected runtime/cost, and any state preconditions.
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?
It is a single dense paragraph but front-loads the purpose (open-circuit back-EMF) before the mechanics. Every clause carries information (formula, derived outputs, side effect, optional comparison), with little filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter experiment tool with no annotations, no output schema, and 0% schema description coverage, the description is only partially sufficient. It documents the computation and outputs but leaves the required rotate_groups and several parameters unexplained, which an agent needs 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 coverage is 0% across 10 parameters, so the description must compensate and only partially does: it clarifies circuits (default all), steps (sample count), pole_pairs (period formula), and psi_estimate (analytic comparison). The required rotate_groups is never explained, and rpm, center, method, session, and gap_boundary are entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource: computing open-circuit back-EMF from flux linkage of each circuit over one electrical period. It is technically precise and clearly distinct in subject from the other experiment siblings (cogging, inductance, ac_sweep), though it does not explicitly name how it differs from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named. The only usage hint is that supplying psi_estimate triggers an analytic comparison; nothing tells the agent when this experiment is the right choice versus other experiment tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_experiment_bh_checkA
Permanent-magnet operating points: solves, then per magnet block label the mean and minimum flux density along its magnetisation direction (B_m), H_m, permeance coefficient Pc and B_m/Br. Flags demagnetisation risk when min B_m < min_fraction * Br. Labels with a magdir formula are skipped.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | main | |
| min_fraction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that it runs a solve (mutating solution state), that it flags demagnetisation risk via the min B_m < min_fraction * Br condition, and that magdir-formula labels are skipped. It omits session scoping and error behavior, but the key behavioral traits are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three information-dense sentences, front-loaded with the resource and outputs. No filler words; the skip rule is placed last where it belongs. Slightly jargon-heavy (Pc, B_m/Br) but each 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?
With no output schema and no annotations, the description usefully enumerates what is returned per magnet block (mean/min B_m, H_m, Pc, B_m/Br) and the demagnetisation flag. It is nearly complete, lacking only session semantics and any note on failure when no magnet labels or solution exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains min_fraction precisely through the flagging inequality (min B_m < min_fraction * Br), which is meaningful. The 'session' parameter is left entirely undocumented, so half the parameters remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and resource: it solves, then per magnet block label reports B_m, H_m, permeance coefficient Pc, and B_m/Br, plus demagnetisation flagging. This is highly specific and clearly distinguishable from sibling analysis tools like femm_block_integral or other experiments.
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?
Implied usage is clear from 'Permanent-magnet operating points', and the note that it solves first signals the precondition. However, there is no explicit when-to-use/when-not guidance or named alternative (e.g., versus femm_block_integral or another experiment), leaving the agent to infer the selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_experiment_coggingA
Cogging torque: all circuit currents set to 0, torque over periods cogging periods
(360/lcm(slots, poles) mech deg, steps samples incl. end point) and its harmonics.
poles is the number of poles (2p). Same rotor options as femm_experiment_torque_vs_angle.
Checks: zero mean, periodic end points, WST vs virtual work. Currents are restored.
| Name | Required | Description | Default |
|---|---|---|---|
| poles | Yes | ||
| slots | Yes | ||
| steps | No | ||
| center | No | ||
| method | No | rotate | |
| periods | No | ||
| session | No | main | |
| gap_boundary | No | ||
| rotate_groups | Yes | ||
| torque_groups | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the side effect that all circuit currents are zeroed and then restored, and lists self-checks (zero mean, periodic end points, WST vs virtual work). It omits return format, session requirements, and runtime/cost expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, with the core operation stated first and details following. Every clause carries technical content, though the heavy parenthetical and backtick notation makes it terse for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter simulation experiment with no annotations and no output schema, the description gives useful domain context but leaves key gaps: required rotate_groups/slots semantics, session handling, and what the tool returns are all unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 10 parameters, so the description must compensate and only partially does: it defines periods, steps (samples incl. end point), and poles (2p). Required parameters slots and rotate_groups, plus method, center, session, gap_boundary, and torque_groups, remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific physical quantity computed (cogging torque with all circuit currents forced to 0) over a defined sweep, which is a clear verb+resource. It also distinguishes itself from femm_experiment_torque_vs_angle by noting the shared rotor options, implying a different measurement mode, though it never says so outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this tool is for cogging torque specifically while torque_vs_angle is for driven torque, but the description only references the sibling to borrow parameter semantics, not to route the agent. No explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_experiment_force_vs_positionA
Force vs position: move the parts in groups by (dx, dy) PROBLEM UNITS per step, re-solve,
and record the weighted-stress-tensor force on force_groups (default groups), the total
coenergy and every circuit's flux linkage. Health check: WST force vs virtual work dW'/ds.
Use for actuators, plungers, coilguns (axisymmetric: dy moves along z). The moving parts must be surrounded by air and carry their own group number (femm_set_group). Geometry is moved back at the end and the model is left solved at the start position. Example: femm_experiment_force_vs_position(groups=[1], dy=0.25, steps=9). Returns rows [position, Fx, Fy, F_along_motion, F_virtual_work, coenergy, psi_*] and csv/json/png paths.
| Name | Required | Description | Default |
|---|---|---|---|
| dx | No | ||
| dy | No | ||
| steps | No | ||
| groups | Yes | ||
| session | No | main | |
| force_groups | No | ||
| start_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations absent, the description carries the entire behavioral burden and does so well: it discloses side effects (geometry is moved back at the end, model left solved at the start position), the default for force_groups, a built-in correctness check (WST force vs virtual work dW'/ds), and the returned row layout plus csv/json/png artifact paths.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core semantics and organized into purpose, applicability, prerequisites, example, and return shape. Dense but virtually every sentence adds information; the example and the return-row enumeration are the only slightly expensive parts.
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 multi-parameter experiment tool with no output schema, the description supplies the sweep semantics, prerequisite setup, side-effect behavior, a worked example, and the exact return columns/artifacts. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must define parameters, and it covers the important ones: groups, dx/dy as per-step problem-unit displacement, steps (implied by the 9-step example), and the force_groups default. Only `session` and `start_offset` go unexplained, which is a minor gap given how much else is specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: sweep the parts in `groups` by (dx, dy) per step, re-solve, and record WST force, coenergy, and flux linkage. This is clearly distinguishable from sibling experiment tools such as femm_experiment_torque_vs_angle or femm_experiment_cogging without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete application context ('actuators, plungers, coilguns') and hard prerequisites (moving parts must be surrounded by air and carry their own group number via femm_set_group; axisymmetric dy moves along z). It does not explicitly name which sibling experiment tool to prefer when the sweep axis differs, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_experiment_inductanceB
Inductance from flux linkage. Default: self/mutual matrix L_jk = (psi_j(I_k=current) - psi_j(0)) / current
for circuits (default all) - subtracting the zero-current solve removes magnet flux. Linear
models get an energy check (W = 1/2 L I^2).
dq mode: dq = {"circuits": ["A","B","C"], "pole_pairs": p, "theta0_deg": 0, "id": 5, "iq": 5}
at the present rotor position (theta0 = electrical angle of the d-axis from phase A) gives
psi_pm, Ld, Lq, saliency and the dq torque, checked against the FEM torque on torque_groups
(WST) or gap_boundary (air-gap element).
| Name | Required | Description | Default |
|---|---|---|---|
| dq | No | ||
| current | No | ||
| session | No | main | |
| circuits | No | ||
| gap_boundary | No | ||
| torque_groups | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses real behavior: the zero-current subtraction, the energy check W = 1/2 L I^2 for linear models, the dq-mode cross-check against FEM torque. But it omits whether the tool mutates state, whether a solve is required beforehand, what happens if circuit names are invalid, or what the return looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is reasonably compact and the default mode is front-loaded, but the dq sentence is dense and underspecified, dropping a formula fragment ('psi_pm, Ld, Lq, saliency and the dq torque') without clear structure. The two modes are not visually separated, making it harder to parse than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter physics experiment tool with no annotations and no output schema, the description covers the core computation and the dq mode but leaves key operational details missing: required session context, precondition of an existing solution, error behavior, and the meaning of output quantities. It is adequate but not complete enough to call confidently without reading the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 6 parameters, so the schema provides only names and types. The description explains the dq nested-object structure with an example (circuits, pole_pairs, theta0_deg, id, iq) and touches on circuits and torque_groups/gap_boundary, but it never explains current, session, or the units/meaning of the free-form dq keys, leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: computing inductance from flux linkage, with the exact formula. It reads as a physics computation tool distinct from siblings like femm_circuit_results, though it never explicitly names a sibling to differentiate from.
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 through mode descriptions (default self/mutual matrix vs dq mode) and prerequisites like 'subtracting the zero-current solve' and needing torque_groups/gap_boundary for the check. But it never says when to choose this over femm_circuit_results, femm_experiment_ac_sweep, or other result tools, and gives no exclusions or preconditions like 'solution must exist'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_experiment_parametricA
Generic parametric study. Every case re-opens the same saved base model, applies its setup, solves and collects outputs. case: {"name": "Hc=900k", "params": {"hc": 9e5}, "commands": [{"command": "mi_modifymaterial", "args": ["N42", 3, 9e5]}]} (preprocessor commands only: mi_/ei_/hi_/ci_). template: optional multi-line MicroPython run inside FEMM per case, formatted with params, e.g. "mi_selectgroup(1)\nmi_movetranslate({dx}, 0)". outputs: {"name", "kind": "point", "x", "y", "quantity": "B|Bx|By|A|H|mu|J"} | {"kind": "block", "code": 22, "groups": [1]} | {"kind": "circuit", "circuit": "A", "quantity": "flux|current|voltage|L|R"} | {"kind": "gap", "boundary": "AGE", "code": 0} | {"kind": "line", "points": [[x,y],...], "code": 3} | {"kind": "expr", "expression": "..."}.
| Name | Required | Description | Default |
|---|---|---|---|
| cases | Yes | ||
| outputs | Yes | ||
| session | No | main | |
| template | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does well: it discloses that every case re-opens the same saved base model (so cases are independent, no state carryover), runs its commands, solves, and collects outputs, and it restricts case commands to preprocessor prefixes mi_/ei_/hi_/ci_. No disclosure of failure modes, runtime cost, or concurrency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in one sentence, then gives dense, example-driven detail for cases/template/outputs. Every clause carries information given the empty schema, though the output-kind enumeration is run together and could be formatted more readably.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-parameter sweep tool with no annotations, no output schema, and 0% schema description coverage, the description covers cases, template, and output kinds well but leaves the 'session' parameter and the identity/loading of the 'saved base model' unexplained, which an agent needs 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 coverage is 0% and the nested cases/outputs are untyped objects, so the description must compensate — and it does, documenting case keys (name/params/commands), the template placeholders like {dx}, and the six output kinds with their fields. The 'session' parameter is never explained, keeping this below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Generic parametric study') and describes the per-case flow: re-open base model, apply setup, solve, collect outputs. The word 'Generic' implicitly separates it from the specialized siblings (femm_experiment_cogging, _backemf, _inductance), but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Generic parametric study' versus the named specialized experiment tools, and 'preprocessor commands only: mi_/ei_/hi_/ci_' scopes what a case may contain. However there is no explicit statement of when to prefer this over femm_experiment_force_vs_position or the other experiment_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_experiment_torque_vs_angleA
Rotor torque vs mechanical angle (degrees, end point included).
method='rotate': rotates rotate_groups about center (default [0, 0]) each step and re-meshes;
torque = WST block integral on torque_groups (default rotate_groups; exclude a rotor-side air
layer from torque_groups). Needs an air layer split by a circle in the gap so the rotor can turn.
method='age': the model has a FEMM 5 'Periodic Air Gap' boundary (BdryFormat 6) named
gap_boundary; its inner angle is stepped and torque = mo_gapintegral (mesh never changes).
drive = {"circuits": ["A","B","C"], "pole_pairs": p, "id": 0, "iq": 10, "theta0_deg": 0}
makes the phase currents follow the rotor (amplitude-invariant dq; theta_e = p*angle + theta0)
and adds a mean-torque check against 3/2 p (psi_d iq - psi_q id).
| Name | Required | Description | Default |
|---|---|---|---|
| stop | No | ||
| drive | No | ||
| start | No | ||
| steps | No | ||
| angles | No | ||
| center | No | ||
| method | No | rotate | |
| session | No | main | |
| gap_boundary | No | ||
| rotate_groups | Yes | ||
| torque_groups | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the torque extraction mechanism per method (WST block integral vs mo_gapintegral), that re-meshing occurs in 'rotate' but not 'age', the required air layer/boundary topology, and the drive model with its mean-torque sanity check. It omits whether model geometry is restored after rotation, session-scoped effects, and cost/performance behavior, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first line and every subsequent clause carries real technical payload with no filler. It is dense and unbulleted, mixing method mechanics and the drive dict into long sentences, which slightly hurts scannability for an 11-parameter tool.
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, 11-parameter experiment with no annotations and no output schema, the description covers inputs and physics but says nothing about what it returns (torque series, angles, mean-torque check results) or how results are surfaced. That is a meaningful gap when no output schema exists to fill it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 11 params, so the description must compensate, and it does for the non-obvious ones: method, rotate_groups, center (default [0,0]), torque_groups (defaults to rotate_groups plus exclusion advice), gap_boundary, and drive (with a full example dict and theta_e formula). start/stop/steps/angles/session are left unaddressed, though 'end point included' partially documents the angle range.
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 line states a precise verb+resource: computes rotor torque versus mechanical angle. It is self-evidently distinct from the other femm_experiment_* siblings (cogging, backemf, inductance), but it never names or routes against them, so it stops short of explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives conditional prerequisites that imply method selection ('rotate' needs an air layer split by a circle in the gap; 'age' needs a Periodic Air Gap boundary named gap_boundary), and warns to exclude a rotor-side air layer from torque_groups. However it never states when to prefer one method over the other, nor when to use this experiment instead of the sibling experiment tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_export_dxfC
Write the current geometry to a DXF file (xi_savedxf).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose that this writes the *current* geometry (not selected entities) to a file on disk, which is useful. But it says nothing about overwriting an existing file, failure behavior, or session/permission requirements for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action front-loaded and zero filler. It is appropriately sized for what it chooses to convey, even though it omits detail elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-writing tool with no annotations, no output schema, and two undocumented parameters, this description is too thin. It omits path semantics (relative vs absolute), overwrite behavior, and session handling — all of which an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does not. The destination file implied by 'to a DXF file' loosely maps to the required 'path', but the 'session' parameter (default 'main') is never mentioned or explained, so an agent cannot tell whether it matters here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: writes the current geometry to a DXF file. This clearly separates it from femm_import_dxf (opposite direction) and from femm_save (native format), even though it names no sibling explicitly. The parenthetical 'xi_savedxf' is internal jargon rather than added clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to export to DXF versus using femm_save, femm_save_bitmap, or femm_export_pyfemm_script. No prerequisites (open document, active session) are stated. The only hint is the reference to the underlying 'xi_savedxf' call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_export_pyfemm_scriptB
Write the session journal as a standalone pyFEMM script (import femm; femm.openfemm(1); femm.mi_...(); femm.closefemm()) so the user can re-run the whole model without the agent. Default path: <work_dir>/scripts/_pyfemm.py. femm_eval expressions that are not plain calls are kept as comments.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| session | No | main | |
| headless | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses a lossy transformation ('femm_eval expressions that are not plain calls are kept as comments') and the default output location, which is real value beyond the schema. It does not state overwrite behavior for an existing file at the default path, error conditions, or what the generated script omits (e.g. measured results), which are the risks an agent needs to know about a file-writing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then the default path, then the edge case. The inline pyFEMM snippet is dense but earns its place by showing the emitted form. Little waste overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, no-annotation, no-output-schema tool with 0% schema coverage, the description is minimally adequate: it explains the artifact and the default destination but omits headless semantics, overwrite behavior, and any hint of the return/confirmation shape. An agent could call it correctly but not predict its side effects fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It partly does: the default path template '<work_dir>/scripts/<session>_pyfemm.py' explains the role of both path and session. However, the 'headless' parameter is never mentioned, and it is the least self-explanatory of the three for an export tool, so roughly a third of the parameters remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and artifact: write the session journal as a standalone pyFEMM script with a sample of the emitted code. That is unambiguous and clearly distinct from femm_export_dxf or the generic femm_run_script/femm_run_lua, but no sibling is named, so differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose clause 'so the user can re-run the whole model without the agent' implies the use case (handing a reproducible model to a user), but there is no explicit when-to-use statement, no exclusion, and no comparison against siblings such as femm_journal, femm_run_script, or femm_save that an agent might otherwise choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_factsB
Verified FEMM 5 behaviour collected by this project (docs/femm5-facts.md): command
quirks, units, what works headless, renamed materials. query returns only the sections
that mention it. Read this before trusting FEMM 4.2 habits.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the filtering behaviour of `query` (returns only sections that mention it) and names the backing file, but says nothing about what a null query returns, output format, or any auth/rate constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the resource identity, then the query behaviour, then the actionable advice. Three compact sentences with no filler; structure is sound.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, with an undocumented parameter. The description covers what the tool is and how query filters, but omits the unfiltered-query behaviour and the shape of the returned facts, so an agent is not fully equipped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single `query` parameter has no schema description, so the description must compensate. It does explain that query acts as a text match returning only mentioning sections, but leaves the null/default behaviour (likely 'all sections') ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource — a curated knowledge base of verified FEMM 5 behaviour (command quirks, units, headless support, renamed materials) — which is clearly distinct from procedural siblings like femm_api_search or femm_manual_section. However, no explicit verb is used, and it does not directly name or route against those closest siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers one usage cue, 'Read this before trusting FEMM 4.2 habits', which implies when it matters. It does not state when to prefer it over the adjacent reference tools (femm_manual_section, femm_api_search, femm_examples_list), leaving the boundary implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_field_statsA
Area-weighted statistics of the main field over the mesh, from the bulk arrays (fast, no file). Magnetics: |B| min/max/mean/rms/p95, saturated area fraction (|B| >= threshold, default 1.6 T) and number of elements above 2 T. Other physics: |D|, |F| or |J| per element and V/T at nodes. region: 'all' or 'group:N[,M]' (give the blocks of one material a group number with femm_add_block_label(group=N) to get per-material stats).
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | all | |
| session | No | main | |
| threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it does substantial work: data source (bulk arrays), a performance trait (fast, no file), and a concrete default (threshold 1.6 T). It omits prerequisite/error behavior (e.g., whether a solution must exist first), so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in the first clause, then layers in return values and parameter syntax with no filler sentences. Dense notation ('|B| min/max/mean/rms/p95') is efficient, though the single long paragraph is slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must cover both intent and outputs, and it names the exact returned statistics and the saturation metric. The main gap is that it never states the execution prerequisite (a solved mesh/session) for a results tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for two of three parameters: 'region' syntax ('all' or 'group:N[,M]') and 'threshold' (default 1.6 T, saturation cutoff). 'session' is left unexplained, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific computation (area-weighted field statistics over the mesh) and a specific data source ('from the bulk arrays (fast, no file)'), which distinguishes it from file-based or integral siblings such as femm_block_integral and femm_point_values. The agent knows exactly what this produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: the 'fast, no file' note signals when to prefer it, and it explains how to obtain per-material stats via femm_add_block_label(group=N). It stops short of naming explicit alternatives to avoid or stating prerequisites (e.g., a solved mesh).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_file_summaryA
Parse a FEMM text file offline (no engine): .fem/.fee/.feh/.fec models or .ans/.res/.anh/.anc solutions. Returns problem definition, materials (with use counts, nonlinear/magnet flags), boundaries (type names, segment counts), circuits (net turns), groups, counts, bounding box, magnets. arrays=True on a solution also writes _mesh.npz (nodes, elements) next to it.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| arrays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses a real side effect (arrays=True writes <stem>_mesh.npz next to the file), which an agent must know before invoking. It omits whether the operation is read-only or what happens on unparseable files, but the key behavioral trait is surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and file scope, then the return contents, then the conditional side effect. No clause is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe returns itself, and it does so exhaustively (problem definition, materials with flags, boundaries, circuits, groups, counts, bounding box, magnets). Nothing an agent needs before calling 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 0%, so the description must compensate. It fully explains the 'arrays' flag and its npz side effect, and the extension list clarifies what 'path' may point to. Path format details (relative vs absolute) are left unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (parse) and resource (FEMM text files) and immediately distinguishes itself from engine-dependent siblings by noting it is 'offline (no engine)'. The enumerated accepted extensions make the scope 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 'offline (no engine)' signals the correct context of use versus session-based siblings like femm_open or femm_load_solution. It does not, however, name any alternative explicitly or state when not to use it, so it stops short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_gap_resultsA
Air-gap (sliding band) results for a periodic/antiperiodic air-gap boundary boundary
(femm_add_boundary bc_type='periodic_air_gap'): torque (mo_gapintegral 0), force (1),
stored energy (2) [include_ac adds 2x torque/force and interaction terms]; Br/Bt at
angle (deg); the Br/Bt distribution at npts angles saved to CSV with stats; and the
harmonics largest Br harmonics (mo_getallgapharmonics). Magnetics only.
Warning: FEMM returns zeros (not an error) for an unknown boundary name.
| Name | Required | Description | Default |
|---|---|---|---|
| npts | No | ||
| angle | No | ||
| session | No | main | |
| boundary | Yes | ||
| harmonics | No | ||
| include_ac | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so substantially: it discloses the underlying FEMM calls (mo_gapintegral modes 0/1/2, mo_getallgapharmonics), how include_ac alters the result (adds 2x torque/force plus interaction terms), the units of angle, and a genuinely important gotcha—FEMM returns zeros rather than an error for an unknown boundary name. It does not state whether a prior solve is required or the read-only nature of the operation, so it falls just short of full behavioral coverage.
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 main purpose is front-loaded in the opening clause, and every clause carries information (output types, function names, mode codes, the zeros warning). It is dense and habitually parenthetical/run-on, which slightly hurts readability, but there is no filler 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?
For a 6-parameter, no-output-schema, no-annotation tool, the description covers the returned quantities (so no output schema is needed), most parameter meanings, the required boundary type, and an error-behavior caveat. Missing details—whether a solved problem state is required and the meaning of 'session'—are minor but keep it from being fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for 5 of 6 parameters: boundary (the target boundary), angle (deg), npts (number of angles for the CSV distribution), harmonics (count of largest Br harmonics), and include_ac (2x torque/force and interaction terms). Only 'session' is left unexplained, so the parameter semantics are largely rescued despite the empty 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 operation (computing air-gap/sliding-band results) on a specific resource (a periodic/antiperiodic air-gap boundary) and enumerates exactly what is returned: torque, force, stored energy, Br/Bt at an angle, a CSV distribution with stats, and harmonics. This is specific enough that an agent can immediately distinguish it from generic sibling tools like femm_line_integral or femm_point_values, and 'Magnetics only' further narrows scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a precondition—the boundary must have been created via femm_add_boundary with bc_type='periodic_air_gap'—and flags 'Magnetics only', which guides applicability. However, it never names an alternative tool or states when to prefer this over femm_line_integral/femm_block_integral for gap-region computation, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_geometry_summaryA
Counts of nodes, segments, arcs, block labels and the defined materials, boundaries, circuits/conductors, plus the bounding box. FEMM 5 has no pre-processor count getters, so this saves the model (to its current path, or <work_dir>/model.) and reads the counts from the saved file. Use it to sanity-check a model before meshing.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses a non-obvious side effect (the tool SAVES the model to disk, to its current path or <work_dir>/model.<ext>) and explains why (FEMM 5 has no pre-processor count getters). That the 'summary' operation writes to disk is exactly the kind of behavior an agent must know. It does not mention error/permission behavior, keeping it at 4.
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 front-loaded sentences: outputs first, then the mechanism/caveat, then the intended use. The enumeration of counted entities is dense but justified as the tool's output contract. No padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is responsible for return content and behavior, and it covers both: what gets counted and the save side effect. It leaves the exact return format/structure unspecified, which is the only notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'session' parameter has 0% schema description coverage, and the description never mentions it. The value (which session to summarize, defaulting to 'main') is reasonably guessable from the name and sibling conventions, but the description does nothing to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (counts) and a concrete resource set (nodes, segments, arcs, block labels, materials, boundaries, circuits/conductors, bounding box), which an agent can distinguish from siblings like femm_problem_info or femm_file_summary without opening any 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?
'Use it to sanity-check a model before meshing' gives a clear usage context and implicitly positions it relative to the meshing/solve siblings. It stops short of naming a specific alternative or stating when not to use it, so it falls just short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_health_checkA
Judge whether the loaded magnetics solution is physically sane. Needs femm_solve first.
Runs (subset via checks): mesh (element count, worst triangle angle), precision, energy
(W = W' and W = 1/2 sum I psi for linear models without magnets), saturation (share of steel
above b_limit T; linear iron over 2.2 T), boundary (|B| at the outer boundary vs peak),
torque (WST on rotor_groups vs -stator_groups; air-gap element torque if present), force
(force_groups vs -reaction_groups), ac (1/2 Re(V conj I) = losses), flux (two cuts
[[p1,p2],[p3,p4]] must carry the same flux), pm (magnet operating points).
Returns {checks: [{name, ok, value, expected, tolerance, message}], summary, facts}.
| Name | Required | Description | Default |
|---|---|---|---|
| checks | No | ||
| b_limit | No | ||
| session | No | main | |
| flux_lines | No | ||
| force_groups | No | ||
| rotor_groups | No | ||
| stator_groups | No | ||
| reaction_groups | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: it enumerates every available check, the physical identity each one validates (W = W', 1/2 Re(V conj I) = losses, torque reaction balance), and the conditions under which checks apply. It stops short of stating side-effect/read-only behavior or cost, but the 'judge a loaded solution' framing makes the read nature clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-line purpose, then a dense parenthesized enumeration of checks and a trailing return-shape clause. Every clause carries real information, though the middle block is unabridged and could be trimmed slightly without loss.
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 an 8-parameter tool with no annotations and no output schema, the description is nearly self-sufficient: it names each check, its tolerance logic, the group-based parameters it depends on, and the exact return structure. Missing only the `session` parameter's role and the valid `checks` values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: it defines `checks` as a subset selector, `b_limit` in tesla, `flux_lines` as two cuts [[p1,p2],[p3,p4]], and the rotor/stator/force/reaction group semantics for torque and force checks. Only `session` and the exact accepted check-name strings are left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource: 'Judge whether the loaded magnetics solution is physically sane.' That is clearly distinct from siblings like femm_selftest, femm_check_rule, femm_status, and femm_field_stats, which measure different things. An agent can route to this tool on purpose alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the prerequisite explicitly ('Needs femm_solve first') and explains that the run can be narrowed via `checks`. It does not, however, contrast this tool against the other validation-oriented siblings such as femm_check_rule or femm_selftest, so the agent gets context but no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_import_dxfA
Import a DXF drawing into the current model (xi_readdxf). tolerance merges nodes closer
than this (problem units); leave None for FEMM's default. Check the result with
femm_geometry_summary, then add block labels.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| session | No | main | |
| tolerance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that `tolerance` merges nearby nodes in problem units and that None falls back to FEMM's default, but it does not say whether the import appends to or replaces existing geometry, nor any permission/session requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences with the purpose front-loaded, followed by parameter semantics and the follow-up workflow. No filler; 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?
Given no annotations, no output schema, and 0% schema coverage, the description covers purpose, the tricky parameter, and the workflow, but omits whether existing geometry is affected and any session/document preconditions for an import operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the non-obvious `tolerance` parameter well (merge distance in problem units, None for default), but leaves `path` and `session` undocumented, so coverage is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Import a DXF drawing into the current model'), names the underlying FEMM call (xi_readdxf), and implicitly distinguishes itself from the sibling femm_export_dxf. An agent can immediately tell what this 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?
Provides a concrete post-import workflow: check with femm_geometry_summary, then add block labels, which routes the agent to the right follow-up siblings. It gives clear context but no explicit when-not-to-use or prerequisites (e.g., whether a document/session must be open first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_journalA
The raw command lines this session sent to FEMM (most recent limit), i.e. exactly what
the engine executed; commands FEMM refused are prefixed '#! ' with the error. save=True also writes the full journal as a replayable in-process
script (<work_dir>/scripts/journal.py: run it with femm_run_script(path=...)).
Internal pings are filtered out. Use femm_export_pyfemm_script for a standalone file.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | ||
| limit | No | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does well: it discloses the '#! ' prefix for refused commands, that internal pings are filtered, that results are capped by limit, and that save writes a replayable script to <work_dir>/scripts/journal.py runnable via femm_run_script. It stops short of stating the permission/read-only profile or response shape beyond the line-list format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core identity before the side-effect and sibling note. Dense and largely waste-free, though the parenthetical about the script path makes one sentence run long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description adequately covers return content, error formatting, filtering, and the save side-effect. The unexplained `session` parameter is the only notable gap for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains `limit` ('most recent `limit`') and `save` (writes the full journal as a replayable script, with the exact path), but leaves `session` (default 'main') entirely unexplained, so one of three parameters remains undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and content: 'the raw command lines this session sent to FEMM', clarified as 'exactly what the engine executed'. It also distinguishes itself from femm_export_pyfemm_script by naming that sibling for the standalone-file case.
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?
Only forward guidance is 'Use femm_export_pyfemm_script for a standalone file', which routes one alternative case. It never states when to reach for the journal itself (debugging, auditing, replay) versus siblings like femm_status or femm_file_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_line_integralB
Line integrals along a contour of straight pieces through [[x, y], ...] (use many points to follow a curve). Magnetics codes: 0 B.n (flux; total, average), 1 H.t (MMF), 2 length (and surface area), 3 stress tensor force, 4 stress tensor torque, 5 (B.n)^2. Electrostatics: 0 E.t, 1 D.n (charge), 2 length, 3 force, 4 torque. Heat: 0 G.t (dT), 1 F.n (heat flow), 2 length, 3 average T. Current: 0 E.t, 1 J.n (current), 2 length, ... Defaults: the first three/four.
| Name | Required | Description | Default |
|---|---|---|---|
| codes | No | ||
| contour | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose what each result code computes (flux, MMF, force, torque, charge) and how the contour is discretized. However, it omits permissions, prerequisites (e.g., a solved model), and return structure, leaving the behavioral picture 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?
The core definition is front-loaded, but the bulk is a dense multi-domain code table with trailing ellipses and the cryptic 'Defaults: the first three/four' that add parsing difficulty. Information density is high, though structure could be cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There are no annotations and no output schema, and 3 parameters at 0% schema coverage. The codes and contour are explained adequately for invocation, but the undocumented session parameter and unclear return format leave gaps an agent would need to resolve experimentally.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it documents the 'codes' parameter exhaustively per physics domain and explains the contour format and curve-following advice. The 'session' parameter is not mentioned at all, but the two substantive parameters are well covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb+resource: computing line integrals along a contour of straight pieces, with explicit coordinate format [[x,y],...]. It implicitly contrasts with the area-based femm_block_integral, but never names it, so the sibling distinction is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this tool over alternatives such as femm_block_integral or femm_point_values. The description is a physics-code reference dump rather than usage guidance, so the agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_load_solutionB
Load the existing solution of the current (already solved) model into the post-processor (xi_loadsolution) without re-solving. Fails if the model was never solved.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the failure condition and that no re-solve occurs, but says nothing about whether loading is idempotent, what state it changes, or whether it requires an active session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action and the key failure mode front-loaded; 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 post-processor load tool with no output schema, the description covers the action and its main failure mode. The gap is the undocumented session parameter, which is the only input and is left entirely unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the single 'session' parameter (default 'main') is undocumented in both schema and description. For a 1-param tool at 0% coverage, the description should explain what the session selector means but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Load the existing solution ... into the post-processor') and clarifies it does not re-solve, which implicitly separates it from femm_solve. It is clear what the tool does, though it does not explicitly name the sibling it complements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a precondition ('Fails if the model was never solved') and distinguishes from re-solving, which implies the use case of post-processing an already-solved model. However, it never explicitly says when to choose this over alternatives such as femm_solve or the various result tools (point_values, block_integral).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_make_plotA
Sample a quantity along a contour (straight pieces through [[x, y], ...]) to a text file (xo_makeplot with a filename; works headless). Magnetics plot_type: 0 A, 1 |B|, 2 B.n, 3 B.t, 4 |H|, 5 H.n, 6 H.t, 7 J eddy, 8 J source+eddy. Electrostatics: 0 V, 1 |D|, 2 D.n, 3 D.t, 4 |E|, 5 E.n, 6 E.t. Heat: 0 T, 1 |F|, 2 F.n, 3 F.t, 4 |G|, 5 G.n, 6 G.t. Current: 0 V, 1 |J|, 2 J.n, 3 J.t, 4 |E|, ... Returns the file path, column header and min/max/mean of the sampled values (position is distance along the contour).
| Name | Required | Description | Default |
|---|---|---|---|
| npts | No | ||
| path | No | ||
| contour | Yes | ||
| session | No | main | |
| plot_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and mostly delivers: it discloses that a text file is written (a side effect), that it works headless, and that the return includes the file path, column header, and min/max/mean of sampled values. It does not say whether a solved problem or open session is required, but the core behavior and return payload are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main action is front-loaded in the first sentence, followed by dense but necessary plot_type enumerations that compensate for zero schema description coverage. It is somewhat heavy but every block earns its place; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description does cover the return payload (path, header, min/max/mean) so the agent knows what comes back, and it explains the plot_type/contour semantics well. The gaps are the undocumented npts and session parameters and any prerequisite about needing a solved problem.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does so for the hardest parameter by fully enumerating plot_type codes per physics mode and describing the contour format. However, npts, session, and (partially) path are left undocumented, so coverage of the 5 params is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource: 'Sample a quantity along a contour ... to a text file.' It also states the mechanism (xo_makeplot) and that it works headless, which is concrete. However, it never names or contrasts with the adjacent sibling femm_plot_field, so an agent must still infer which plotting tool is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — sample a quantity along a contour and export to text — and 'works headless' is a useful operational note. But there is no explicit when/when-not guidance and no routing to alternatives such as femm_plot_field or femm_line_integral, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_manual_sectionB
Read the installed FEMM 5 manual (manual.pdf, extracted to text once and cached). query: a section number ('3.7.1'), a heading ('Data Extraction Commands', 'Boundary Conditions', 'Air Gap'), or a keyword ('mo_gapintegral', 'Kelvin'): headings return the section text, keywords return snippets with their section names.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| refresh | No | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the caching behavior ('extracted to text once and cached') and the two distinct return shapes (section text vs. snippets with section names), which is genuinely useful. However, it says nothing about failure modes (missing/manual not installed), result count, or how caching interacts with the undocumented refresh flag.
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 resource, and the examples are dense rather than padded. The query sentence runs long, but every clause (formats and their return semantics) 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?
No output schema and no annotations, so the description is the only source of truth. It covers the primary query path well but leaves the refresh and max_chars knobs, plus error behavior, unaddressed — a meaningful gap for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It thoroughly explains the `query` parameter's accepted forms and their differing output, but `refresh` and `max_chars` are never mentioned, leaving two of three parameters entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read the installed FEMM 5 manual (manual.pdf...)'. It also clarifies the query-response contract (headings return section text, keywords return snippets). It does not name which sibling it contrasts with (e.g. femm_api_search, femm_examples_list), so an agent must infer the boundary itself.
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 accepted query forms are stated, which implies how to use the tool, but there is no explicit when-to-use or when-not-to-use guidance and no mention of the alternative documentation tools (femm_api_search, femm_api_get, femm_examples_list). Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_material_addA
Define a custom material for the session's physics (xi_addmaterial). Only the arguments of that physics are used; *_y defaults to *_x. magnetics: mu_x, mu_y (relative), h_c (A/m, magnets), j (source current density MA/m^2, complex OK), sigma (MS/m), lam_d (lamination thickness mm), phi_hmax (hysteresis angle deg), lam_fill (0..1), lam_type (0 none, 1 laminated x, 2 laminated y, 3 magnet wire, 4 stranded, 5 litz, 6 square wire), phi_hx, phi_hy, n_strands, wire_d (mm); bh_points [[B_T, H_A/m], ...] makes it nonlinear (mu ignored). electrostatics: eps_x, eps_y (relative), qv (C/m^3). heatflow: k_x, k_y (W/m/K), qv (W/m^3), kt (volumetric heat capacity MJ/m^3/K). currentflow: sigma_x, sigma_y (S/m), eps_x, eps_y, ltx, lty (loss tangents).
| Name | Required | Description | Default |
|---|---|---|---|
| j | No | ||
| kt | No | ||
| qv | No | ||
| h_c | No | ||
| k_x | No | ||
| k_y | No | ||
| ltx | No | ||
| lty | No | ||
| mu_x | No | ||
| mu_y | No | ||
| name | Yes | ||
| eps_x | No | ||
| eps_y | No | ||
| lam_d | No | ||
| sigma | No | ||
| phi_hx | No | ||
| phi_hy | No | ||
| wire_d | No | ||
| session | No | main | |
| sigma_x | No | ||
| sigma_y | No | ||
| lam_fill | No | ||
| lam_type | No | ||
| phi_hmax | No | ||
| bh_points | No | ||
| n_strands | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose non-obvious behavior: only the current physics's arguments are consumed, '*_y defaults to *_x', and supplying bh_points makes the material nonlinear so mu is ignored. It still omits side-effect context such as whether an existing material of the same name is overwritten or whether a session/document must already be open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose in the first sentence, then organizes the parameter block by physics (magnetics/electrostatics/heatflow/currentflow), which is highly scannable. It is dense and slightly repetitive (qv, eps_x/eps_y, sigma appear under more than one physics), but nearly every line carries needed 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?
For a 26-parameter tool with no annotations and no output schema, the definition is close to self-sufficient: units, per-physics grouping, defaults, and the nonlinearity override are all present. It stops short of describing the session parameter, the required name, or failure/overwrite semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 26 parameters, so the description must compensate fully, and it largely does: it assigns units and meaning to nearly every argument (mu relative, h_c A/m, j MA/m^2, sigma MS/m, lam_d mm, k W/m/K, kt MJ/m^3/K) and enumerates lam_type's 0-6 codes inline. Only 'session' and 'name' go unaddressed, which is a minor gap against very strong coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Define a custom material for the session's physics', with the underlying API call (xi_addmaterial) named. It clearly positions itself as the custom-material creation path versus sibling readers/mutators like femm_material_get, femm_material_load, and femm_material_modify, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'custom material' and 'for the session's physics' hint at when to use it, and 'Only the arguments of that physics are used' constrains how to call it. There is no explicit when-not guidance or routing to alternatives such as femm_material_load (library material) or femm_material_modify (edit existing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_material_add_bhA
Give material name a nonlinear curve. Magnetics: points = [[B (T), H (A/m)], ...]
starting at [0, 0], B and H strictly increasing (mi_addbhpoint). Heat flow: points =
[[T (K), k (W/m/K)], ...] (hi_addtkpoint). clear_first removes the existing curve.
The material must already exist in the model (femm_material_add or femm_material_load).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| points | Yes | ||
| session | No | main | |
| clear_first | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that clear_first removes the existing curve (a destructive behavior), the strict ordering constraints on points (starting at [0,0], strictly increasing), and the prerequisite state. It omits session behavior and any error/failure semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then branches into the two problem-type formats and the clear_first/prerequisite notes. The parenthetical API function names (mi_addbhpoint, hi_addtkpoint) add specificity without much bloat; the text is dense but 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?
No output schema and no annotations, so the description must stand alone, and it largely does: both physics variants, point formats, clear_first destruction, and the material-existence prerequisite are covered. Only session semantics and return behavior are unaddressed, minor gaps for this operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for 3 of 4 params: `name` is the target material, `points` gets full format detail including units and ordering rules per problem type, and `clear_first` is explained. Only `session` (default 'main') is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Give material `name` a nonlinear curve', covering both magnetics (B-H) and heat-flow (T-k) variants. This clearly distinguishes it from generic material tools, though it doesn't explicitly contrast with the sibling femm_material_modify, which an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite: 'The material must already exist in the model (femm_material_add or femm_material_load)', naming the setup tools. It doesn't explicitly state when to prefer this over femm_material_modify or femm_material_add, so no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_material_getA
Full library record of one material (all keys of the .dat block: Mu_x, H_c, Sigma in MS/m, d_lam in mm, LamFill, LamType, WireD, ...). include_curve=True adds the B-H (or T-k) points. On a miss, returns suggestions (and the FEMM 4.2 -> 5 rename if known).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| physics | No | magnetics | |
| include_curve | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden, and it does well: it discloses the full contents of the returned record, the effect of include_curve, and notably the miss behavior (returns suggestions and a 4.2->5 rename). It omits any statement about safety/permissions, but as a read operation that gap is minor.
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, front-loaded sentences that lead with what is returned and then cover the optional curve and miss handling. The parenthetical field lists are long but each element is informative, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description usefully documents the return contents and the miss case, which is exactly what is missing elsewhere. The uncovered physics parameter and absence of any read-only reassurance are the remaining gaps for a 3-param retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clearly explains include_curve ('adds the B-H (or T-k) points') and the meaning of name is self-evident, but the physics parameter and its default are never addressed, leaving one meaningful parameter undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('Full library record of one material') and enumerates the fields returned, so an agent knows exactly what it retrieves. It does not, however, distinguish this from close siblings like femm_material_search or femm_material_load, leaving the agent to infer the boundary.
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 'get one material' framing implies the retrieval use case, and the include_curve hint gives some conditional guidance. But there is no explicit when-to-use statement and no mention of the obvious alternative femm_material_search when the exact name is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_material_loadA
Copy materials from the FEMM 5 library into the current model (xi_getmaterial), for the session's physics. Names must match FEMM 5 exactly ('M-19 14 mil', 'N42', 'Copper', 'Air', '18 AWG'). On a miss the result lists suggestions; with fallback_to_suggestion=True the best suggestion (e.g. FEMM 4.2 'M-19 Steel' -> 'M-19 14 mil') is loaded instead and reported in 'renamed' (use those names in femm_add_block_label).
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | ||
| session | No | main | |
| fallback_to_suggestion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses exact-match requirements, that a miss returns suggestions, and that fallback_to_suggestion loads the best match and reports it in 'renamed'. It doesn't state whether existing materials are overwritten or whether an open document/session must pre-exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by the matching constraint and then the error/fallback behavior. Three dense sentences with concrete examples and no filler; every clause adds actionable 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?
No output schema or annotations, yet the description covers purpose, exact-match semantics, error behavior, fallback, and downstream usage of 'renamed'. Minor gaps remain (overwrite behavior, session default, prerequisites), but it is 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?
Schema coverage is 0%, so the description must compensate and largely does: it explains 'names' (exact FEMM 5 strings with examples) and 'fallback_to_suggestion' (behavior plus a concrete M-19 Steel -> M-19 14 mil example). The 'session' parameter is only implied via 'the session's physics'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+destination: copy materials from the FEMM 5 library into the current model. This distinguishes it from siblings like femm_material_search (find), femm_material_get (read one), and femm_material_add (define new). The parenthetical xi_getmaterial ties it to the underlying API.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: load materials 'for the session's physics' and use the resulting names in femm_add_block_label, and explains the fallback workflow when a name misses. It stops short of explicitly contrasting against femm_material_search/get, so it's clear context without named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_material_modifyA
Change properties of a material already in the model (xi_modifymaterial), e.g. {"mu_x": 2000, "sigma": 0} or {"name": "M19-hot"}. Keys per physics: magnetics name mu_x mu_y h_c j sigma lam_d phi_hmax lam_fill lam_type phi_hx phi_hy n_strands wire_d; electrostatics name eps_x eps_y qv; heatflow name k_x k_y qv kt; currentflow name sigma_x sigma_y eps_x eps_y ltx lty. Re-solve afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| changes | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that this mutates an existing material and that a re-solve is needed, but it does not cover error behavior, return values, permissions, or whether changes are persisted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and examples, and the long key lists are necessary because the schema provides no property descriptions. Every part contributes to correct invocation without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the description supplies the most important missing context: valid keys, examples, and the need to re-solve. It omits session semantics and failure behavior, but is largely sufficient for calling the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the detailed examples and physics-specific key lists for the 'changes' object add substantial value beyond the schema. However, the top-level 'name' parameter is only implied and the 'session' parameter is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: change properties of a material already in the model. It also includes the underlying API operation (xi_modifymaterial), which helps distinguish it from sibling tools like femm_material_add or femm_material_load.
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 'already in the model' clearly scopes usage to existing materials, implicitly steering agents away from add/load tools. It also states 'Re-solve afterwards,' giving the required follow-up action, though it does not explicitly name alternative tools for other material operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_material_searchA
Fuzzy search of the FEMM 5 material library (no engine needed). Matches names and folders: 'M-19', 'silicon iron', 'N42', 'NdFeB', 'AWG 18', 'stainless', 'pure iron'. FEMM 4.2 names ('M-19 Steel', 'NdFeB 32 MGOe') are mapped to their FEMM 5 equivalents and ranked first. physics: magnetics|electrostatics|heatflow|currentflow. Returns name, folder and key properties (mu_r, Hc, sigma, nonlinear?). Empty query + folder lists a folder; empty query alone returns the family index.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| folder | No | ||
| physics | No | magnetics |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so well: it discloses fuzzy matching behavior, the FEMM 4.2-to-5 name mapping with ranking priority, and the returned fields (name, folder, mu_r, Hc, sigma, nonlinear?). It omits any statement about result capping/limit behavior or read-only guarantees, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, followed by examples, mapping rules, enum values, and edge-case behavior. It is information-dense with little waste, though the example list is somewhat long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explains return values explicitly and covers the main usage modes (query, folder listing, family index). An agent has enough to call it correctly; only the limit parameter semantics and explicit alternative-tool routing are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for three of four parameters: query gets usage examples, folder gets the empty-query-plus-folder behavior, and physics gets its enum values spelled out. The `limit` parameter is left unexplained, a modest gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fuzzy search) and resource (FEMM 5 material library), and backs it with concrete examples ('M-19', 'N42', 'silicon iron'). It is clearly distinguishable from sibling material tools like femm_material_get, femm_material_load, and femm_material_add.
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 '(no engine needed)' note and the empty-query behaviors give clear usage context, implicitly contrasting with session-bound material tools. It stops short of naming an explicit alternative or a when-not-to-use condition, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_mesh_arraysA
Dump the solution mesh and fields to a file in the session work dir and return the path, shape and min/max/mean per column (never the raw arrays). which: all, or a comma list of nodes, elements, and per physics: magnetics b (B1,B2 per element), a (A per element); electrostatics v (per node), d; heatflow t (per node), f; currentflow v (per node), j. Element rows are n1,n2,n3 (node indices), cx, cy, area, group. fmt: npz (numpy) or csv. Load with numpy.load(path).
| Name | Required | Description | Default |
|---|---|---|---|
| fmt | No | npz | |
| name | No | ||
| which | No | all | |
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that raw arrays are never returned, the returned summary (path, shape, min/max/mean per column), the file location (session work dir), and the file format. It omits any failure/overwrite/permission behavior, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the primary action and the key constraint (never raw arrays), followed by the 'which' vocabulary and format details. Dense and information-bearing, though somewhat run-on with the physics enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must supply return semantics, which it does (summary stats + load path). It also describes the element row layout. The main gap is the unexplained 'name' and 'session' parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It richly documents 'which' (all vs comma list, per-physics quantity names) and 'fmt' (npz/csv), but leaves 'name' and 'session' unexplained even though 'session work dir' hints at the session concept. Partial compensation for a 4-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: dumps the solution mesh and fields to a file and returns path/shape/min-max-mean. This clearly separates it from siblings like femm_export_dxf, femm_save_bitmap, and femm_field_stats, and names the concrete payload (node/element rows, physics quantities).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Load with numpy.load(path)' and by the detailed 'which' enumeration, signaling a bulk-array export for Python post-processing. However, it never states when to choose this over siblings such as femm_point_values, femm_field_stats, or femm_block_integral, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_mirror_selectedA
Mirror-copy the selection about the line through (x1,y1)-(x2,y2) (the original stays).
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | ||
| x2 | Yes | ||
| y1 | Yes | ||
| y2 | Yes | ||
| session | No | main | |
| entities | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the single most important trait: the original geometry is preserved ('the original stays'). However, it omits whether a prior selection is required, coordinate/units conventions, what happens on an empty selection, or how the optional 'entities' and 'session' arguments alter behavior for this mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action front-loaded and the non-destructive caveat appended. No filler, no restatement of the tool name.
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 mutating geometry tool with no annotations and no output schema, the description covers the operation and its non-destructive nature but leaves the session/entities parameters and preconditions undocumented. Adequate as a minimum-viable definition, but an agent could still misinvoke it with respect to session scoping or explicit entity lists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does give real meaning to the four required parameters by identifying (x1,y1)-(x2,y2) as the endpoints of the mirror axis. It says nothing about the two optional parameters ('session', 'entities'), leaving a third of the 6-parameter surface unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('mirror-copy') plus resource ('the selection') and the exact geometric locus of the operation (the line through (x1,y1)-(x2,y2)). The parenthetical '(the original stays)' distinguishes it from femm_move_selected and clarifies it is a duplication rather than a destructive transform.
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 when-to-use guidance, no stated prerequisites (e.g. that a selection must already exist), and no routing to alternatives such as femm_copy_selected or femm_move_selected. The agent must infer the usage context entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_modify_circuitB
Change a circuit: current (A, real; for complex use femm_call('mi_modifycircprop', ...)), series/parallel, or rename (mi_modifycircprop propnum 1 / 2 / 0). Re-solve afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| series | No | ||
| current | No | ||
| session | No | main | |
| new_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and partially meets it: it discloses the complex-current workaround, the required re-solve postcondition, and the underlying propnum mapping (1/2/0). It omits permission requirements, behavior when the circuit is absent, and error/reversibility semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the verb and resource, with no filler. The embedded API-call references make it slightly cramped but every clause carries 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?
No output schema and no annotations, with 5 parameters including an undocumented session and a required name, so the description does most of the work but not enough. It omits what the call returns and whether a save is needed after the mandated re-solve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds real units and type for current, ties series to the series/parallel concept, and maps rename to new_name with propnum codes. It leaves the required 'name' and the 'session' parameter entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the verb ('Change') and resource ('a circuit') and enumerates the three modifiable aspects: current, series/parallel, rename. Distinguishable from the sibling femm_add_circuit by the modify-vs-add verb, though the description never names it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a conditional hint (for complex current use femm_call('mi_modifycircprop', ...)) and a workflow step ('Re-solve afterwards'), which implies context. However, it gives no explicit when-to-use-this-vs-femm_add_circuit guidance and no preconditions such as the circuit needing to exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_move_selectedA
Move the selection: translate by (dx, dy), or rotate by rotate_deg (counter-clockwise)
about about=[x, y] (default origin). entities: nodes|segments|labels|arcs|group restricts
what moves (default: FEMM's current edit mode; use 'group' after femm_select(kind='group')).
| Name | Required | Description | Default |
|---|---|---|---|
| dx | No | ||
| dy | No | ||
| about | No | ||
| session | No | main | |
| entities | No | ||
| rotate_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses defaults (origin for 'about', FEMM's current edit mode for entities) and rotation direction (counter-clockwise), but says nothing about reversibility/undo, mutation side effects, or the session parameter's role.
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 dense sentences that are front-loaded with the core operation and then qualify it. Every clause carries information (mode, direction, pivot, entity scope, default), with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotations and no output schema, the description covers most semantics adequately but omits the 'session' parameter and any mutation/undo behavior. It is minimally sufficient but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does well: it defines dx/dy as translation, rotate_deg as counter-clockwise degrees, about as an [x, y] pivot defaulting to origin, and enumerates entities values. Only 'session' is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Move the selection') with its two concrete modes (translate by dx/dy, rotate by rotate_deg). An agent can immediately understand the operation, though it does not explicitly distinguish itself from transform siblings like femm_mirror_selected or femm_scale_selected beyond the verb itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives conditional guidance for the entities filter ('use "group" after femm_select(kind="group")') and a default behavior, which is useful. However, it offers no when-to-use/when-not framing relative to the other selection-transform tools, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_new_documentA
Create a new empty model: physics = magnetics | electrostatics | heatflow | currentflow. This defines the mi_/ei_/hi_/ci_ commands. Next: femm_problem_define (units, planar/axi, depth, frequency), then geometry, materials, labels, boundaries, femm_solve.
| Name | Required | Description | Default |
|---|---|---|---|
| physics | No | magnetics | |
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses that the chosen physics determines which command family (mi_/ei_/hi_/ci_) becomes available, which is real behavioral context. However it says nothing about whether an open session is required, whether an unsaved current document is discarded, or what happens on failure — meaningful gaps for a creation/state-changing tool with zero annotation coverage.
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 dense sentences, front-loaded with the verb and resource, followed by the physics options and the workflow chain. No filler and every clause carries routing or parameter 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?
For a document-creation tool with no annotations and no output schema, the description covers the physics choice and the build sequence well but omits session semantics, the fate of any currently loaded model, and error/return behavior. Adequate to call correctly in the happy path, incomplete around state and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does fully document the physics parameter by enumerating all four accepted values, adding meaning the bare string schema lacks. But the session parameter (default 'main') is left entirely undefined — no hint of what a session is or how it relates to femm_session_open — so coverage is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new empty model') and enumerates the exact physics values it accepts, which immediately separates it from siblings like femm_open (existing files) or femm_problem_define (configures an already-created model). An agent can route to it 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 lays out the downstream sequence explicitly: femm_problem_define next (units, planar/axi, depth, frequency), then geometry, materials, labels, boundaries, femm_solve. That is strong positional guidance. It never states the negative case (use femm_open / femm_session_open instead when a model or session already exists), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_openB
Open a FEMM model (.fem/.fee/.feh/.fec) or a solution (.ans/.res/.anh/.anc). Relative paths resolve against the session work dir; use forward slashes. Opening a solution makes the post-processor tools (femm_point_values, ...) available directly.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose one genuine behavioral trait beyond the schema: opening a solution unlocks the post-processor tools. It omits important open semantics such as whether an already-open document is replaced, error behavior for missing/invalid files, and whether the opened item is locked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler, and the core action plus accepted file types are front-loaded. The path-handling caveat follows logically. Slightly dense but 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?
There is no output schema or annotation to lean on, so the description must cover purpose, path handling, and side effects – which it largely does. It stops short of explaining the 'session' parameter and the document-replacement semantics, which are the remaining gaps for a stateful open operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds real value for 'path' (accepted extensions, relative-path resolution, forward-slash requirement), but the second parameter 'session' (default 'main') is never mentioned in the description or schema, leaving its meaning and role undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Open') and resource (FEMM model or solution files), enumerating the accepted extensions, so the agent knows exactly what this does. It implicitly distinguishes model vs. solution loading by noting the post-processor side effect, but does not explicitly contrast itself with close siblings like femm_load_solution or femm_session_open.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives useful invocation context (relative paths resolve against the session work dir, use forward slashes) and implies 'use this before working on a file'. However, it never says when to prefer this over femm_load_solution, femm_session_open, or femm_new_document, so the routing decision among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_plot_fieldA
|B| colour map of the loaded magnetics solution rendered from the bulk mesh arrays (works
headless, no GUI screenshot). zoom = [xmin, xmax, ymin, ymax] in problem units; default file
<work_dir>/field_B.png; save_arrays also writes the nodes/elements/B arrays as .npz.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| zoom | No | ||
| session | No | main | |
| save_arrays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose real behavioral facts: output is rendered from bulk mesh arrays, default artifact is <work_dir>/field_B.png, and save_arrays additionally writes nodes/elements/B as .npz. It omits error behavior when no solution is loaded, whether an existing file is overwritten, and any session/permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with what the tool produces and the headless guarantee, followed by parameter-level detail. No filler, though the parenthetical and clause stacking make it slightly hard to parse on first 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?
With no output schema and no annotations, the description does most of the necessary work for a 4-param plotting tool: it names the artifact, its default location, the zoom format, and the save_arrays side effect. Remaining gaps are the unexplained 'session' parameter and the unstated precondition that a solution must already be loaded/solved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: zoom is defined as [xmin, xmax, ymin, ymax] in problem units, path is tied to the default field_B.png output, and save_arrays is explained as writing nodes/elements/B arrays to .npz. The 'session' parameter (default 'main') is never mentioned, which is the only uncovered parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('|B| colour map of the loaded magnetics solution') and clarifies the mechanism ('rendered from the bulk mesh arrays, works headless, no GUI screenshot'). This implicitly separates it from the GUI-dependent siblings like femm_make_plot and femm_save_bitmap, though neither is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'works headless, no GUI screenshot' note implies the tool is for headless rendering contexts, which is useful routing context against plotting siblings. However, it never states when to prefer this over femm_make_plot/femm_save_bitmap, nor what prerequisite (a loaded/solved magnetics problem) must hold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_point_valuesA
Field values at [[x, y], ...] (problem units), labelled for the physics, plus the magnitude (|B|, |E|, |F| or |J|). Components are x/y for planar and r/z for axisymmetric models. Magnetics keys: A, Bx/By (T), sigma (MS/m), energy_density (J/m^3), Hx/Hy (A/m), J_eddy, J_source (MA/m^2, verified), mux/muy (relative), P_ohmic, P_hyst (W/m^3), fill_factor. Complex (AC) values come back as {"re", "im"} (peak). A point outside the model gives outside=true. Up to a few hundred points per call is fine (~1 ms each).
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: units per key (T, A/m, MS/m, J/m^3, W/m^3, relative), complex AC values returned as {'re','im'} (peak), an explicit outside=true edge case for points off-model, and performance guidance (~1 ms per point, a few hundred per call). This is exactly the kind of context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the dense remainder consists entirely of load-bearing detail (units, keys, complex format, edge case, throughput) with no filler. It is a single wall of text without structural grouping, which slightly hurts scannability but not density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description ably documents return semantics, units, complex representation, and failure signaling, which is the core of this tool. The only shortfall is the unexplained 'session' parameter and the absence of any when-to-use routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clarifies the 'points' parameter as [[x,y],...] in problem units and pins coordinate conventions (x/y planar, r/z axisymmetric), which adds real meaning beyond the bare schema. The second parameter 'session' is never mentioned, leaving a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('field values at [[x, y], ...]') plus scope (problem units, labelled for the physics, plus magnitude). This clearly separates it from sibling point/integral tools like femm_block_integral, femm_line_integral, and femm_field_stats, which aggregate rather than sample.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content (sampling field quantities at discrete points), but the description never says when to prefer this over femm_eval, femm_field_stats, or the integral tools, nor any prerequisites. Reasonable but no explicit alternatives or when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_problem_defineA
Define the problem for the current physics (wraps xi_probdef with the right argument order).
units: millimeters|centimeters|meters|inches|mils|micrometers (aliases mm, cm, m, in, um).
problem_type: planar | axi (axisymmetric: x is r >= 0, y is z, depth ignored).
depth: out-of-plane length for planar models, in units (defaults to 1 unit with a warning:
set it! e.g. stack length). frequency (Hz): magnetics (0 = magnetostatic) and currentflow
only. precision: solver tolerance (1e-8 typical). min_angle: mesh quality, 30 deg default.
ac_solver: magnetics only, 0 or 1 (successive approximation / Newton; see manual 2.2.6).
prev_solution, time_step: heatflow transient only (previous .anh file, seconds).
Orders used: mi(freq,units,type,prec,depth,minang,acsolver); ei(units,type,prec,depth,minang);
hi(units,type,prec,depth,minang,prevsoln,dt); ci(units,type,freq,prec,depth,minang).
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| units | No | millimeters | |
| session | No | main | |
| ac_solver | No | ||
| frequency | No | ||
| min_angle | No | ||
| precision | No | ||
| time_step | No | ||
| problem_type | No | planar | |
| prev_solution | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers real behavioral context beyond the schema: the depth default emits a warning ('set it!'), parameters are physics-specific, and the argument order differs per physics via the 'Orders used' mapping. It still omits whether the call mutates/resets existing state or what failure modes look like, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then organized as a compact per-parameter key list plus the physics-specific argument orders. Dense but every line carries meaning for a 10-parameter tool; the 'Orders used' line is telegraphic but useful, not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-param, zero-annotation tool with no output schema, the description covers nearly all parameters, their defaults, and per-physics applicability. Missing pieces are the 'session' parameter, mutation/reset behavior, and error semantics, so it is strong but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains units (with aliases mm/cm/m/in/um), problem_type semantics ('planar | axi' with x=r>=0), depth, frequency, precision, min_angle, ac_solver, prev_solution and time_step. It leaves the 'session' parameter undocumented, which caps it below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Define the problem for the current physics', and adds that it wraps xi_probdef with the right argument order. An agent can tell this apart from femm_problem_info (introspection) and femm_new_document (creation). It stops short of naming any sibling explicitly, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (set up the physics before meshing/solving) and per-parameter applicability is given, e.g. 'frequency (Hz): magnetics and currentflow only' and 'prev_solution, time_step: heatflow transient only'. But there is no explicit when-to-use-vs-alternatives routing (e.g. relative to femm_new_document or femm_problem_info), leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_problem_infoB
Problem definition as FEMM reports it (xi_getprobleminfo, and xo_getprobleminfo after a solve: note the post-processor reports depth in metres), the geometry bounding box, and node/element counts when solved.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add real behavioral context: the underlying FEMM calls (xi_getprobleminfo / xo_getprobleminfo), the post-processor depth-units caveat (metres), and the fact that node/element counts appear only when solved. However it never states that this is a non-mutating read, nor what happens if no problem/document is open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that is front-loaded with the core resource and then layers the qualifiers. It is efficient, though the parenthetical with dual FEMM call names and the unit caveat packs a lot into one breath.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only info tool with no output schema and no annotations, the description covers the main return categories (problem definition, bounding box, node/element counts) and adds the unit nuance. It is largely complete, with only the session parameter and the no-problem-open behavior left uncovered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (session, default 'main') with 0% schema coverage, and the description never mentions it. For a single undocumented parameter the description should compensate by explaining the session concept, but it is silent, leaving meaning beyond the schema absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (problem definition info) and enumerates what is returned: the FEMM problem definition, the geometry bounding box, and node/element counts when solved. It is clear about scope, though it does not explicitly contrast itself with nearby read-only siblings such as femm_geometry_summary or femm_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied – an agent can infer this is the tool for querying the current problem setup, and the note 'after a solve' hints at the post-solve variant. There is no explicit when-to-use/when-not and no named alternative (e.g. femm_problem_define for setting vs this for reading).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_reportB
Write report.md + report.json (+ figures/) to <work_dir>/reports//.
include (default all): "model" (parsed model summary), "health" (femm_health_check on the
loaded solution), "field" (|B| map PNG from the bulk mesh arrays, zoom = [xmin, xmax, ymin,
ymax] in problem units), "experiments" (this session's experiment results, or the result
.json paths in experiment_files). Returns the paths; open report.md to read it.
| Name | Required | Description | Default |
|---|---|---|---|
| zoom | No | ||
| notes | No | ||
| title | No | FEMM analysis report | |
| include | No | ||
| session | No | main | |
| experiment_files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose the key side effect (writes report.md/report.json/figures to a timestamped dir) and the return shape ('Returns the paths'), which is useful. However it omits prerequisites, whether it requires a loaded solution, and error/failure behavior for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the concrete output destination, then enumerates the include options compactly. It is dense with no filler, though the parenthetical run-ons make it slightly harder to parse than a clean list would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description explains the outputs and return value reasonably well and is self-sufficient on the main path. Gaps remain around the un-described parameters and the preconditions for writing a valid report.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must supply all parameter meaning. It documents include values, the zoom format [xmin, xmax, ymin, ymax] in problem units, and experiment_files, but leaves notes, title, and session completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and concrete artifacts: write report.md + report.json (+ figures/) to <work_dir>/reports/<timestamp>/. This is unambiguous and clearly distinguishable from plotting/export siblings. It stops short of a 5 only because it never names a sibling alternative it competes with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the include options (model/health/field/experiments) suggest this is a consolidation step after solving or running experiments. There is no explicit when-to-use vs. alternatives (e.g., femm_make_plot, femm_compare_results) and no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_run_luaA
Run a legacy FEMM 4.2 Lua script unchanged with FEMM 5's bundled Lua 4 interpreter
(bin/femm-lua.bat on Windows: femm-lua -h -p <free port> script.lua args). It spawns its
own engine (not a session) and exits when done. VERIFIED on Windows with a small
newdocument/mi_probdef/mi_addnode/print script. Returns stdout/stderr/exit code. To port a
Lua script permanently, rewrite it with femm_run_script (MicroPython) instead.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| path | Yes | ||
| timeout | No | ||
| headless | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the tool spawns its own engine rather than attaching to a session, exits when finished, has been verified on Windows with a concrete script, and returns stdout/stderr/exit code. It does not explain timeout expiry behavior, what headless=false does, or failure modes, which keeps it just short of full marks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the invocation form, behavioral note, verification evidence, and the alternative — a logical order with no filler sentences. The parenthetical Windows command and the verification claim are dense but each earns its place; only the verification sentence is close to optional.
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 subprocess-execution tool with no annotations and no output schema, the description supplies the return shape (stdout/stderr/exit code), the engine-spawning semantics, and the alternative tool. Remaining gaps are the undocumented timeout/headless parameters and what happens on timeout, which a caller arguably needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all four parameters. It implicitly covers path (script.lua) and args (trailing arguments on the command line) but says nothing about timeout (default 600) or headless (default true), leaving half the parameters documented only by their bare schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (run a legacy FEMM 4.2 Lua script unchanged on FEMM 5's bundled Lua 4 interpreter) and even shows the exact invocation form. It explicitly distinguishes itself from the sibling femm_run_script, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the when (a legacy 4.2 Lua script that must run unmodified) and the when-not with a named alternative: 'To port a Lua script permanently, rewrite it with femm_run_script (MicroPython) instead.' It also clarifies this is not a session-based call, which routes the agent away from the femm_session_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_run_scriptA
Run a multi-line MicroPython script with FEMM's commands as globals (mi_addnode(...) etc.,
no femm. prefix). Give code or path (.py).
mode=inprocess (default): written to <work_dir>/scripts and executed inside this session's
engine with exec(open(p).read()) (VERIFIED on FEMM 5): it sees and changes the session's
model; set a global result (or result_var) to return a value; print() output is NOT
captured (the engine's stdout is discarded).
mode=batch: runs femm_headless --port <free> -run script.py args... as a separate engine
(fresh state, exits at the end); returns stdout, stderr and exit code (1 on a script
error, with the message in stderr). Use for long independent jobs or sys.argv-driven scripts.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| code | No | ||
| mode | No | inprocess | |
| path | No | ||
| session | No | main | |
| timeout | No | ||
| result_var | No | result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: it discloses that inprocess mutates the live session model, that print() output is discarded (engine stdout not captured), the result/result_var return mechanism, that batch uses fresh state and exits, and that batch returns stdout/stderr/exit code with code 1 on script error. These are exactly the non-obvious behavioral facts an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then structures mode behavior as labelled blocks (mode=inprocess / mode=batch). Dense but nearly every sentence carries information; the parenthetical 'VERIFIED on FEMM 5' is the only slightly editorial aside.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no annotations and no output schema, the description is substantially complete: it explains both execution modes, the return-value channel, and stdout behavior. The remaining omissions (session, timeout semantics) are modest but keep it short of full coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 params, so the description must compensate. It substantively covers code, path, mode, and result_var/result, and hints at args via 'sys.argv-driven scripts.' But session and timeout get no explicit meaning, leaving a real gap on a mutation-capable, no-annotation tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Run a multi-line MicroPython script with FEMM's commands as globals.' The naming of the global API surface (mi_addnode, no femm. prefix) makes it immediately distinguishable from siblings like femm_run_lua and femm_eval without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear mode-selection guidance: default inprocess for operating on the live session model, and batch explicitly for 'long independent jobs or sys.argv-driven scripts.' It lacks any explicit routing versus sibling script/eval tools (femm_run_lua, femm_eval, femm_call), but the internal when-to-use guidance is real and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_saveA
Save the current model (xi_saveas). path absolute or relative to the work dir; the
extension is added if missing. Without path: re-save the current file, or
<work_dir>/model. for a new model. femm_solve saves automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses extension auto-appending, absolute vs relative path resolution against the work dir, and the default filename for a new model. It omits overwrite semantics (e.g., what happens to an existing file), permission/auth requirements, and the return value.
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 no filler; the core action is front-loaded and the path branch, default fallback, and the femm_solve cross-reference each earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple save tool with no output schema and no annotations, the description covers the key decision (pass a path or not), the default target, and the relationship to femm_solve. Only minor gaps remain: the undocumented `session` parameter and overwrite/error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. `path` is thoroughly explained (absolute or relative, extension added if missing, default behavior when omitted), but the second parameter `session` is never mentioned, leaving a gap in the parameter contract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Save the current model') and even names the underlying API call (xi_saveas). It also distinguishes itself from femm_solve by noting that solve auto-saves, so an agent can tell these two apart without reading 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?
Clearly explains the behavioral branch: with `path` you target a specific file, without `path` you re-save the current file or fall back to <work_dir>/model.<ext>. It also tells the agent that femm_solve saves automatically, implying an explicit save is often unnecessary. It does not, however, contrast with other persistence siblings like femm_export_dxf or femm_export_pyfemm_script.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_save_bitmapA
Screenshot of the current view to an image file (xo_savebitmap / xi_savebitmap), .png or .bmp. VERIFIED: works only in a session opened with femm_session_open(headless=False) (a GUI window); the headless engine accepts the command but writes nothing. view: post (solution plot) or pre (geometry). density: show a density plot of plot_type (magnetics 'bmag','breal','bimag','hmag','jmag',...; electrostatics 0 V,1 |D|,2 |E|; heatflow 0 T,1 |F|,2 |G|; currentflow 0..8, 3 = |J|). Leave plot_type, lower and upper unset for FEMM's default auto-scaled plot (|B|, V, T or |J|); an explicit plot_type needs lower/upper limits. view='pre' after a solve switches focus back to the geometry window. contours: number of flux/equipotential lines. zoom: [x1, y1, x2, y2] or None = natural. For data plots that work headless use femm_make_plot or femm_mesh_arrays.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| view | No | post | |
| zoom | No | ||
| lower | No | ||
| upper | No | ||
| legend | No | ||
| density | No | ||
| session | No | main | |
| contours | No | ||
| grayscale | No | ||
| plot_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the headless no-op behavior, that view='pre' after a solve switches window focus, and that unset plot_type/lower/upper fall back to FEMM's auto-scaled default. It does not mention overwrite behavior for an existing path or what is returned on success/failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the critical headless caveat are front-loaded, and the parameter notes are packed densely with no filler sentences. The parenthetical enumerations of plot_type numeric codes are verbose but carry real information, so it stays on the right side of the conciseness line.
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 an 11-parameter, no-output-schema, no-annotation tool this covers nearly everything an agent needs to call it correctly and avoid the headless trap. The remaining omissions (path resolution, session, legend/grayscale toggles) are minor against the depth of what is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 11 parameters, so the description must compensate — and it explains the hard ones well: view semantics (post=solution plot, pre=geometry), the density/plot_type value encodings per physics type, the interaction that an explicit plot_type requires lower/upper, contours, and zoom format. It leaves legend, grayscale, session, and path undocumented, which is a modest but real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a concrete verb+resource (screenshot of the current view to an image file) and even names the underlying FEMM commands (xo_savebitmap / xi_savebitmap) plus supported formats. It is clearly distinguished from siblings like femm_export_dxf (vector geometry export) and femm_make_plot (headless data plots).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit precondition — 'VERIFIED: works only in a session opened with femm_session_open(headless=False)' — and states the failure mode (headless accepts but writes nothing). It also names the alternatives for the headless case: 'For data plots that work headless use femm_make_plot or femm_mesh_arrays.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_scale_selectedC
Scale the selection by factor about about=[x, y] (default origin).
| Name | Required | Description | Default |
|---|---|---|---|
| about | No | ||
| factor | Yes | ||
| session | No | main | |
| entities | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing beyond the mechanical transform. It does not say what happens when no selection exists, whether `session`/`entities` override the current selection, or whether the operation is immediate and irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb and its core parameters front-loaded and zero wasted words. It is efficient, though its brevity borders on under-specification for a 4-param mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% parameter coverage, this one-liner is inadequate. Two parameters and the selection/targeting semantics are left unexplained, so an agent cannot call it confidently beyond the required `factor`.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain `factor` and `about` (including the default-origin behavior), but `session` and `entities` are entirely undocumented in both schema and description, leaving half the parameters opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scale) and resource (the selection), with the operation's transformation described precisely via `factor` and `about`. This clearly distinguishes it from sibling selection ops like femm_move_selected, femm_copy_selected, and femm_mirror_selected, though it does not name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this versus the other selection-transform tools (move/copy/mirror). It implies usage from the name alone, with no prerequisites, exclusions, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_selectA
Select objects for a following edit (femm_move_selected, femm_delete_selected,
femm_set_group ...). kind:
nodes | segments | arcs | labels -> nearest object to each of points [[x, y], ...]
group -> every object in group
rectangle -> objects inside rectangle=[x1, y1, x2, y2]
circle -> objects inside circle=[cx, cy, R]
entities (rectangle/circle only): nodes|segments|labels|arcs|all.
Returns what FEMM reports for each pick (the coordinates of the selected object).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| group | No | ||
| circle | No | ||
| points | No | ||
| session | No | main | |
| entities | No | all | |
| rectangle | No | ||
| clear_first | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose the return behavior ('what FEMM reports for each pick... coordinates of the selected object'). But it omits meaningful traits: clear_first defaults to true (i.e. prior selection is wiped), session targeting, and what happens on an empty or failed pick. Useful but incomplete for a mutation-adjacent 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?
Purpose and downstream consumers are front-loaded, then the kind modes are laid out compactly with arrows and inline formats. The density is justified by the number of undocumented parameters, though the shorthand listing style is slightly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no annotations and no output schema, the description does solid work on selection modes and return values. It leaves clear_first and session unexplained, however, and clear_first in particular changes whether a call is additive or destructive — a notable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: it enumerates kind's five modes with their distinct behaviors, explains points/group/rectangle/circle shapes and the entities filter. Only session and clear_first go undocumented, which is a modest gap against strong overall coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Select objects') and immediately scopes it to its role as a precursor to edits, naming the exact consumer siblings (femm_move_selected, femm_delete_selected, femm_set_group). An agent can place it in the workflow without opening any other definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the context of use — building a selection that subsequent edit tools operate on — and lists the downstream alternatives. It does not, however, address when to prefer this over the sibling femm_select_block, nor any exclusion conditions, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_select_blockB
Post-processor block selection for femm_call('mo_blockintegral', [code]) workflows.
action=select clears, then selects the blocks containing points and/or groups;
action=clear clears the selection. (femm_block_integral does select+integrate+clear itself.)
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | ||
| action | No | select | |
| points | No | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses a non-obvious side effect: action=select clears the current selection before selecting. But it omits session semantics, error behavior, and return format, leaving significant behavioral ground uncovered for a state-mutating selection tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses, front-loaded with purpose followed by the action semantics. The parenthetical is informative rather than filler. Little waste, though it could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description should be more self-sufficient. It covers the core selection behavior but leaves the session param, failure modes, and downstream effect of the selection unexplained, making it only minimally adequate for a 4-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain all four params. It meaningfully clarifies points, group, and the action semantics (select/clear), but the session parameter is entirely undocumented in both schema and description, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Post-processor block selection') and ties it to the femm_call('mo_blockintegral') workflow. It also differentiates from the sibling femm_block_integral by noting that tool does select+integrate+clear itself. An agent can identify the tool's role, though the femm_call framing is somewhat indirect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes what action=select and action=clear do, which implies when to use each, and the parenthetical hints that femm_block_integral is the alternative for the full workflow. However, it never explicitly states 'use this when you need X vs Y' and gives no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_selftestA
End-to-end check of the install with a known answer (~1-2 s). In a separate session "selftest" it builds an axisymmetric thick solenoid (a=10 mm, b=12 mm, L=100 mm, 500 turns, 1 A), solves, and compares |B| at the centre with the analytic formula B0 = mu0Jl*ln[(b+sqrt(b^2+l^2))/(a+sqrt(a^2+l^2))] (expect < 1 % error). Also checks library material loading, the error path for a FEMM 4.2 name, current-density units, bulk getters, circuit results and timing. Returns pass/fail per check.
| Name | Required | Description | Default |
|---|---|---|---|
| keep_session | No | ||
| tolerance_pct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does a lot of work: it runs in a separate session named 'selftest', is fast (~1-2 s), exercises material loading, error paths, unit handling and timing, and returns pass/fail per check. This tells the agent it is isolated and safe, though it omits whether the session it creates is cleaned up or what side effects remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, then evidence follows. It is dense but every sentence adds specificity (dimensions, turns, formula, checked subsystems). The inline formula is verbose, but it is informative rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex diagnostic with no output schema and no annotations, the description explains what it checks and that it returns pass/fail per check, so return semantics are covered. Gaps remain around parameter behavior and session lifecycle, but the core call-correctness information 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?
Schema description coverage is 0%, so the description must explain both parameters and does not. keep_session is entirely unmentioned, and tolerance_pct is only obliquely referenced via 'expect < 1 % error' — which is confusing given the parameter default is 3. The description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: an end-to-end install check that builds an axisymmetric solenoid, solves it, and compares against an analytic formula. It is very concrete about scope and even quantifies the expected error. However, it never distinguishes itself from close siblings like femm_health_check or femm_status, so an agent cannot tell which of these self-check tools to reach for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: it is a diagnostic you would run to validate the install, and the '~1-2 s' note hints at cost. There is no explicit when-to-use versus femm_health_check, no prerequisites, and no guidance on when not to run it. Adequate but minimal context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_session_closeA
Quit the FEMM engine of session name (unsaved work is lost: call femm_save first).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, and it does disclose the key destructive trait: unsaved work is lost. That is exactly the kind of consequence an agent needs before invoking. It stops short of saying whether the session is removed from the session list or whether the closed engine can be reopened.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action ('Quit the FEMM engine') and parenthesizes the critical warning. Nothing is wasted and the destructive caveat is impossible to miss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a trivial single-parameter input, the description covers the essentials an agent needs: the target session, the fact that it is a teardown, and the required prior save. Remaining gaps (post-close session state, behavior on unknown name) are minor for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter has no description in the schema, so the description must compensate. It references `name` as the session identifier, which conveys intent, but omits the default value 'main' and what happens if the name does not match an open session. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Quit the FEMM engine of session `name`', which tells the agent this terminates an engine tied to a named session rather than a document. It does not explicitly distinguish itself from the nearby sibling femm_close_document, so an agent must infer the session-vs-document boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one explicit precondition ('call femm_save first') that makes safe usage actionable. However, it offers no guidance on when to use this versus femm_close_document or femm_session_list, and no note on what happens if the session name is invalid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_session_listB
All open sessions: port, pid, physics, document, solved flag, call/error counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the return shape (port, pid, physics, document, solved flag, call/error counts), which is genuinely useful, but says nothing about whether the operation is read-only, what happens when no sessions are open, or whether it can fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single telegraphic sentence that front-loads the resource and then lists the payload fields; nothing is wasted. It is slightly clipped to the point of being cryptic, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description does the important work of naming the returned fields. Only the empty/error case and the read-only nature are left unstated, which are minor gaps at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There is no parameter surface that the description needs to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('All open sessions') and enumerates the fields returned, so an agent knows exactly what it gets back. It does not differentiate itself from nearby siblings like femm_status, femm_health_check, or femm_problem_info, which could plausibly also report session state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no condition under which this tool is preferred over femm_status or femm_problem_info, and no stated exclusions. The agent must infer that it is for enumerating open sessions rather than checking the health of a single one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_session_openA
Start (or reuse) a named FEMM engine. Every other tool takes session (default "main")
and opens it lazily, so call this only to choose options.
headless=True spawns femm_headlessw (no window, fastest). headless=False opens the
femm_gui window: needed for femm_save_bitmap (screenshots are not written headless).
attach=True connects to an engine already listening on port (e.g. a GUI the user
started) instead of spawning one. work_dir is the engine's current directory; relative
paths in other tools resolve there (default ~/femm-agent-work/, env FEMM_AGENT_WORK).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | main | |
| port | No | ||
| attach | No | ||
| headless | No | ||
| work_dir | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it discloses a lot: process spawn behavior (femm_headlessw, no window, fastest), a cross-tool dependency (screenshots require headless=False), attach/host semantics, and working-directory/default/env-var behavior. It does not cover error modes or what happens when a same-named session already exists with conflicting options.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and routing constraint in the first sentence, then organized into per-flag clauses. Every sentence earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param, no-annotation, no-output-schema session opener, the description is rich enough to invoke correctly, including defaults and the env-var-backed work_dir. Minor gaps: no statement of the return value or reuse/error behavior, but the 'session' handle convention is already established by sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does address most parameters: name (named engine, default 'main'), port (in the attach clause), attach, headless, and work_dir (engine cwd, default ~/femm-agent-work/<name>, env FEMM_AGENT_WORK). It adds real semantics beyond the bare typed schema, though types/format for port and work_dir remain thin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb+resource ('Start (or reuse) a named FEMM engine') and explicitly distinguishes it from every sibling by noting that all other tools take `session` and open lazily. An agent can tell this tool apart from femm_session_close/femm_session_list without opening any 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?
It gives an explicit when-to-use rule ('call this only to choose options') and the alternative (lazy implicit open by other tools). It then routes each option: headless=True/False with the femm_save_bitmap caveat, and attach=True for an already-listening engine. When/when-not plus alternatives are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_set_arc_propB
Select the arcs nearest each of points and set discretisation (max_seg_deg, degrees per
straight piece; air gaps want <= 1), boundary name, hide flag, group, (non-magnetics) conductor.
| Name | Required | Description | Default |
|---|---|---|---|
| hide | No | ||
| group | No | ||
| points | Yes | ||
| session | No | main | |
| boundary | No | ||
| conductor | No | ||
| max_seg_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that max_seg_deg is 'degrees per straight piece' and that air gaps want <= 1, and hints that conductor applies only to non-magnetics problems. However, it says nothing about what happens to existing arc properties, error behavior when no arc is near a point, or mutation intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the key selection behavior front-loaded and the parameter list following. It is efficient, though mildly run-on and could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers the core operation and one important parameter semantic, but omits the session parameter and any statement of mutation/overwrite behavior, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It maps most fields (points, max_seg_deg, boundary, hide, group, conductor) but only genuinely explains max_seg_deg with the air-gap guidance; the rest are name-only restatements, and the session parameter is entirely absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (set) and resource (arcs) and clarifies the selection mechanism: 'the arcs nearest each of `points`'. This lets an agent distinguish it from femm_set_segment_prop and femm_set_node_prop, which act on different geometry. It stops short of an explicit sibling contrast but is otherwise precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives. It never mentions that segments should use femm_set_segment_prop or that points use femm_set_node_prop, nor any preconditions. The only contextual hint is the 'arcs nearest points' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_set_block_propB
Change the properties of the existing block label nearest (x, y) (same arguments as femm_add_block_label). Use to swap materials or currents between solves.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| group | No | ||
| turns | No | ||
| magdir | No | ||
| circuit | No | ||
| session | No | main | |
| material | Yes | ||
| mesh_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load, and it does disclose that this is a mutation of an existing entity selected by proximity. However, it omits critical behavior: what happens if no block label is near (x, y), and whether omitted optional parameters (group, turns, magdir, circuit, mesh_size) are left untouched or reset to defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the operation front-loaded and the use case second; nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations, no output schema, and zero schema documentation, the description is too thin. It should at minimum describe the failure mode when no nearby label exists and which parameters are overwritten versus preserved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description must compensate, and it largely does not. "Same arguments as femm_add_block_label" defers to another tool's schema for x, y, group, turns, magdir, circuit, session, and mesh_size, and only the vague notion of "materials or currents" hints at material/turns 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?
States a specific verb and resource ("Change the properties of the existing block label") plus a spatial targeting rule ("nearest (x, y)"). The word "existing" implicitly separates it from the sibling femm_add_block_label, which creates labels, so an agent can distinguish the two.
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?
"Use to swap materials or currents between solves" gives a concrete scenario for reaching for this tool over alternatives. It offers no explicit when-not conditions or prerequisites, but the intended workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_set_commentC
Store a free-text comment/description in the model file (xi_setcomment). Single line.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral disclosure burden. It implies a write mutation that stores text in the model file and notes a single-line limit, but it does not state whether it overwrites an existing comment, whether it requires an open document/session, or what happens on success or failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or redundancy. It is appropriately sized for a simple setter tool, even though it omits important details that belong in other dimensions.
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 annotations, no output schema, and 0% parameter description coverage, the definition is under-specified. It does not explain the session parameter, the mutation behavior, or how the comment relates to the model file lifecycle, leaving notable gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for both parameters. It loosely describes the 'comment' parameter as free text and adds a single-line constraint, but it says nothing about the 'session' parameter or its default value of 'main'.
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 ('Store') and resource ('free-text comment/description in the model file') and even names the underlying API call (xi_setcomment). It is clear what the tool does, though it does not explicitly differentiate itself from sibling setter tools such as femm_set_group or femm_set_block_prop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus alternatives or under what conditions it should be called. It only states what it stores and the 'Single line' constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_set_groupB
Put the selected objects into group number group (used for moving rotors, for
femm_block_integral(group=...) and femm_field_stats(region='group:N')).
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | ||
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It hints at a state dependency ('the selected objects') but says nothing about whether existing group membership is overwritten, what group 0 means, permission requirements, or error behavior on an empty selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the action comes first and the explanatory parenthetical follows. The cross-references are dense but each earns its place by clarifying the group identifier's downstream use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers purpose and group semantics reasonably but omits session scoping and overwrite/state behavior. Adequate but with clear gaps an agent would want filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 2 parameters, so the description must compensate. It does add genuine meaning for `group` by tying it to femm_block_integral(group=...) and femm_field_stats(region='group:N'), but the `session` parameter (default 'main') is entirely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Put') and resource ('the selected objects') plus the effect (into group number `group`), so the action is unambiguous. It does not, however, contrast itself with siblings like femm_select or femm_move_selected, so it falls short of the top-tier sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical implies when groups matter (moving rotors, femm_block_integral, femm_field_stats) which gives useful downstream context. But there is no explicit when-to-use vs alternatives and no stated precondition that objects must first be selected/created.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_set_node_propB
Select the nodes nearest each of points and set a point property (from
femm_add_point_prop, "" = none), group and (non-magnetics) conductor.
| Name | Required | Description | Default |
|---|---|---|---|
| prop | No | ||
| group | No | ||
| points | Yes | ||
| session | No | main | |
| conductor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It implies a mutation (setting properties overwrites prior values) but never states reversibility, whether existing node properties are cleared, required document/session state, or what is returned. For a write tool with zero annotation coverage this is a clear gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the selection behavior comes before the property assignment. The nested parentheticals make it slightly dense to parse but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation with no annotations and no output schema, the description covers most parameters and the nearest-node behavior. It still omits the `session` parameter, any document-state prerequisite, and mutation side effects, leaving the agent to infer too much about correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for most fields: `points` (coordinates used for nearest-node matching), `prop` (must come from femm_add_point_prop, with "" meaning none), `group`, and `conductor` (and its non-magnetics scope) are all addressed. Only `session` is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb-and-resource pair (set node property) and clarifies the non-obvious selection semantics: it acts on the nodes *nearest* each point rather than exact matches. This distinguishes it from the sibling property setters (femm_set_segment_prop, femm_set_arc_prop, femm_set_block_prop) by entity type, though it never says so explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use vs alternatives statement. The parenthetical '(from femm_add_point_prop, "" = none)' implies a prerequisite — the property must already exist — which is genuine usage context, but the condition for choosing this tool over other prop setters is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_set_segment_propB
Select the segments nearest each of points (e.g. midpoints) and set boundary name ("" = none),
mesh_size (max element size along the segment; None = automatic), hide-in-postprocessor flag,
group, and (non-magnetics) conductor name.
| Name | Required | Description | Default |
|---|---|---|---|
| hide | No | ||
| group | No | ||
| points | Yes | ||
| session | No | main | |
| boundary | No | ||
| conductor | No | ||
| mesh_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses nearest-match targeting and value conventions (''=none for boundary, None=automatic for mesh_size), but omits whether this mutates existing geometry, requires prior selection, or persists across sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core action and targeting behavior before enumerating field meanings. Every clause carries information, though the packed parentheticals make it slightly hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers field meanings but leaves the 'session' parameter and mutation/persistence semantics unexplained. Adequate but not fully 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?
With schema coverage at 0%, the description compensates by explaining 6 of 7 parameters: points (nearest-segment targeting), boundary, mesh_size, hide flag, group, and conductor. Only the 'session' parameter is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('set segment properties') and clarifies the targeting mechanism ('select the segments nearest each of points'). This distinguishes it from siblings like femm_set_arc_prop and femm_set_node_prop by naming the segment target, though it never explicitly contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not guidance. The parenthetical '(e.g. midpoints)' hints at how points are chosen, but nothing tells the agent when to pick this tool over femm_set_arc_prop, femm_set_node_prop, or a direct selection/modify workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_smartmeshA
Smart meshing (automatic refinement near small features). state: on | off | default. scope: document (xi_smartmesh, saved with the model) or global (smartmesh(), whole engine; 'default' defers to each file). Turn off for very large models to cut element count, then set mesh sizes explicitly on block labels.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | document | |
| state | No | on | |
| session | No | main |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose key behavioral traits: the persistence difference between document scope (saved with the model) and global scope (whole engine), and that 'default' defers to each file. The side effect (cutting element count) is also surfaced. It doesn't cover the session parameter or rate/permission concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then lists the two meaningful parameters' values, then the usage rule. Four tight clauses with no padding; there is no better ordering for this 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 config setter with no output schema and no annotations, the description covers purpose, allowed values, scope persistence, and usage guidance. The only missing piece is the session parameter. Nothing else an agent needs to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema offers no enums, so the description must compensate. It does so for two of three params: it enumerates state values (on | off | default) and explains scope values with their storage semantics. The session parameter is left undocumented in both schema and description, which is the remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (smart meshing) and immediately parenthesizes its function: 'automatic refinement near small features.' That defines the operation precisely enough to act on. It does not explicitly contrast with mesh-related siblings like femm_create_mesh or femm_mesh_arrays, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use rule: 'Turn off for very large models to cut element count, then set mesh sizes explicitly on block labels.' That is real operational guidance, not just implied usage. It does not name alternatives or exclusions beyond this one case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_solveA
Save, solve and load the solution in one call (xi_saveas + xi_analyze + xi_loadsolution). path: where to save (default: current file or <work_dir>/model.). timeout in seconds for the solver (AC/nonlinear models with >100k elements can take minutes). Returns solve time, node and element counts and the solution file. After this the post-processing tools (femm_point_values, femm_block_integral, femm_circuit_results, ...) work. Re-run after every geometry/material/current change: the loaded solution does not update itself.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| session | No | main | |
| timeout | No | ||
| hide_window | No | ||
| load_solution | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses that this is a composite of three operations, that solving can be slow for large AC/nonlinear models, and critically that a loaded solution goes stale and does not self-update after changes. It omits what happens to any existing file on disk and any permission/auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and keeps the parameter notes tight, with no redundant sentences. It reads as a dense run-on block, but each clause adds actionable 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?
Compensates for the missing output schema by enumerating return values (solve time, node/element counts, solution file) and describes the post-condition for downstream tools. What holds it back is the three undocumented parameters, notably the load_solution toggle that materially changes the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and only 2 of 5 params are addressed: 'path' (with default resolution) and 'timeout' (with a rationale for large models). 'session', 'hide_window', and especially 'load_solution' — which contradicts the tool's own 'load the solution' framing by being togglable — are left entirely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific compound verb set (save, solve, load) on a specific resource (the solution), and even names the underlying API calls (xi_saveas + xi_analyze + xi_loadsolution). This clearly distinguishes it from single-purpose siblings like femm_save, femm_load_solution, and femm_create_mesh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use rule ('Re-run after every geometry/material/current change') and a downstream precondition ('After this the post-processing tools ... work'). It does not explicitly name alternatives (e.g. calling femm_load_solution alone) or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_statusA
Where FEMM 5 is installed, its version, open sessions, work dir, catalog/material counts.
Call this first. If install.found is false, nothing else can run: install FEMM 5
(https://www.femm.info) or set FEMM_DIR to the folder holding femm_headless.
check_version runs femm_headless --version once (cached, ~0.3 s).
| Name | Required | Description | Default |
|---|---|---|---|
| check_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and mostly succeeds: it discloses that check_version shells out once and is cached (~0.3 s), and it explains the hard dependency failure mode plus remediation (install FEMM 5 or set FEMM_DIR). It stops short of stating the operation is read-only/non-mutating or describing the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the payload, then the sequencing directive, then the failure path and the parameter cost. Every sentence earns its place, though the parameter sentence could be folded more tightly into the first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must enumerate return content, and it does name the key fields (install path, version, sessions, work dir, counts, install.found). For a diagnostic tool with zero annotations this is nearly complete, missing only fuller return-shape detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single parameter. It does: check_version is explained as running `femm_headless --version` once, cached, at ~0.3 s cost, which is exactly the latency tradeoff an agent needs to decide the default. More detail on what happens when it is false is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names concrete outputs (install location, FEMM 5 version, open sessions, work dir, catalog/material counts), so an agent knows exactly what this returns. It does not, however, distinguish itself from closely related siblings such as femm_health_check or femm_selftest, which an agent might reasonably reach for 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?
"Call this first" is an explicit, actionable sequencing directive, and the failure branch (if install.found is false, nothing else can run) tells the agent how to react. It lacks any when-not guidance or comparison against femm_health_check/femm_selftest, so it falls short of the 5 tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
femm_units_convertA
Unit conversions used with FEMM. conversion='length' needs from_unit/to_unit among inches, millimeters, centimeters, mils, meters, micrometers (aliases mm, in, um ...). Others (value in, result out): deg2rad, rad2deg, rpm_to_rad_s, awg_diameter_mm (AWG gauge -> mm, pyFEMM AWG()), iec_diameter_mm, tesla_to_gauss, gauss_to_tesla, oersted_to_a_per_m, a_per_m_to_oersted, hc_from_br (T -> A/m, needs mu_r, default 1.05), br_from_hc, br_from_mgoe / hc_from_mgoe (grade -> Br or Hc for mi_addmaterial), mgoe_from_br, mgoe_to_j_per_m3.
| Name | Required | Description | Default |
|---|---|---|---|
| mu_r | No | ||
| value | Yes | ||
| to_unit | No | ||
| from_unit | No | ||
| conversion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the valid conversion names, the aliases accepted for length units, the input/output model ('value in, result out'), and a concrete default (mu_r defaults to 1.05 for hc_from_br). It stops short of describing behavior on invalid conversion names or the exact return type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose followed by a dense but efficient enumeration of conversions and their requirements. The list is long, but each entry (with its arrow notation and dependency notes) carries distinct information, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter pure-function tool with no output schema and no annotations, the description covers inputs, valid conversions, dependencies, and defaults well enough to invoke correctly. The main residual gap is the exact shape/type of the returned result, only hinted at by 'value in, result 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?
Schema description coverage is 0%, so the description must compensate, and it largely does: conversion is enumerated with valid values, from_unit/to_unit are constrained to a unit set with aliases, mu_r's role and default are explained, and value is described via the input/output convention. Given zero schema-level documentation this is meaningful coverage, though the full set of conversion options is only partially mapped to their required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Unit conversions used with FEMM') and enumerates the conversion families it supports, so an agent immediately knows this is a standalone conversion utility. It is naturally unique among siblings (no other tool does unit conversion), so sibling differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (convert values before feeding them into FEMM calls like mi_addmaterial, material definitions, etc.) and it gives the dependency that conversion='length' requires from_unit/to_unit. However, it never states when to prefer this over alternatives such as computing inline via femm_eval, and there are no explicit when-not conditions.
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.
88 tool updates
v0.1.0- First observed
femm_add_arcs - First observed
femm_add_block_label - First observed
femm_add_boundary - First observed
femm_add_circuit - First observed
femm_add_conductor - First observed
femm_add_nodes - First observed
femm_add_point_prop - First observed
femm_add_segments - First observed
femm_api_get - First observed
femm_api_search - First observed
femm_block_integral - First observed
femm_build_benchmark - First observed
femm_call - First observed
femm_check_rule - First observed
femm_circuit_results - First observed
femm_clear_selected - First observed
femm_close_document - First observed
femm_compare_results - First observed
femm_copy_selected - First observed
femm_create_mesh - First observed
femm_delete_selected - First observed
femm_draw_circle - First observed
femm_draw_polygon - First observed
femm_draw_polyline - First observed
femm_draw_rectangle - First observed
femm_estimate - First observed
femm_eval - First observed
femm_examples_list - First observed
femm_experiment_ac_sweep - First observed
femm_experiment_backemf - First observed
femm_experiment_bh_check - First observed
femm_experiment_cogging - First observed
femm_experiment_force_vs_position - First observed
femm_experiment_inductance - First observed
femm_experiment_parametric - First observed
femm_experiment_torque_vs_angle - First observed
femm_export_dxf - First observed
femm_export_pyfemm_script - First observed
femm_facts - First observed
femm_field_stats - First observed
femm_file_summary - First observed
femm_gap_results - First observed
femm_geometry_summary - First observed
femm_health_check - First observed
femm_import_dxf - First observed
femm_journal - First observed
femm_line_integral - First observed
femm_load_solution - First observed
femm_make_plot - First observed
femm_manual_section - First observed
femm_material_add - First observed
femm_material_add_bh - First observed
femm_material_get - First observed
femm_material_load - First observed
femm_material_modify - First observed
femm_material_search - First observed
femm_mesh_arrays - First observed
femm_mirror_selected - First observed
femm_modify_circuit - First observed
femm_move_selected - First observed
femm_new_document - First observed
femm_open - First observed
femm_plot_field - First observed
femm_point_values - First observed
femm_problem_define - First observed
femm_problem_info - First observed
femm_report - First observed
femm_run_lua - First observed
femm_run_script - First observed
femm_save - First observed
femm_save_bitmap - First observed
femm_scale_selected - First observed
femm_select - First observed
femm_select_block - First observed
femm_selftest - First observed
femm_session_close - First observed
femm_session_list - First observed
femm_session_open - First observed
femm_set_arc_prop - First observed
femm_set_block_prop - First observed
femm_set_comment - First observed
femm_set_group - First observed
femm_set_node_prop - First observed
femm_set_segment_prop - First observed
femm_smartmesh - First observed
femm_solve - First observed
femm_status - First observed
femm_units_convert
TDQS
Scored across 88 tools
Despite 88 tools, most have clearly distinct purposes and detailed descriptions that clarify scope. However, several overlapping families exist—plotting (make_plot, plot_field, save_bitmap), field extraction (point_values, block_integral, line_integral, mesh_arrays, field_stats), and reference (api_get, api_search, manual_section, facts)—where an agent could misselect without careful reading.
All tools use the femm_ prefix and snake_case with consistent verb_noun patterns (e.g., femm_add_nodes, femm_solve, femm_experiment_torque_vs_angle). A few noun-only names like femm_status are still predictable and readable.
88 tools is far beyond the recommended 3–15 and exceeds even the 25+ 'too many' threshold, representing an extreme mismatch for a single MCP server. Many tools could be consolidated or exposed through a more compact workflow layer.
The surface covers the full FEMM lifecycle: document creation, geometry, materials, boundaries, meshing, solving, extensive post-processing, parametric experiments, reporting, and a generic femm_call/femm_eval escape hatch for any missing command. No obvious dead ends for the domain.
Maintenance
Related MCP Connectors
- OwlCADOAuthcom.owlcad
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
AI-callable calculators and engineering models with real formulas. No hallucinated math.
Discover, inspect and run 63,000+ agent tools from one balance. Pay per call, no subscriptions.
60+ Meta Ads tools for AI agents: audits, campaign management, audiences and CAPI tracking.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables AI agents to automate multiphysics simulations in COMSOL Multiphysics, covering model management, geometry building, physics configuration, and results visualization. It supports complex simulation workflows through the MCP protocol and includes integrated knowledge retrieval for documentation and troubleshooting.93848MIT
- FlicenseNot gradedqualityDmaintenanceProvides specialized tools for electromagnetics and magnetic circuit analysis, including field calculations, material property lookups, and unit conversions. It enables AI agents to perform precise physics computations and reason through complex engineering problems using real-world equations.-
- AlicenseCqualityCmaintenanceEnables AI agents to read and write .mph model files, control the COMSOL desktop GUI in real time, and run complete modeling, meshing, solving, and post-processing workflows.231MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to automate COMSOL Multiphysics simulations, covering model management, geometry building, physics configuration, meshing, solving, and results visualization via the Model Context Protocol.MIT