MCP-ADAPTER
Automates Altium Designer headlessly by running DelphiScript projects through X2.EXE (-RScriptFile/-RProcName), and exposes a searchable catalog of Altium commands, APIs and script functions (21 categories, 735 entries) with syntax, parameters and examples.
Provides headless automation of AMD Vivado Design Suite via Tcl batch mode (vivado -mode batch -source), Hardware Manager operations and vitis_hls, returning structured JSON results, plus a catalog of Vivado Tcl commands and APIs (19 categories, 699 entries).
Runs Ansys HFSS / Ansys Electronics Desktop headlessly with IronPython scripts (ansysedt -ng -RunScriptAndExit, -BatchSolve) and PyAEDT, capturing simulation output as structured JSON, plus a catalog of HFSS scripting objects and commands (15 categories, 502 entries).
Drives Autodesk AutoCAD in batch through accoreconsole.exe scripts, AutoLISP, DXFOUT, -PLOT and COM SendCommand automation, returning structured results, with a searchable catalog of AutoCAD commands and APIs (30 categories, 1232 entries).
Runs COMSOL Multiphysics batch jobs via comsolbatch (studies, parameter lists, model methods), comsol compile and MPh Python automation, plus a catalog of COMSOL APIs and Application Library features (128 categories, 3836 entries, verified against a local installation).
Creates draw.io / diagrams.net diagrams by generating mxGraph XML in pure Python and exporting them with the desktop CLI, and exposes a catalog of draw.io features (12 categories, 470 entries).
Automates Autodesk EAGLE through eaglecon CAM jobs, editor commands (-C) and direct reading of EAGLE XML design files (BOM, netlist), and provides a catalog of EAGLE commands and ULPs (19 categories, 853 entries, verified against EAGLE 9.6.0).
Integrates the Proteus Design Suite (ISIS schematic capture, VSM simulation, ARES PCB layout) by launching the GUI, passing custom CLI commands and inspecting .pdsprj project files, with a catalog of Proteus features (11 categories, 397 entries).
Evaluates Wolfram Mathematica code headlessly through wolframscript (-code / -file) and Export[], returning results as structured JSON, plus a searchable catalog of Mathematica functions and usage (77 categories, 2458 entries).
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., "@MCP-ADAPTERsearch the catalog for MATLAB commands that export a figure as PNG"
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.
MCP-ADAPTER
A single Model Context Protocol server that gives AI agents two things for fourteen engineering and design applications:
A comprehensive tool catalog – what each application can do, how every tool/command/function is used, with syntax, parameters, a runnable example and a documentation link. Fully searchable through MCP tools.
Headless automation adapters – run the real application when it is installed (batch/script mode), capture its output and return structured JSON.
Plus a timezone-aware time tool and an optional live documentation search (Tavily).
Network exposure: read this before installing.
With the default stdio transport this server opens no network port. With --transport streamable-http
or sse it listens on a TCP port, and Windows Firewall will ask whether to allow inbound connections to
Python. If you use it locally, you MUST deny that prompt. Loopback traffic is never filtered by the firewall,
so everything keeps working and nothing becomes reachable from other machines.
The choice is also enforced in code, not only by the firewall: in the default local mode the server refuses
to bind anything but 127.0.0.1 and rejects requests whose Host header is not localhost, and tools that call
external web APIs are not even registered. Pick the mode once with mcp-adapter-setup and change it any time in
.env. Details: Security and network policy.
Application | Catalog id | Automation mechanism used by the adapter |
MATLAB |
|
|
Simulink |
| MATLAB API ( |
Wolfram Mathematica |
|
|
COMSOL Multiphysics |
|
|
Adobe Photoshop |
| ExtendScript/JSX via COM ( |
Cadence OrCAD (Capture, PSpice, PCB Editor) |
|
|
Altium Designer |
|
|
Proteus Design Suite |
| GUI launch, custom CLI pass-through, |
AMD Vivado |
|
|
Autodesk AutoCAD |
|
|
Ansys HFSS (Electronics Desktop) |
|
|
Autodesk EAGLE (retired June 2026) |
|
|
draw.io / diagrams.net |
| pure-Python mxGraph XML generation + desktop CLI export |
Catalog size
Software | Vendor | Reference version | Categories | Catalog entries |
MATLAB | MathWorks | R2025a | 62 | 2099 |
Wolfram Mathematica | Wolfram Research | 14.2 | 77 | 2458 |
COMSOL Multiphysics | COMSOL AB | 6.4 (verified against a local installation: help, completion data, plugins and Application Library) | 128 | 3836 |
Adobe Photoshop | Adobe | 2025 (v26) | 23 | 734 |
Cadence OrCAD / OrCAD X (Capture, PSpice, PCB Editor) | Cadence Design Systems | OrCAD X 23.1 / 24.1 | 17 | 614 |
Altium Designer | Altium | 24/25 | 21 | 735 |
Proteus Design Suite (ISIS schematic capture, VSM simulation, ARES PCB layout) | Labcenter Electronics | 8.17 / 9 | 11 | 397 |
AMD Vivado Design Suite | AMD (Xilinx) | 2024.2 / 2025.1 | 19 | 699 |
Autodesk AutoCAD | Autodesk | 2025 / 2026 | 30 | 1232 |
Ansys HFSS (Ansys Electronics Desktop) | Ansys | 2025 R1 | 15 | 502 |
Simulink | MathWorks | R2025a | 18 | 573 |
draw.io (diagrams.net) | JGraph Ltd | 26.x desktop | 12 | 470 |
Altair Feko | Altair Engineering | 2025.1 (verified against a 2026.1 installation and the online reference) | 13 | 465 |
Autodesk EAGLE | Autodesk (originally CadSoft Computer) | 9.6.0 (verified against a local 9.6.0 installation, its built-in help and manuals; the last release was 9.6.2) | 19 | 853 |
Total | 15667 |
Catalogs live in mcp_adapter/catalogs/<software>/ as plain JSON, one category per file,
following CATALOG_SCHEMA.md. They were compiled from the vendors' official documentation
(MathWorks, Wolfram, COMSOL, Adobe, Cadence, Altium, Labcenter, AMD, Autodesk, Ansys, Altair, JGraph) and every entry
records name, kind, description, usage, parameters, example, notes and docs.
Related MCP server: AutoCAD MCP Pro
Installation
git clone https://github.com/Babak-Solhjoo/MCP-ADAPTER-PV.git
cd MCP-ADAPTER-PV
python -m pip install -e ".[dev]"
mcp-adapter-setup # answer two questions: local-only or network? internet tools on or off?mcp-adapter-setup writes the answers to .env (creating it from .env.example if needed) and prints what
they mean for the firewall. Skipping it is safe: the defaults are local-only and internet tools off.
Requirements: Python 3.10+, the mcp SDK (1.x and 2.x are both supported). Nothing else is needed for the
catalog and time tools. For automation, the corresponding application must be installed on the same machine.
Security and network policy
The firewall is the last line of defence, not the only one. Two switches in .env decide what the server may
do on the network, and the server enforces them itself at start-up and on every request:
Setting | Values | Effect |
|
|
|
| comma list |
|
| random string (24+ characters) | Bearer token for the HTTP transports. Required in |
|
| When |
What each transport does:
stdio(default) – the MCP client startsmcp-adapteras a child process and talks over pipes. No socket is opened, no firewall prompt can appear for it.streamable-http/sse– a TCP listener. Inlocalmode it is bound to127.0.0.1only. Windows Firewall may still show its "allow access" dialog the first time Python listens; deny it for local use (loopback traffic is exempt from firewall rules, so the server keeps working).
Check and change the policy at any time:
mcp-adapter --print-policy # effective policy as JSON
mcp-adapter-setup --show # current .env answers
mcp-adapter-setup # interactive: re-answer the questions
mcp-adapter-setup --non-interactive --mode local --allow-internet noOr edit the keys in .env directly and restart the server. Agents can call the security_policy tool to see
which mode is active and why some tools are missing.
Note that the Claude desktop app and other MCP clients have their own local helper listeners and may trigger their own firewall prompts; those are unrelated to this server and can equally be denied for local use.
What an MCP client can do with this server
Treat every connected client (and the model behind it) as someone sitting at your keyboard:
The automation tools run the installed applications with your user rights, and several of them execute code by design (
matlab_run_code,mathematica_evaluate,comsol_run_python,vivado_run_tcl,autocad_run_lisp,hfss_run_script,altium_run_delphiscript,photoshop_run_jsx, ...). Connect only clients you trust, and switch off the applications you do not need (MCP_ADAPTER_ENABLE_<APP>=falseor the Applications page).workspace_run(only registered when you switch on full folder access for a task) runs shell commands with the task folder as working directory; it is not a sandbox.The output-folder checks (
set_output_folder) prevent mistakes such as writing into system folders or network shares; they do not confine the code-running tools above.API keys and the auth token live only in
.env, which is git-ignored; the UI accepts them write-only.The workspace UI binds
127.0.0.1only and needs a per-session token on every API call, so other machines and other web pages cannot use it.
See SECURITY.md for how to report a vulnerability.
Where results are written
When you give a task a folder, the adapter writes its files into that folder, not into its own outputs folder.
Claude Desktop and other long-running clients: the server starts once, before any task exists. The server instructions therefore tell the agent to call
set_output_folder("D:\\Projects\\PCB")first whenever the user gives or grants a folder. From then on every generated script, netlist, log and result goes there, and relative paths in tool arguments are resolved inside it. Each application uses its own subfolder, for exampleD:\Projects\PCB\orcad, unlessper_application_subfoldersis false. An empty folder goes back to the default.Tasks started from the workspace UI or
mcp-adapter-agent --work-dir: the server is started for that task with the folder as its output folder, so nothing needs to be called.No folder given: files go to
MCP_ADAPTER_OUTPUT_DIR(defaultoutputs/in the repository).
The folder is checked in code before it is used:
it must be an absolute path to an existing, writable folder on a local disk; the adapter never creates it;
drive roots, the home folder itself, hidden folders, Windows/program/ProgramData/AppData folders and the adapter's own source folder are refused;
network locations (UNC paths and mapped network drives) are refused, so results stay on this machine;
MCP_ADAPTER_OUTPUT_ROOTSin.env(folders separated by;) restricts the choice to those folders;a server started for one task working directory accepts only folders inside it.
These checks prevent mistakes; they are not a sandbox, because the scripting tools (MATLAB, Mathematica, COMSOL
Java, Tcl, DelphiScript) run code with your user rights anyway. The setting belongs to the server process, so in
Claude Desktop it applies to every chat until it is changed, reset or the app restarts. adapter_status and
security_policy show the current folder and its source.
Workspace UI (chats, settings, applications)
python -m mcp_adapter.ui.server # or: mcp-adapter-uiThis starts a tiny local web server, prints workspace UI at http://127.0.0.1:8765/ and opens the page in your
browser (--no-browser to only print the address, --port 9000 to change the port). It runs until Ctrl+C; all
settings live in .env and chats are stored as JSON under outputs/chats/, so nothing is lost when it stops.
The page has three tabs:
Chat - a Claude-desktop-like workspace, no other client needed:
a sidebar with your chats; + New chat creates another one. Chats run in parallel, each with its own agent run and its own MCP server process, and each keeps its conversation history (later messages see the earlier turns).
the conversation in the middle: your messages, the agent's answers (with "view steps" to open the run's report), and, while it works, every tool call and result live. Approve / Deny buttons appear when the chat has "Approve calls" switched on.
the message box at the bottom with small option chips: Model (one dropdown with the models of every provider connected in Settings), Effort, the working folder (type a path or Browse... for the native folder dialog), Folder access, Approve calls, Reasoning and Max turns. Chip changes are saved to the chat immediately and become the defaults for new chats.
Folder access grants the agent full access inside that folder only: the MCP server registers the
workspace_*tools (list, read, write, move, delete, search, andworkspace_runfor shell commands with the folder as working directory). Nothing outside the folder is reachable; keep it off for untrusted tasks. All files the tools generate, and the run reports (agent-reports/), land in that folder.
Settings:
Model providers - Anthropic and OpenAI keys (write-only), a light per provider: green = key stored and the provider answered, orange = key stored but not verified/unreachable, red = no key; Test re-checks and refreshes the live model list. Models of every provider with a key appear in the chat's model dropdown.
MCP server for other LLM apps - use these applications from Claude Desktop, Claude Code, Cursor, VS Code and similar: ready-to-copy config for stdio clients (they start the server themselves) and a Start endpoint button that runs the server as a local HTTP MCP endpoint (
http://127.0.0.1:8766/mcp, loopback only, optional autostart with the UI) for clients that connect to a URL. An optional default working folder plus access switch applies to those external apps. ChatGPT's connectors need a server on the public internet, so a localhost endpoint is not visible to them without a tunnel, which is outside the local-only policy here.Security & network policy, adapter mode, timeout and output folder, as described above.
Applications - the grid with an on/off switch, real icon (read from the installed executable on Windows), detection status and executable path fields per application; Re-detect and Save live in the header.
The UI is hardened like the server: it binds 127.0.0.1 only, every API call carries a per-session token
embedded in the served page, the Host/Origin headers must be localhost, cross-origin preflights are
refused, and secrets are never echoed back. Restart the UI server after pulling Python changes; page changes
show up on reload.
Adapter behaviour: only installed software is exposed
Most users have a few of the fourteen applications, not all of them. The server therefore works as an adapter:
At start-up it looks for each application's executable (
PATH, the usual vendor folders, or the<SOFTWARE>_EXEvariable in.env).Automation tools are registered only for applications that were found. An agent that lists the tools sees
matlab_*only if MATLAB exists on that machine; it never sees tools it cannot use and never has to discover a missing program by trial and error.Tools that need no executable are always present:
drawio_create_diagram,drawio_flowchart,drawio_read,drawio_codec,orcad_parse_pspice_output,proteus_project_info,altium_script_template,feko_parse_out,feko_lua_template,eagle_read_design,eagle_bom,eagle_netlist.The catalog is always available for all fourteen applications, because knowing how a tool works is useful even when the software runs on another machine.
list_softwareshows, per application, whether it is installed and which automation tools are available or hidden;adapter_statusadds the reason for every hidden tool (which variable to set). The server instructions tell agents to consult these first.Installed something later? Set
<SOFTWARE>_EXEif needed and restart the server; detection happens at start-up.MCP_ADAPTER_EXPOSE_UNAVAILABLE=truein.envregisters every tool regardless (useful for demos and tests); calls for missing software then returnok: falsewith the same hint instead of failing.
Optional extras:
pip install pywin32– synchronous Photoshop/AutoCAD COM automation on Windowspip install mph– COMSOL Python scripting (comsol_run_python,comsol_model_summary)pip install pyaedt– HFSS through PyAEDT (hfss_run_pyaedt)pip install truststore– use the OS certificate store for Tavily calls behind corporate proxies
Which application for which task
Agents reach for the general tool (MATLAB) unless the server tells them what each application is built for. The MCP layer therefore carries this knowledge in five places:
every automation tool description starts with a domain tag, e.g.
[Ansys HFSS: 3D electromagnetic field simulation (antennas, RF/microwave, signal integrity)] ...;the server instructions contain the routing guide below, and the bundled agent's system prompt repeats it;
list_softwareandsoftware_overviewreturnbest_for,typical_tasks,not_ideal_forandprefer_overper application;software_overviewalso lists the application's capability areas (its catalog categories with entry counts), so an agent sees everything the program can do before choosing tools;recommend_application(task)ranks the applications for a task description, says which of them are installed on this machine and which tool prefix to use;compare_applications(task)compares the applications that can do the same kind of task, head to head (see Comparing applications for the same task).
Task | Use | Tools |
Antennas, RF/microwave parts, S-parameters, radiation patterns, signal integrity, unit cells and arrays, PCB/package extraction | HFSS |
|
Antenna placement on vehicles/aircraft/ships, electrically large RCS, EMC with cable harnesses, characteristic modes, FSS, windscreen antennas, radio coverage (WinProp) | Feko |
|
Coupled physics on a geometry: heat, structural, fluid/CFD, electrostatics/magnetics, acoustics, electrochemistry and batteries, plasma, MEMS, topology optimization | COMSOL |
|
Circuit simulation with real components (transient, AC/DC sweeps, noise, Monte Carlo, Smoke), Probe measurements | PSpice |
|
PCB layout, footprints, design rules and queries, Gerbers/ODB++, ActiveBOM, Draftsman, multi-board and harness | Altium |
|
Existing EAGLE designs: parts, nets, BOM, netlist, Gerber/Excellon/assembly output with CAM jobs (EAGLE is retired; no new layout work) | EAGLE |
|
Firmware running together with its circuit (Arduino/PIC/AVR/ARM/Pico), virtual instruments, IoT Builder | Proteus |
|
FPGA: Verilog/VHDL synthesis, XDC timing, bitstreams, IP block designs, HLS, DFX, boot images | Vivado |
|
Block-diagram dynamic systems, control loops, Stateflow, Simscape physical models, verification, code generation | Simulink |
|
Exact/symbolic mathematics, closed forms, special functions, graph theory, curated data, uncertainty | Mathematica |
|
Numerics, signal/image/audio processing, filter and control design, ML/DL/RL, comms waveforms and BER, sensor fusion, data analysis, plots | MATLAB |
|
DWG/DXF technical drawings, blocks and attributes, sheet sets, 3D solids, AutoLISP/.NET automation | AutoCAD |
|
Raster photos, retouching, Camera Raw, generative fill, batch export, UXP/ExtendScript automation | Photoshop |
|
Flowcharts, block, UML/ER/BPMN and cloud architecture diagrams, CSV-driven diagrams | draw.io |
|
Rule given to agents: prefer the specialised application whenever one fits and is installed; MATLAB is for
numerics and post-processing around it. These are suggestions, not requirements: when the first choice is not
installed, or the user asks for a different application, the agent uses an installed alternative and says what it
gives up, instead of substituting silently. The profiles and keyword weights live in mcp_adapter/domains.py.
Comparing applications for the same task
Many tasks can be done by more than one application, and some do them better. mcp_adapter/comparisons.py
holds a head-to-head comparison for 27 such task areas. Each area sums up in one line which
application is best for which part of the job, and for every candidate it states its strength, when
to choose it and its limits, ranked from the usual first choice.
The comparison is advisory:
the suggested pick is the first installed candidate, so a missing application never blocks the work;
when that is not the first choice, the advice names the first choice and the limits of the installed alternative, so the agent can tell the user what the substitution gives up;
an installed application that the task names itself ("in Simulink", "with PSpice") wins over the ranking;
candidates marked
*below cover a neighbouring job only; they are listed for context and never offered as a substitute (Photoshop is not suggested for filter design, for example);if no suitable candidate is installed, the advice says so and names the first choice.
recommend_application(task) attaches the matching areas as comparison and lists installed alternatives.
compare_applications() lists all areas, compare_applications(area="cfd") shows one area, and
compare_applications(task="...") matches a description.
Task area | Candidates, usual first choice first | Which is best for what |
Antenna design (single antennas and arrays) ( | HFSS → Feko → COMSOL → MATLAB | HFSS for sign-off accuracy on detailed antennas with dielectrics and feeds; Feko for wire and metallic antennas and large arrays; COMSOL when heat or deformation detune the antenna; MATLAB for early sizing, catalogue antennas and array/beam studies. |
Antenna placement, co-site coupling and radar cross section of large platforms ( | Feko → HFSS → MATLAB → COMSOL | Feko for whole-platform placement, co-site coupling and RCS of large targets; HFSS SBR+ when the antenna already lives in AEDT; MATLAB for moderate platforms and radar-level studies; COMSOL only for electrically small platforms. |
RF/microwave passive components and PCB/package signal integrity ( | HFSS → COMSOL → Feko → MATLAB → Altium* | HFSS for 3D interconnects, connectors, packages, filters and couplers; COMSOL when heating or deformation couple in; Feko for planar metallic structures; MATLAB for cascades, matching and Touchstone post-processing; Altium only screens SI while routing. |
Analog and mixed-signal circuit simulation ( | OrCAD/PSpice → Altium → Proteus → Simulink → EAGLE* → COMSOL | PSpice for component-level accuracy with vendor models, Monte Carlo, worst case and stress; Altium for quick checks inside an Altium design; Proteus when a microcontroller runs real firmware; Simulink for circuits inside a larger system; EAGLE's ngspice only for basic OP/DC/AC/transient checks of an EAGLE schematic. |
Power electronics converters and motor drives ( | OrCAD/PSpice → Simulink → Proteus → MATLAB → COMSOL* | PSpice for switching waveforms, losses and stress with real devices; Simulink for control loops, drives and code generation; Proteus for MCU control code on a simple power stage; MATLAB for analytical converter models; COMSOL for the magnetics and thermal design of the parts. |
Schematic capture, part numbers and BOM ( | Altium → OrCAD/PSpice → Proteus → EAGLE* → draw.io* | Altium for managed parts with live supply-chain data and one data model shared with the PCB; OrCAD Capture CIS for database-driven part numbers and PSpice/Allegro flows; Proteus for microcontroller projects; EAGLE was the lightweight option whose library parts carry manufacturer part numbers (retired: now for existing files and BOM extraction). |
PCB design, layout and manufacturing outputs ( | Altium → OrCAD/PSpice → Proteus → EAGLE* → AutoCAD* | Altium for professional multilayer, high-speed and rigid-flex boards with the strongest interactive routing and rule system; OrCAD/Allegro for Cadence flows; Proteus for simpler microcontroller boards; EAGLE was light and quick for 2-4-layer and open-hardware boards (retired: now for existing designs and CAM output). |
3D PCB models, realistic renders and ECAD-MCAD exchange ( | Altium → OrCAD/PSpice → AutoCAD* → EAGLE* → COMSOL* | Altium for realistic 3D, STEP models on footprints, collision checks and MCAD exchange; OrCAD/Allegro for Cadence boards; AutoCAD for the enclosure around an exported board STEP; COMSOL for thermal or structural physics on the assembly. |
Microcontroller firmware development and testing ( | Proteus → Simulink → MATLAB → Vivado* | Proteus to run and debug real firmware against the simulated circuit; Simulink with Embedded Coder for model-based production code; MATLAB Coder for C code from algorithms; Vivado only for processors inside AMD FPGAs and SoCs. |
FPGA and digital hardware design ( | Vivado → Simulink → MATLAB | Vivado is required to implement and program AMD FPGAs; Simulink or MATLAB HDL Coder generate the HDL from models or algorithms first. |
Control design and dynamic system simulation ( | Simulink → MATLAB → Mathematica → COMSOL* → OrCAD/PSpice* | Simulink for nonlinear closed-loop simulation, logic and deployment; MATLAB for linear analysis and controller synthesis; Mathematica for closed-form, parameter-dependent stability results. |
Differential equations and general numerical computing ( | MATLAB → Mathematica → COMSOL → Simulink | MATLAB for numerical ODE/DAE work, optimisation and data; Mathematica for exact or high-precision solutions; COMSOL for PDEs on real geometry; Simulink for ODE systems built as block diagrams. |
Symbolic and exact mathematics ( | Mathematica → MATLAB | Mathematica for any serious symbolic or exact work; MATLAB's Symbolic Math Toolbox for moderate steps inside MATLAB code. |
Data analysis, statistics and machine learning ( | MATLAB → Mathematica | MATLAB for engineering data, domain toolboxes and deployment; Mathematica for exploratory and symbolic statistics. |
Signal and scientific image processing ( | MATLAB → Mathematica → Photoshop* | MATLAB for quantitative, reproducible signal and image processing; Mathematica for exploratory or symbolic analysis; Photoshop only when visual appearance is the goal. |
Photo editing and graphic assets ( | Photoshop → MATLAB → Mathematica | Photoshop for anything visual; MATLAB or Mathematica only for algorithmic batch operations. |
Structural analysis (stress, vibration, buckling, fatigue) ( | COMSOL → MATLAB → Simulink* | COMSOL for structural FEM with nonlinear materials, contact and fatigue; MATLAB's PDE Toolbox for simple linear problems; Simulink Multibody for mechanism motion, not stress. |
Thermal analysis and electronics cooling ( | COMSOL → Simulink → MATLAB | COMSOL for temperature fields on geometry and electronics cooling; Simulink for lumped, system-level thermal behaviour; MATLAB for simple conduction problems and fits. |
Fluid flow and CFD ( | COMSOL → Simulink → MATLAB* | COMSOL for 2D/3D flow fields and flow coupled to heat or structures; Simulink (Simscape Fluids) for system-level hydraulics. |
Low-frequency electromagnetics: motors, transformers, inductors, electrostatics ( | COMSOL → Simulink → MATLAB → OrCAD/PSpice* | COMSOL for motors, transformers, inductors, busbars and electrostatics from their geometry; Simulink for drives with known machine parameters; MATLAB for simple 2D fields and parameter fits. |
Acoustics and vibro-acoustics ( | COMSOL → MATLAB → Simulink | COMSOL for sound fields, transducers and vibro-acoustics on geometry; MATLAB for analytical estimates and audio signal analysis; Simulink for lumped transducer models. |
Coupled multiphysics (Joule heating, thermal stress, FSI, piezoelectric, electrochemical-thermal) ( | COMSOL → MATLAB → HFSS | COMSOL for strongly coupled physics in one model; MATLAB to orchestrate weak or sequential couplings; HFSS only for RF losses handed to Ansys thermal tools. |
Chemical reactors, electrochemistry and batteries ( | COMSOL → Simulink → MATLAB → Mathematica | COMSOL for cell, corrosion, fuel-cell and reactor physics; Simulink for pack-level and BMS simulation; MATLAB for fitting models to test data; Mathematica for analytical kinetics. |
Optics and photonics ( | COMSOL → HFSS → MATLAB | COMSOL for wave and ray optics and thermal lensing; HFSS for small metasurfaces and nanostructures inside AEDT; MATLAB for simple propagation models. |
EMC/EMI analysis ( | Feko → HFSS → COMSOL → OrCAD/PSpice → Altium* | Feko for vehicle and aircraft EMC and cable harnesses; HFSS for board, package and enclosure EMI; COMSOL for component shielding; PSpice for conducted emissions of power supplies. |
Technical drawings and 2D/3D CAD geometry ( | AutoCAD → draw.io → COMSOL* → Altium* | AutoCAD for scaled, dimensioned drawings and DWG/DXF exchange; draw.io for quick plans and sketches. |
Diagrams for documentation (flowcharts, architecture, block diagrams) ( | draw.io → Simulink → Mathematica → AutoCAD | draw.io for documentation diagrams; Simulink when the diagram must simulate; Mathematica for graphs computed from data; AutoCAD when exact geometry matters. |
Example with OrCAD not installed but Simulink and MATLAB installed, for "simulate a buck converter":
First choice would be orcad (not installed). Suggested installed alternative: simulink. Control-loop design,
drive-level and grid-level behaviour, embedded code for the controller. Tell the user its limits: Device-level
waveforms are less detailed than PSpice with vendor models. Tools: simulink_*.Configuration
Copy .env.example to .env. Everything is optional:
Variable | Purpose |
| security policy, see Security and network policy; set by |
|
|
| key for |
| explicit executable paths; when unset the adapter looks on |
| default timeout in seconds for launching an application (600) |
| where generated scripts, logs and results are written ( |
| release-specific command-line overrides (see the adapter docstrings) |
Call the adapter_status tool to see what was detected.
Running the server
There are two things you can run. Neither is running by itself after installation.
1. The MCP server is normally started by your MCP client (Claude Desktop, Claude Code, your own agent) as a child process that talks over stdio, so you usually never start it by hand: you register the command in the client (next section) and the client launches it when it connects. To run it manually, e.g. for an HTTP client:
python -m mcp_adapter.server # stdio (default): opens no port
python -m mcp_adapter.server --transport streamable-http --port 8000 # listens on 127.0.0.1 only in local mode
python -m mcp_adapter.server --transport sse --port 8000
python -m mcp_adapter.server --transport streamable-http --host 0.0.0.0 # refused unless MCP_ADAPTER_NETWORK_MODE=network
python -m mcp_adapter.server --print-policy # show the effective security policyThe server prints its effective exposure to stderr at start-up, e.g. listening on 127.0.0.1:8000 - LOOPBACK ONLY.
2. The configuration UI is a small local web page you start when you want to change settings and stop with Ctrl+C when done (see Configuration UI):
python -m mcp_adapter.ui.serverOn Windows use py instead of python if the plain command is not on your PATH. The short commands
mcp-adapter, mcp-adapter-setup and mcp-adapter-ui are installed too, but they only work when Python's
Scripts folder is on your PATH; the python -m ... forms always work.
Claude Desktop
Add to claude_desktop_config.json (see examples/claude_desktop_config.json):
{
"mcpServers": {
"mcp-adapter": {
"command": "python",
"args": ["-m", "mcp_adapter.server"],
"cwd": "C:/path/to/MCP-ADAPTER-PV"
}
}
}Claude Code
claude mcp add mcp-adapter -- python -m mcp_adapter.server(On Windows without python on PATH: claude mcp add mcp-adapter -- py -m mcp_adapter.server.)
Any MCP client (Python)
examples/client_demo.py launches the server over stdio, lists the tools and calls a few.
Tools
Catalog
Tool | What it does |
| supported applications, catalog sizes, whether the executable was found |
| catalog categories with counts |
| compact rows of catalog entries |
| full entry as Markdown: description, usage, parameters, example, notes, docs |
| ranked keyword search across one or all catalogs |
| product summary + automation entry points (CLI flags, APIs, file formats) |
| suggests the application for a task (what each is best for, installed here or not, tool prefix) with the matching comparison and installed alternatives |
| head-to-head comparison of applications that can do the same kind of task: which is best for what, strength, when to choose, limits; advisory, falls back to installed candidates |
| live documentation search restricted to vendor sites (Tavily); only registered when |
| detected executables, env overrides, the active security policy and the current output folder |
| writes all generated files and results into the task's folder (checked: existing, local, not a system/hidden/network folder); empty = back to the default |
| network mode, bind restriction, which internet tools are disabled and how to change it |
Resources: catalog://software, catalog://{software}/categories, catalog://{software}/{name}.
Time
time_now, time_convert, time_add, time_difference, time_format, time_list_timezones,
time_world_clock, time_unix. Inputs accept ISO 8601, unix seconds/milliseconds, now/today/tomorrow
and common formats; zones accept IANA names, local, abbreviations (EST, CET, IST) and offsets (+03:30).
Automation (per application)
Family | Tools |
MATLAB |
|
Simulink |
|
Mathematica |
|
COMSOL |
|
Photoshop |
|
OrCAD |
|
Altium |
|
Proteus |
|
Vivado |
|
AutoCAD |
|
HFSS |
|
Feko |
|
EAGLE |
|
draw.io |
|
mathematica_wolfram_alpha is the only automation tool that reaches the internet (through your Mathematica
installation); like search_docs_online it exists only when MCP_ADAPTER_ALLOW_INTERNET=true.
Every automation tool returns the same shape:
{"ok": true, "software": "matlab", "command": "...", "returncode": 0, "duration_s": 6.9,
"stdout": "...", "stderr": "", "artifacts": {"script": "outputs/matlab/mcp_run_....m"}, "data": {"x": [1, 2, 3]}}data carries structured results (JSON captured from MATLAB/Vivado/Photoshop/HFSS scripts, parsed PSpice
output, diagram statistics, ...). When the executable is missing, ok is false and error names the
environment variable to set.
Examples
search_tools(query="butterworth filter design", software="matlab")
describe_tool(software="mathematica", name="NDSolve")
matlab_eval(expression="roots([1 -3 2])") -> data.mcp_value__ == [2, 1]
simulink_simulate(model="vdp", stop_time="20") -> logged signals summary + .mat file
vivado_build_project(project_file="C:/fpga/top.xpr") -> WNS/TNS and bitstream path
drawio_flowchart(steps=["Load", "Valid?", "Save"], export_format="png")
hfss_export_touchstone(project="ant.aedt", design="patch", setup="Setup1", sweep="Sweep", output_file="ant.s1p")
time_convert(datetime="2026-09-19 14:30", from_timezone="Europe/Berlin", to_timezone="Asia/Tehran")Notes on vendor entry points
OrCAD Capture executes Tcl from its Command Window; a start-up switch differs between releases, so the adapter writes the script and returns the
sourcecommand unlessORCAD_CAPTURE_TCL_CMDis configured.Altium Designer is driven with
X2.EXE -RScriptFile:<PrjScr> -RProcName:<Unit>Proc>; override the switch template withALTIUM_SCRIPT_ARGSif your version expects different names.Proteus has no documented headless simulation switch;
proteus_run_clipasses arbitrary switches through.Feko (verified with 2026.1):
runfeko MODEL [-np N] [--use-gpu] [--priority x]solves;cadfeko_batch MODEL.cfx -# VAR=VALUE --force-meshchanges variables and re-meshes; Lua scripts run withcadfeko/postfeko [MODEL] --non-interactive --run-script FILE [--configure-script "..."].runfekohas no--versionswitch (the adapter parses its banner). The Lua templates follow the scripting reference; confirm method names with the CADFEKO recorder.EAGLE (verified with 9.6.0 in September 2026): Autodesk retired EAGLE on 7 June 2026 and shut down its licensing servers. The command-line CAM Processor still runs without signing in:
eaglecon -X -N -dCAMJOB -j<job.cam> -o<dir> board.brdwrites Gerber files, the Gerber job file, Excellon drill and assembly data (the adapter picks the shippedexample_N_layer.camjob from the board's layer setup when none is given), and a legacy device plus a layer list (-dEXCELLON ... 44 45) writes a single file. The editor route (eagle -C "RUN x.ulp; QUIT") now stops at the Autodesk 'Sign in' window; the adapter detects that, closes the process and says so, and never signs in..sch/.brd/.lbrfiles are XML (doc/eagle.dtd), soeagle_read_design,eagle_bomandeagle_netlistwork without EAGLE; binary files from before EAGLE 6.0 are only read by the CAM Processor.COMSOL (verified with 6.4):
comsolbatch -inputfile model.mph|Model.class -outputfile out.mph -batchlog logsolves a model or runs a compiled Java model program; a model built by a class is saved asout_<ModelTag>.mph, which the adapter reports.comsolcompileexits with code 0 even when compilation fails, so the adapter checks its message and the.classfile.comsol_inspect_modelandcomsol_evaluatecompile small Java programs, so reading results needs no Python bridge (MPh stays optional). The example tools index the local Application Library (applications/) and its documentation (doc/help/.../com.comsol.help.models.*), including the Java script that builds each example;scripts/build_comsol_examples.pyregenerates the example catalog from an installation.Photoshop must be running (or startable) on the same desktop session; COM (pywin32) gives synchronous execution, otherwise the adapter launches the JSX and polls for the result file.
Development
pytest -q # unit tests (live MATLAB test runs only when MATLAB is installed)
ruff check mcp_adapter tests scripts
python scripts/catalog_stats.py
python scripts/tavily_search.py "Vivado report_timing_summary options"Project layout:
mcp_adapter/
server.py MCP tool/resource registration and CLI entry point
catalog.py catalog loader, alias resolution, ranked search
time_tools.py timezone-aware time utilities
docs_search.py Tavily-backed live documentation search
config.py .env loading, executable discovery, timeouts
adapters/ one module per application (base.py holds the subprocess runner)
catalogs/<id>/ meta.json + NN_<category>.json data files
tests/ pytest suite (catalog schema validation, time tools, adapters, server)
examples/ client demo and Claude Desktop configuration
scripts/ Tavily helper and catalog statisticsTo add or extend a catalog, drop a new NN_<slug>.json file into the software folder (≤ 40 tools per file,
fields per CATALOG_SCHEMA.md) and run pytest tests/test_catalog.py.
License
MIT
Available Tools
31 toolsadapter_statusB
Which applications were detected, which automation tools are exposed or hidden (and why), and the security policy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it says nothing about whether the call is read-only, whether it probes the live system, any latency or side effects, or how the 'why' for hidden tools is determined. It only lists the data categories returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the most important content (detected applications, exposed/hidden tools, security policy) front-loaded. Efficient, though it reads as a fragment rather than a structured statement of purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema present, the description need not explain return values, and it adequately signals the reported categories. However, given sibling overlap with security_policy and software_overview, an agent lacks any signal about how this status view differs from those 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the exact content the tool reports: detected applications, which automation tools are exposed or hidden (and why), and the security policy. The purpose is clear, but it is a noun-phrase content list rather than a verb+resource statement, and it does not distinguish itself from overlapping siblings like software_overview or security_policy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool, no conditions or prerequisites, and no mention of the alternative siblings (software_overview, security_policy) that cover similar ground. The agent is left to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
altium_script_templateA
[Altium Designer: schematic capture, PCB layout/routing, stackups, fabrication outputs] Return ready-made DelphiScript: template 'export_bom' (project_path, output_file .csv) or 'pcb_stats' (output_file .txt).
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes | ||
| output_file | No | ||
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says it 'Returns' a script, yet a parameter is named 'output_file' and there is no indication whether the tool writes a file to disk, mutates anything, or merely returns text with the path substituted in. Permissions and side effects are undisclosed.
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 efficient sentence front-loads the purpose, followed by the template branch details. The bracketed domain tag adds context without bloat, though the information is densely packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be explained, and the template options are covered. However the behavioral gap around whether output_file triggers file writing leaves the agent under-informed for a no-annotation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does well: it maps 'export_bom' to (project_path, output_file .csv) and 'pcb_stats' to (output_file .txt), revealing the valid template values, which parameters apply to each, and expected file extensions. It still leaves the exact string values and the output_file file-vs-name semantics 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 and resource: 'Return ready-made DelphiScript' templates, and enumerates the two available templates ('export_bom', 'pcb_stats'). The bracketed domain tag clarifies it is the Altium Designer tool, distinguishing it from the analogous feko_lua_template sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description presents the two template choices and their parameters, implying when each is used, but gives no explicit when-to-use/when-not guidance and never names a sibling. Usage is inferable from the template list rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_applicationsA
Head-to-head comparison of the applications that can do the same kind of task (antennas, antenna placement/RCS, RF passives/SI, circuits, power electronics, schematic capture/BOM, PCB, 3D PCB/MCAD, firmware, FPGA, control, ODEs/numerics, symbolic maths, data/ML, signal/image processing, photo editing, structural, thermal, CFD, low-frequency EM, acoustics, multiphysics, batteries/chemistry, optics, EMC, drawings, diagrams). Each area has a one-line summary of which application is best for what; each candidate has its strength, when to choose it and its limits, ranked from the usual first choice, with installation status on this machine.
Advisory only: the suggested pick is the application the task names (if installed), else the first installed candidate that can substitute. Any installed candidate may be used; tell the user which trade-offs apply. Call with no arguments to list the areas, with area= for one area, or with task= to match areas.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| task | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the selection heuristic (task-named app if installed, else first installed substitute), that ranking is 'usual first choice', that installation status is included, and that the tool is advisory only. It omits any mention of read-only/auth characteristics, but the content disclosure is unusually rich.
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 usage pattern, but the ~27-item parenthetical domain list is dense and occupies most of the text. It is informative rather than filler, yet it blurs the line between conciseness and completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the description covers invocation modes, advisory semantics, and output shape. For a 2-param read tool this is close to complete; only the absence of sibling routing leaves a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and both parameters are bare strings with empty defaults, so the description must compensate, and it does: it explains that area takes an area id and task takes a description used to match areas. It does not map concrete area id values, but the enumerated domains supply that context.
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 ('head-to-head comparison of the applications that can do the same kind of task') and enumerates the task domains it covers, so an agent knows exactly what it returns. It does not, however, distinguish itself from the sibling recommend_application, which appears to serve a related advisory function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives three invocation modes (no args = list areas, area=<id> = one area, task=<description> = match areas) and clarifies the advisory nature ('Any installed candidate may be used; tell the user which trade-offs apply'). It stops short of stating when to prefer this over recommend_application or list_software.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_toolC
Full description of one catalog entry: what it does, usage/syntax, parameters, example, docs link.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| software | Yes | ||
| as_markdown | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It lists the output sections, but with an output schema already present that is largely redundant, and it says nothing about idempotence, permissions, failure modes, or what happens when the entry is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the payload contents with no filler. It is efficient, though the compression contributes to the ambiguity about what a catalog entry is.
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?
Return values are covered by the output schema, so the section list adds little, while the two required parameters and their relationship remain unexplained. For a lookup tool with zero schema documentation, more identifying detail was needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters, so the description must compensate. It only implicitly suggests that an entry is identified by name/software; it never explains the required 'software' key, the 'name' key, or what 'as_markdown' toggles, leaving a required parameter pair 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 the resource ('one catalog entry') and the kind of content returned ('what it does, usage/syntax, parameters, example, docs link'), but the verb 'describe' is generic and it never clarifies whether an entry is a software package or a tool. Siblings list_tools, search_tools, and software_overview make that distinction important, and nothing here resolves 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?
There is no when-to-use guidance at all. An agent cannot tell from this text whether to call describe_tool, list_tools, search_tools, or software_overview, nor what prerequisite lookup produces the 'software'/'name' pair it needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drawio_codecA
[draw.io: diagrams (flowcharts, block diagrams, architecture, UML, network) as editable files and PNG/SVG/PDF] Decode a compressed payload to XML (mode=decode) or compress XML to draw.io format (mode=encode).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | decode | |
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 that both directions of transformation exist and that the input/output formats are compressed payload vs XML. It omits error behavior on malformed payloads, size limits, and whether the returned XML is the raw editable source, leaving moderate gaps for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core transform front-loaded after the domain tag. Every clause is relevant, though the bracketed diagram-type list is inherited boilerplate that doesn't help an agent invoke this specific codec.
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 an output schema present, return values need no explanation, and the description covers both operational modes of this two-parameter tool. The only shortfall is the unexplained `text` payload semantics per mode, which is a minor gap given the output schema carries the result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema offers no parameter detail. The description compensates for `mode` by explaining decode and encode values (and matching the default), but says nothing about what `text` should contain in each mode (compressed payload vs raw XML), leaving the most important parameter 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 pair (decode a compressed <diagram> payload to XML / encode XML to draw.io format), which is concrete and separable from siblings like drawio_create_diagram and drawio_read. The leading bracketed domain tag ('draw.io: diagrams (flowcharts, ...)') is category boilerplate rather than tool purpose, slightly diluting focus.
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 indicates the two modes and what each does, which implies when you'd pick decode vs encode, but gives no explicit when-to-use guidance relative to drawio_read or drawio_create_diagram. An agent must infer from the mode semantics alone that this is a low-level transform, not a diagram authoring/reading tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drawio_create_diagramB
[draw.io: diagrams (flowcharts, block diagrams, architecture, UML, network) as editable files and PNG/SVG/PDF] Build a .drawio diagram from nodes [{id,label,shape?,style?,x?,y?,width?,height?}] and edges [{source,target,label?,style?}].
Shapes: rectangle, rounded, ellipse, circle, rhombus/decision, process, terminator, start, end, document, cylinder/database, cloud, note, hexagon, parallelogram/data, triangle, actor, text, card, step, container/swimlane, cube, component, umlclass. Layout is automatic (layered, direction TB or LR) unless x/y are given. Set export_format=png|svg|pdf to also render.
| Name | Required | Description | Default |
|---|---|---|---|
| edges | No | ||
| nodes | Yes | ||
| title | No | Page-1 | |
| direction | No | TB | |
| output_file | No | ||
| export_format | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it does add real behavior: layout is automatic (layered, TB/LR) unless x/y are supplied, and export_format triggers an additional render. It does not state whether files are overwritten, where output lands, or what output_file does, so mutation/file-system side effects remain undisclosed.
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 domain bracket, then the core action, then shape vocabulary, then layout/export behavior. The long shape list is dense but earns its place as the only source of that enum information. Minor redundancy in listing both 'rectangle' and 'rounded' style families, but generally tight.
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?
Because an output schema exists, return-value explanation is not required, and the description covers inputs, shape vocabulary, layout, and export adequately. It omits how output_file interacts with the sibling set_output_folder and whether an export produces a separate file, leaving file-handling behavior under-specified for a creation tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description has to compensate, and it largely does: it spells out the node object keys {id,label,shape?,style?,x?,y?,width?,height?}, the edge keys {source,target,label?,style?}, the accepted shape vocabulary, direction TB|LR, and export_format png|svg|pdf. Only title and output_file are left unexplained, hence not 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 ('Build a .drawio diagram') plus the ingredients (nodes/edges) and output formats, so the resource and action are unambiguous. The bracket header also frames the draw.io domain. However, it never distinguishes itself from the sibling drawio_flowchart or drawio_codec, so an agent must infer which diagram builder to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no exclusions, and no reference to any sibling tool. The description implies usage only by describing the inputs it accepts (nodes/edges), leaving the choice between drawio_create_diagram and drawio_flowchart to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drawio_flowchartC
[draw.io: diagrams (flowcharts, block diagrams, architecture, UML, network) as editable files and PNG/SVG/PDF] Quick linear flowchart from a list of step labels (labels ending with '?' become decision diamonds).
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | ||
| title | No | Flowchart | |
| direction | No | TB | |
| output_file | No | ||
| export_format | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a real behavior beyond the schema: the '?' suffix rule that turns a step into a decision diamond, plus the note that output is an editable file with PNG/SVG/PDF export. It omits anything about file overwrite behavior, where files are written, or 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?
A tight two-clause sentence: bracketed capability summary first, then the tool-specific behavior. 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 5-parameter tool with zero schema descriptions and no annotations, the description answers far less than an agent needs. An output schema exists so return values need not be explained, but four of five parameters and all usage routing remain undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and largely doesn't. It explains the 'steps' semantics (labels, '?' rule) and hints at export format (PNG/SVG/PDF), but 'title', 'direction', and 'output_file' get no meaning at all.
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 ('Quick linear flowchart from a list of step labels') and adds a concrete construction rule (labels ending with '?' become decision diamonds), so an agent knows exactly what artifact is produced. It does not, however, differentiate itself from the sibling drawio_create_diagram, which appears to be the generic entry point.
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 says what the tool builds but never says when to pick it over drawio_create_diagram or drawio_codec, nor what preconditions apply. No exclusions, no alternative routing, no context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drawio_readB
[draw.io: diagrams (flowcharts, block diagrams, architecture, UML, network) as editable files and PNG/SVG/PDF] Read a .drawio/.xml file: pages, vertex/edge counts, labels and the decoded mxGraphModel XML.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose what is extracted and that the XML is decoded. However, 'Read' only implicitly signals a non-mutating operation, and it says nothing about error behavior for malformed/non-drawio files or whether PNG/SVG/PDF inputs are rejected.
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 short domain tag followed by one front-loaded sentence; the verb and resource come before the return-value enumeration. The bracket tag is slightly verbose, 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 single-parameter read tool with an output schema and a sibling set_output_folder, this is nearly complete: purpose and returned content are covered. The only real gap is path resolution context, plus the bracket tag's 'PNG/SVG/PDF' phrasing, which slightly muddies whether those formats are valid inputs to a read.
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 lone 'path' parameter has 0% schema description coverage, so the description must compensate. It partially does by naming the accepted file types (.drawio/.xml), but it adds no detail on whether the path is absolute, relative, or resolved under the configured output folder.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('.drawio/.xml file') and even enumerates what it extracts (pages, vertex/edge counts, labels, decoded mxGraphModel XML). It is clearly distinguishable from drawio_create_diagram and drawio_flowchart, though it never explicitly contrasts itself with drawio_codec, which could plausibly overlap on decoding.
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 prerequisites, and no named alternative. The agent must infer from the verb that this is the inspection path rather than the creation path, and nothing says what to do instead when a file is a PNG/SVG/PDF.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eagle_bomA
[Autodesk EAGLE (retired June 2026): schematic capture and PCB layout; reads EAGLE designs, command-line CAM (Gerber/Excellon), BOM and netlist, User Language programs and scripts] Bill of materials from an EAGLE schematic or board (XML, no EAGLE needed), grouped by value, package, manufacturer and MPN attributes, with designators; parts without a package (frames, supply symbols) are left out. Optionally writes a CSV (relative paths go into the current output folder).
| Name | Required | Description | Default |
|---|---|---|---|
| output_csv | No | ||
| design_file | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the grouping keys, that parts without a package (frames, supply symbols) are omitted, and that a CSV can optionally be written with relative paths resolving to the current output folder. It omits error/edge conditions but transparently covers the meaningful behavior and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and the sentences are dense with useful detail. The bracketed '[Autodesk EAGLE ...]' preamble is somewhat verbose tool-family context, but it is separated from the operational description and does not obscure the main 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?
An output schema exists, so return values need not be re-explained, and the description still covers grouping, exclusions, and file-writing behavior. For a 2-parameter extraction tool with a file side effect and no annotations, this is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It conveys that design_file is an EAGLE XML schematic/board (implying format and that no EAGLE install is required) and that output_csv is optional with relative-path resolution semantics, adding meaning beyond the bare schema types.
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 precise verb+resource: producing a 'Bill of materials from an EAGLE schematic or board (XML, no EAGLE needed)'. It further specifies how the BOM is grouped (value, package, manufacturer, MPN) and what is excluded, so an agent can distinguish it from sibling eagle_netlist or eagle_read_design 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?
It implies usage via '(XML, no EAGLE needed)' and the optional CSV note, and clarifies the tool works on files directly. However, it never explicitly says when to choose this over eagle_read_design or eagle_netlist, or any prerequisites/exclusions, 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.
eagle_netlistA
[Autodesk EAGLE (retired June 2026): schematic capture and PCB layout; reads EAGLE designs, command-line CAM (Gerber/Excellon), BOM and netlist, User Language programs and scripts] Netlist from an EAGLE schematic (part.pin per net) or board (element.pad per signal), XML only; optionally written as a tab-separated text file.
| Name | Required | Description | Default |
|---|---|---|---|
| design_file | Yes | ||
| output_file | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 output format ('XML only') and a side effect (optionally writes a tab-separated text file), which is real behavioral context. It omits permission requirements, error behavior, and any rate limits, leaving notable 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 core sentence is dense and front-loads the netlist definition well. However, the bracketed prefix lists tangential capabilities (CAM, BOM, ULP, scripts) that don't serve this specific tool and add clutter without aiding invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the description covers the output format and file-writing option. But with two undocumented parameters and no annotations, the description does not fully cover input semantics or usage context, leaving it only minimally 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 description coverage is 0%, so the description must compensate. It hints that the design input is XML and that output_file produces a tab-separated text file, mapping loosely to the two parameters, but never references parameter names or clarifies required vs optional/format expectations. 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 resource (netlist) with its exact source and granularity: 'part.pin per net' from a schematic or 'element.pad per signal' from a board, XML only. This clearly distinguishes it from siblings like eagle_bom and eagle_read_design. An agent can tell precisely what this tool 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?
The description implies usage (extracting a netlist, optionally to a text file) but never states when to choose this over eagle_bom or eagle_read_design, nor any prerequisites. Usage is inferable but not guided, so this lands at the implied-usage baseline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eagle_read_designB
[Autodesk EAGLE (retired June 2026): schematic capture and PCB layout; reads EAGLE designs, command-line CAM (Gerber/Excellon), BOM and netlist, User Language programs and scripts] Read an EAGLE XML design without EAGLE: schematic (sheets, parts with package and attributes, nets with pins, variants, modules), board (copper layers, size, elements with position/rotation, signals with pads/wires/vias, unrouted signals, key design rules) or library (packages, symbols, device sets).
| Name | Required | Description | Default |
|---|---|---|---|
| max_items | No | ||
| design_file | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. 'Read ... without EAGLE' establishes a safe read operation and independence from the application, but it says nothing about error behavior on malformed files, permission requirements, or the effect of max_items. The content enumeration is informative but overlaps with what the output schema already conveys.
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 sentence is dense yet front-loaded with the verb and well-organized by document type. However, the bracketed preamble describes the whole EAGLE product suite rather than this tool, adding words that do not help the agent select or invoke it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are not needed, and the description adequately signals the read-only nature and the domain covered. It still leaves gaps on the max_items parameter and on when to prefer this tool over the sibling eagle_bom/eagle_netlist readers.
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 neither parameter is explained. design_file is inferrable from its name, but max_items (default 500) is never mentioned in the description, so an agent cannot tell what it bounds—item counts, nesting depth, or pagination—leaving a real comprehension 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 core sentence gives a clear verb+resource ('Read an EAGLE XML design') and enumerates the three document kinds it handles (schematic, board, library). It is reasonably distinguishable from siblings like eagle_bom/eagle_netlist, though the bracket preamble lists BOM/netlist/CAM as EAGLE capabilities, which slightly blurs what this specific tool returns.
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: 'without EAGLE' hints that this is for parsing design XML when the application is unavailable, and the content list implies when to pick schematic vs board vs library. There is no explicit when-to-use/when-not guidance and no routing to alternatives such as eagle_bom or eagle_netlist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feko_lua_templateC
[Altair Feko: computational electromagnetics (MoM/MLFMM/FEM/PO/UTD hybrids) for antennas, antenna placement on platforms, RCS, EMC] Ready-made Lua scripts to adapt: 'dipole' (CADFEKO build + solve), 'export_source_data' (POSTFEKO impedance CSV), 'export_farfield' (POSTFEKO .ffe export), 'rcs_sweep' (CADFEKO plane-wave monostatic RCS).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| model | No | D:/feko/model.cfx | |
| output | No | D:/feko/result.csv | |
| frequency_hz | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether the returned scripts are written to disk (overwriting model/output paths?), whether a Feko installation is required, or side effects of running them. Only the template content is described.
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 bracketed product context is front-loaded and the template list is compact, but the single run-on sentence crams domain jargon, four template names, and their outputs together, making it harder to scan than a short bulleted form 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?
An output schema exists so return values need not be explained, but with zero annotation coverage and 0% schema coverage across four parameters, the description leaves the tool's operating behavior (file writing, toolchain prerequisites) and three parameters 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% and the schema has no enums, so the description's enumeration of kind values ('dipole', 'export_source_data', 'export_farfield', 'rcs_sweep') is genuinely valuable for the required parameter. However, model, output, and frequency_hz 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?
The description names a concrete resource (ready-made Lua scripts) and enumerates four specific template kinds with their purpose (dipole CADFEKO build+solve, impedance CSV export, farfield export, monostatic RCS sweep). It is not differentiated from the sibling altium_script_template, but the Feko-specific template names make the resource scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lists which templates exist but gives no guidance on when to reach for this tool versus feko_parse_out, altium_script_template, or the other script/output tools. There are no preconditions, exclusions, or alternative routing statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feko_parse_outA
[Altair Feko: computational electromagnetics (MoM/MLFMM/FEM/PO/UTD hybrids) for antennas, antenna placement on platforms, RCS, EMC] Parse a Feko .out report (no Feko needed): solution frequencies, per-source impedance/current/power, section headings, mesh/memory/time summary lines, warnings and errors.
| Name | Required | Description | Default |
|---|---|---|---|
| out_file | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 discloses useful behavioral context: parsing requires no Feko installation, and it names the categories of data extracted. It does not explicitly state that the operation is read-only with no side effects, nor how malformed files are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with domain context followed by a compact list of parsed contents. Every phrase contributes, though the bracketed Altair Feko domain metadata is somewhat heavy relative to the core parse instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained in the description, and the description still helpfully enumerates what will be extracted. The remaining gap is the undocumented out_file parameter and the absence of explicit usage exclusions.
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 the single required parameter out_file. The description partially compensates by indicating the input is a Feko .out report, but it adds no path format, file-location, or file-validity details beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb plus resource: 'Parse a Feko .out report'. It further enumerates the extracted artifacts (solution frequencies, per-source impedance/current/power, warnings/errors), making the tool's scope unmistakable and distinguishable from unrelated siblings like drawio_read or eagle_read_design.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is strongly implied: use this when you have a Feko .out report to parse. The parenthetical '(no Feko needed)' clarifies a key dependency condition. However, it provides no explicit when-to-use vs. alternatives guidance or exclusions, and no sibling tool is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesA
List the catalog categories (with tool counts) for one application, e.g. 'matlab' or 'vivado'.
| Name | Required | Description | Default |
|---|---|---|---|
| software | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 return content (categories with tool counts) and implies a read-only lookup, but says nothing about ordering, error behavior for unknown applications, or whether it needs the tool set to be installed first. For a low-risk read this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that states the action, resource, scope, and return enrichment, followed by two inline examples. No filler, nothing deferred.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and the description still adds the useful 'with tool counts' detail plus parameter examples. The residual gap is the lack of validation/format guidance for the software parameter.
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 the single 'software' parameter, so the description must compensate. It partially does so by giving concrete example values ('matlab', 'vivado'), which conveys the expected identifier style, but does not state case sensitivity, accepted names, or whether arbitrary application strings work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (List) and resource (catalog categories), and adds scope details: it is scoped to one application and returns categories annotated with tool counts. It does not explicitly distinguish itself from list_software or software_overview, but the purpose is unambiguous on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the example application names ('matlab', 'vivado'); there is no 'use this when...' framing, no mention of prerequisites, and no routing to alternatives such as software_overview or list_software. An agent can infer the call, but nothing steers it between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_softwareA
List the supported applications with catalog size and whether the executable was found locally.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the returned fields (catalog size, whether the executable was found locally), which is useful behavioral context for a listing operation. It does not state that the call is read-only, side-effect free, or how the local-executable check is performed, leaving gaps in an annotation-free definition.
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 that states the action and the two result facets with no filler. Nothing could be cut without losing 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 zero-parameter listing tool with an output schema present, the description explains enough of the return content that return values need not be detailed further. Only the absence of any usage routing against software_overview keeps it from being 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?
The tool takes zero parameters, so the baseline is 4 — there is nothing for the description to clarify beyond what the empty schema already conveys.
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 (List) and resource (supported applications) and even previews the payload — catalog size and local executable presence. It is clearly distinguishable from noisy siblings like adapter_status or list_categories, though it does not explicitly differentiate itself from the nearby software_overview 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?
There is no when-to-use or when-not-to-use guidance and no named alternative, despite a sibling (software_overview) that plausibly overlaps. An agent must infer from the description alone that this is the enumeration tool rather than an overview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_toolsB
List catalog entries for an application, optionally filtered by category substring and kind.
Returns compact rows (name, kind, category, description). Use describe_tool for usage and examples.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| offset | No | ||
| category | No | ||
| software | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 discloses the return shape ('compact rows') and a non-obvious filtering behavior ('category substring'), but omits pagination behavior, permissions, and read-only nature.
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. The purpose and main filtering behavior are front-loaded, followed by a concise note on return format and the next tool to 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?
The output schema covers return values, and the description is adequate for basic listing. However, with no annotations and 0% schema description coverage, gaps around pagination and the required software parameter leave the agent without enough context to use the tool confidently in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all five parameters. It partially covers category substring and kind, and implies software via 'for an application,' but leaves the required software parameter unnamed and completely omits limit and offset.
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: 'List catalog entries for an application,' with optional filters. It distinguishes itself from describe_tool by redirecting usage there, but does not differentiate from sibling tools like search_tools or list_software.
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 only says 'Use describe_tool for usage and examples,' which is downstream guidance rather than when-to-use-this-tool guidance. There is no explicit comparison to alternatives like search_tools or list_software, and no when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orcad_parse_pspice_outputB
[OrCAD PSpice/Capture/PCB Editor: analog & mixed-signal circuit simulation, schematics, PCB] Parse an existing PSpice .out file (errors, warnings, node voltages, total power).
| Name | Required | Description | Default |
|---|---|---|---|
| out_file | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses what the parser returns (errors, warnings, node voltages, total power), which is genuinely useful, but says nothing about failure modes, file-format requirements, permission needs, or output structure beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the domain tag prefix and the core action stated immediately. Compact and free of filler, though the bracketed vendor tag adds minor clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the single required parameter is conceptually covered. What remains missing is usage routing against sibling parsers and any note on malformed or missing files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter 'out_file' has only the title 'Out File'. The description does add meaning by specifying it is an 'existing PSpice .out file', clarifying format and existence expectations, but no path syntax or relative/absolute guidance is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (parse) and resource (PSpice .out file) and enumerates what is extracted: errors, warnings, node voltages, total power. It is clearly distinguishable from other tools, though it does not explicitly name a sibling like feko_parse_out as an 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?
The word 'existing' hints that a file must already be present, but there is no explicit when-to-use guidance, no prerequisites, and no alternatives named among the many sibling tools. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proteus_project_infoA
[Proteus: microcontroller/firmware co-simulation (VSM) with circuit, plus schematic and PCB] Inspect a .pdsprj container without opening Proteus: embedded files, firmware references, MCU hints.
| Name | Required | Description | Default |
|---|---|---|---|
| project_file | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully signals a read-only inspection that does not require the Proteus application, which is meaningful context. However, it says nothing about permissions, error handling, or constraints, and a read-only nature is only implied by 'Inspect.'
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, front-loaded with the domain label and the verb+object. The bracketed preamble is slightly verbose but earns its place by establishing the Proteus context, and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a one-parameter read-only inspection tool, the description covers purpose and output content adequately; only usage guidance is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 0% schema description coverage, so the description must compensate, and it does by naming the expected file format ('.pdsprj container'). That directly clarifies what 'project_file' should point to, though it adds no detail about the parameter's type or path conventions.
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 ('Inspect') and resource ('a .pdsprj container'), and enumerates what it extracts: embedded files, firmware references, MCU hints. The bracketed prefix identifies the Proteus domain. No sibling differentiation is needed since the surrounding sibling tools (EAGLE, Altium, drawio, time utilities) operate on entirely different artifacts, but the definition never explicitly distinguishes itself 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?
The phrase 'without opening Proteus' implies a use case (inspecting a project when the application is unavailable or undesirable), but there is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_applicationA
Suggest which application (and tool family) fits an engineering task best, e.g. antennas -> HFSS, SPICE circuits -> PSpice, coupled physics -> COMSOL, PCB -> Altium, FPGA -> Vivado, symbolic math -> Mathematica, numerics/plots -> MATLAB.
Call this before choosing tools for a task. Returns ranked candidates with the matched terms, what each is best for, whether it is installed here and its tool prefix, plus a head-to-head comparison of the applications that can do this kind of task (strength, when to choose each, limits). The result is a suggestion, not a rule: if the suggested application is not installed or the user prefers another, use an installed alternative and tell the user its limits.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well: it states that the result is a ranked list with matched terms, installation status, tool prefix, and head-to-head comparisons including strengths, choice criteria, and limits. It also clarifies that the result is a suggestion rather than a binding rule.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then adds examples, usage timing, return behavior, and fallback guidance. It is somewhat long, but the details are relevant and structured rather than 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?
Although an output schema exists, the description still provides enough context about the returned recommendation, ranking, installation status, and comparison details. It also covers when to call the tool and what to do when its suggestion cannot be followed, making it complete for an agent.
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 for the single required 'task' parameter is 0%, so the description must compensate. It does this by giving concrete examples of task domains and their matched applications, implying that the parameter is a free-text engineering task description, though it could more explicitly define the expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb phrase, 'Suggest which application (and tool family) fits an engineering task best,' and immediately grounds it with domain-to-application examples such as antennas -> HFSS and PCB -> Altium. This makes the tool's function distinct without needing to inspect schemas or sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Call this before choosing tools for a task,' which gives a clear usage point. It also explains a fallback when the suggested application is unavailable or the user prefers another, though it does not name a sibling alternative such as compare_applications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsC
Search the catalogs by keyword(s) across all applications or one; ranked by name/category/description matches.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| query | Yes | ||
| category | No | ||
| software | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 ranking behavior (by name/category/description matches), which is useful, but says nothing about scoping semantics, result limits, or how the 'applications' filter interacts with results.
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 that leads with the verb and resource and adds the ranking detail. Efficient, with no filler, though it is arguably under-specified rather than 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?
An output schema exists, so return values need not be explained, but with 5 parameters, 0% schema coverage, and no annotations, the description leaves critical inputs (kind, limit, category) and scope behavior undocumented. Inadequate for this parameter count.
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 hints at keyword(s) (query) and applications (software) and ranking fields, but leaves kind, limit, and category entirely undocumented in both schema and description, so the meaning of 3 of 5 params is unaddressed.
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 (catalogs), and notes scope across all applications or one, ranked by name/category/description. It is clearly a keyword search, distinguishing it from list_tools and describe_tool, though it does not name 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?
The phrase 'across all applications or one' implies a scoping choice, but there is no explicit when-to-use guidance or named alternative (e.g. use list_tools to enumerate vs search_tools to find by keyword). Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_policyB
Effective network/internet policy (local-only vs network mode, which tools are disabled, how to change it) and the rules for the output folder.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the content domains (policy mode, disabled tools, change procedure, output folder rules), which is useful, but says nothing about whether the call is read-only, side effects, or permissions. Its query-only, zero-parameter nature limits the risk, keeping this at a middling score rather than low.
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 a parenthetical enumerating the covered topics; front-loaded and free of filler. Slightly long 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?
With an output schema present, return values need no explanation, and the description adequately covers the two subject areas (security policy and output folder rules) for a no-argument informational tool. Only the omission of read-only/side-effect context keeps it from 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?
The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to add or explain. Baseline 4 applies for a no-argument tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear resource (effective network/internet policy and output folder rules) and enumerates the specifics it covers (local-only vs network mode, disabled tools, how to change it). It is distinguishable from most siblings, though the verb is implicit (it reports/describes rather than stating an action).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call this versus siblings such as set_output_folder, describe_tool, or list_tools. The content enumeration hints at usage but no conditions, prerequisites, or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_output_folderA
Write all generated scripts and results into folder, normally the folder the user gave or granted for the task, instead of the adapter's default outputs folder. Call it first in a task that has a folder. Relative paths in later tool arguments are resolved inside it. Each application writes into its own subfolder (e.g. D:\Projects\PCB\orcad) unless per_application_subfolders is false. An empty folder goes back to the default.
The folder must already exist on a local disk. Drive roots, the home folder itself, hidden, system, program, application-data and network folders are refused; MCP_ADAPTER_OUTPUT_ROOTS in .env can restrict it further. The setting applies to this server process (all chats of this client) until changed or the server restarts.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | ||
| per_application_subfolders | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: persistence scope (applies to the server process and all chats of this client until changed or restart), precondition (folder must already exist on a local disk), refusal rules (drive roots, home, hidden/system/program/app-data/network), env-var override (MCP_ADAPTER_OUTPUT_ROOTS), and subfolder layout behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary effect is front-loaded in sentence one, and the remaining sentences cover constraints, precedence, and persistence without filler. It is dense but slightly long and switches between operational and policy detail, which mildly dilutes scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained; what matters — preconditions, refusal cases, scope of the setting, and revert behavior — is all present. For a two-parameter, non-destructive configuration tool this is 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 description coverage is 0%, so the description must compensate, and it does for both parameters: it defines what 'folder' means (the user-granted task folder, must pre-exist, empty string restores default) and what 'per_application_subfolders' does (each application writes into its own subfolder unless false).
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 (write generated scripts/results into a chosen folder) and explicitly contrasts it with the alternative behavior (the adapter's default outputs folder). No sibling tool overlaps this, and an agent can tell immediately it is a configuration/setter tool rather than an execution 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?
Gives explicit ordering guidance ("Call it first in a task that has a folder"), the condition for use (a task that has a folder given/granted by the user), and the condition for reverting (an empty folder goes back to the default). Nothing about when or when-not to call 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.
software_overviewB
Everything an agent needs to decide how to use an application: what it is best for, typical tasks, what it is not suited to, its capability areas (catalog categories with entry counts, browse them with list_tools), the automation entry points (CLI flags, scripting APIs, file formats) and whether it is installed here.
| Name | Required | Description | Default |
|---|---|---|---|
| software | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 richness of the return payload, including install status and entry points, which is real context. However it never states that this is a safe read with no side effects, nor any auth or caching behavior, leaving an agent to assume rather than know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence front-loads the payoff and uses a colon list to enumerate contents efficiently with no filler. The trade-off is length, but every clause maps to a distinct piece of returned 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?
An output schema exists, so return-value structure need not be restated, and the description still usefully previews content. What is missing is the parameter contract and any when-to-use routing relative to the many sibling tools, which for a lookup tool is a meaningful 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 required 'software' parameter has 0% schema description coverage and the description adds nothing about it. It doesn't say whether the value is a display name, an ID, a slug, or a path, nor what happens on an unknown value, 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 enumerates exactly what the tool returns: best-for guidance, typical tasks, anti-use cases, capability areas, automation entry points, and install status. That is a specific resource scope an agent can distinguish from describe_tool or list_software, though the verb is implicit and it never states it is read-only informational.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete routing hint, telling the agent to browse capability areas with list_tools, which is useful. But it never says when to call software_overview versus list_software, describe_tool, or recommend_application, so the choice 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.
time_addB
Add (or subtract with negatives) a duration to a date/time.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| hours | No | ||
| weeks | No | ||
| format | No | ||
| minutes | No | ||
| seconds | No | ||
| datetime | No | now | |
| timezone | No | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it does disclose one non-obvious behavior: negative values perform subtraction. It says nothing about DST handling, timezone conversion behavior, the default of datetime='now', or whether out-of-range units are normalized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the core action, with the negative-value caveat folded in parenthetically. 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 an 8-parameter, unannotated utility tool with no schema descriptions, the definition is too thin. The output schema relieves it of explaining return values, but format, timezone, and datetime-default semantics are essential to calling this correctly and are 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% across 8 parameters, so the description must compensate and does not. It never explains format, timezone semantics, or the datetime default ('now'), leaving the agent to infer the meaning of the format and timezone strings from parameter titles alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (add/subtract) and resources (duration, date/time), making the operation unmistakable. It does not name any sibling such as time_difference or time_now for contrast, but the purpose is clear on its own.
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 is implied: this is the tool for shifting a datetime by a duration, and the negative-value note hints at reversal. There is no explicit when-to-use or when-not-to-use guidance, and no routing advice against siblings like time_difference or time_convert.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time_convertB
Convert a date/time between timezones. Accepts ISO 8601, unix timestamps, 'now', 'today'.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| datetime | Yes | ||
| to_timezone | No | UTC | |
| from_timezone | No | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does add real value by disclosing accepted input forms (ISO 8601, unix timestamps, 'now', 'today'), which is behaviorally meaningful. It says nothing about DST handling, invalid timezone behavior, or how the optional format string affects output, leaving core behavior undisclosed.
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, zero filler, with the core action front-loaded and the input-format detail immediately after. Nothing is redundant or 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?
An output schema exists, so return values need not be explained, and the required datetime parameter is covered. Still, with zero annotations and zero schema coverage, the undefined format parameter, timezone identifier convention, and DST/error behavior leave the definition thinner than a 4-parameter conversion tool warrants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, so the description must compensate. It documents the datetime parameter's accepted formats well, and 'between timezones' weakly implies from_timezone/to_timezone, but the format parameter is never mentioned and no defaults or timezone identifier syntax (IANA name vs. offset) 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 and resource: 'Convert a date/time between timezones.' That is unambiguous about the operation. However, it does not differentiate itself from adjacent siblings such as time_format, time_unix, or time_world_clock, so an agent must still infer which is the right pick for a given request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative tool guidance. The description implies a timezone-conversion context but never says how it relates to time_format or time_world_clock, which overlap in domain. The input-format list is parameter information, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time_differenceC
Elapsed time between two date/times in seconds, minutes, hours, days, weeks and a human string.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | now | |
| start | Yes | ||
| timezone | No | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and falls short. It discloses output units (useful), but says nothing about accepted input date formats, how timezone affects the result, DST boundaries, or what happens with a future start or past end.
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. It spends part of its length enumerating return units, which is arguably redundant given an output schema exists, but the sentence is efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, so that need not be restated, but for a date-parsing tool the critical missing piece is the accepted input format and timezone semantics. With no annotations and 0% schema coverage, the definition is under-specified 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% for 3 parameters, so the description must compensate, and it does not. It never mentions the timezone parameter, the 'end' default of 'now', or the required string format for 'start' and 'end'.
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 operation (elapsed time between two date/times) and enumerates the return units, which cleanly separates it from siblings like time_add and time_now. It does not explicitly name or contrast those siblings, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to pick this over time_add, time_convert, or time_now, and no mention of prerequisites or handling when only one endpoint is supplied. Usage is only inferable from the name and the phrase 'between two date/times'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time_formatC
Format a date/time with a strftime pattern (e.g. '%A %d %B %Y, %I:%M %p').
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | %Y-%m-%d %H:%M:%S | |
| datetime | No | now | |
| timezone | No | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a side-effect-free transformation, nor does it explain the 'now' default for datetime, timezone handling, or whether the input must be an ISO string – all relevant for a formatting 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?
A single front-loaded sentence; the action and mechanism come first and the strftime example earns its place by showing the expected token syntax. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with 0% schema description coverage the accepted input formats for datetime and timezone, and the behavior of the defaults, are unspecified. For a three-parameter tool with no annotations, this leaves material gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across three parameters. The description explains the format parameter via the strftime pattern and example, but says nothing about the datetime input format (default 'now') or the timezone parameter, leaving two of three parameters undefined in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (format) plus resource (date/time) and the exact mechanism (strftime pattern) with a concrete example. This implicitly distinguishes it from sibling tools like time_convert, time_add, or time_now, but it never names or contrasts with 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?
There is no statement of when to use this tool versus siblings such as time_convert, time_now, or time_unix. The example shows how to invoke it but gives no context or exclusion criteria for selecting it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time_list_timezonesA
List IANA timezone names, optionally filtered by substring (e.g. 'Asia', 'London').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. The verb "List" clearly conveys a safe read-only enumeration, but there is no mention of pagination (the limit param implies batching), result size, or browsing behavior, leaving meaningful 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?
A single tight sentence with the core purpose front-loaded and the filter behavior and examples appended. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity list tool with an output schema (so return values need not be described), the definition is mostly adequate, but the undocumented limit parameter is a real hole and no alternative routing is offered among numerous time siblings.
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 successfully explains the filter parameter's semantics (substring matching) with examples, but completely omits the limit parameter, leaving half the parameters undocumented anywhere.
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 ("List IANA timezone names") plus the optional filter capability, so an agent can quickly tell it retrieves timezone identifiers. It does not explicitly differentiate itself from time siblings like time_world_clock or time_convert, leaving that inference to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context via "optionally filtered by substring" with concrete examples ('Asia', 'London'), which hints at lookup/discovery scenarios. However, it never states when to use this versus sibling timezone-related tools, nor any conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time_nowA
Current date/time in a timezone (IANA name like 'Europe/Berlin', 'local', 'EST', or '+03:30').
Returns ISO 8601, unix epoch, UTC offset, DST flag, weekday, ISO week and an optional strftime-formatted string.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| timezone | No | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 is a read-only operation with no destructive concerns, which is straightforward. It discloses the return contents (ISO 8601, unix epoch, offset, DST, weekday, ISO week), which adds behavioral context, but this overlaps with the existing output schema and it says nothing about execution behavior beyond output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose followed by the return detail. Almost every clause earns its place, with only minor redundancy against the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only time-lookup tool with an output schema already documenting return fields, the description covers the essential contract: what it returns and how timezones are specified. The only meaningful gap is the format parameter's exact syntax.
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 timezone parameter's accepted forms (IANA name, 'local', 'EST', '+03:30'), but the 'format' parameter is only alluded to via 'an optional strftime-formatted string' without naming it or its syntax, leaving half the parameters thin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: retrieving the current date/time in a given timezone. It clearly differs from siblings like time_convert, time_add, and time_difference, which perform transformations rather than reading the present moment. It does not name an explicit sibling, but the intent 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?
Usage is implied (get the current time now) rather than stated. There is no explicit when-to-use versus alternatives guidance, nor mention of when-not to use it against siblings such as time_world_clock or time_format. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time_unixC
Convert a date/time to unix epoch seconds/milliseconds (or 'now').
| Name | Required | Description | Default |
|---|---|---|---|
| datetime | No | now | |
| timezone | No | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not explain how seconds vs milliseconds output is selected (no parameter appears to control it), what happens with timezone defaults, whether it is pure/read-only, or any error behavior, leaving real gaps for a conversion 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?
A single front-loaded sentence with no filler; the operation and its output unit lead the description. Nothing wasteful is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, but the definition still omits the input format, timezone handling, and unit-selection behavior across two undocumented parameters with no annotations. For a conversion tool this is thinner than an agent 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 and largely does not. It hints that 'now' is an accepted datetime value, but the timezone parameter is never mentioned and accepted date formats are unspecified, forcing the agent to guess at both inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Convert a date/time to unix epoch seconds/milliseconds') and names the output unit, which is concrete. However, it does nothing to separate itself from close siblings like time_convert, time_now, and time_format, and the 'seconds/milliseconds' phrasing leaves the actual output type ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus time_convert, time_now, or time_format, all of which plausibly overlap. The parenthetical "(or 'now')" even encroaches on time_now's territory without explaining the distinction, so the agent gets no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time_world_clockB
Show one instant across several timezones (defaults to ten major zones).
| Name | Required | Description | Default |
|---|---|---|---|
| zones | No | ||
| datetime | No | now | |
| from_timezone | No | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 usefully discloses that omitting zones yields ten major zones (explaining the null default), but says nothing about timezone string format, DST handling, or error behavior. One meaningful trait is disclosed, but significant behavioral context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler, and the key behavioral default is parenthetical and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, but for a 3-parameter tool with 0% schema coverage and no annotations, the description omits critical input semantics (datetime and from_timezone formats and defaults). It is not complete enough to invoke confidently without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It only clarifies zones (defaults to ten major zones); datetime and from_timezone are left entirely unexplained, including expected formats and the relationship between datetime and from_timezone.
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 (Show) and resource (one instant across several timezones), which is clear and distinct from siblings like time_now and time_convert. However, it doesn't explicitly name the sibling alternatives it differs from, leaving differentiation 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?
Provides no when-to-use guidance, no conditions that select this tool over time_convert, time_now, or time_list_timezones, and no exclusions. Usage is only loosely implied by 'across several timezones'.
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.
31 tool updates
v0.1.0- First observed
adapter_status - First observed
altium_script_template - First observed
compare_applications - First observed
describe_tool - First observed
drawio_codec - First observed
drawio_create_diagram - First observed
drawio_flowchart - First observed
drawio_read - First observed
eagle_bom - First observed
eagle_netlist - First observed
eagle_read_design - First observed
feko_lua_template - First observed
feko_parse_out - First observed
list_categories - First observed
list_software - First observed
list_tools - First observed
orcad_parse_pspice_output - First observed
proteus_project_info - First observed
recommend_application - First observed
search_tools - First observed
security_policy - First observed
set_output_folder - First observed
software_overview - First observed
time_add - First observed
time_convert - First observed
time_difference - First observed
time_format - First observed
time_list_timezones - First observed
time_now - First observed
time_unix - First observed
time_world_clock
TDQS
Scored across 31 tools
Most tools have clearly distinct purposes: the time_* family, the app-specific tools (eagle_*, feko_*, drawio_*), and the catalog browsers are separable. However, the discovery/advisory cluster overlaps—list_software vs software_overview vs adapter_status, and recommend_application vs compare_applications—could cause misselection, and list_tools vs describe_tool vs search_tools blur somewhat.
Names follow a predictable snake_case verb_noun or prefix_noun pattern throughout, with clear per-domain prefixes (time_*, eagle_*, feko_*, drawio_*, altium_, orcad_, proteus_). Even the meta tools (list_*, describe_tool, search_tools, set_output_folder) stay consistent.
31 tools is heavy, sitting above the ideal 3-15 range. The breadth is partly justified by aggregating many engineering applications plus time and meta utilities, but the distribution is uneven (draw.io gets 4 tools while OrCAD/Altium/Proteus get one each), so the count feels padded rather than tightly scoped.
The meta/catalog and time surfaces are complete (list/describe/search, full time arithmetic). But application coverage is thin per app: many supported applications have only a single parse or template tool, and EAGLE lacks create/CAM-export while draw.io lacks update/edit, leaving notable gaps an agent must route around via catalog scripts.
Maintenance
Related MCP Connectors
A registry of AI agent tools — MCP servers, APIs, CLIs, SDKs — kept current by automated ingestion.
150+ vertical AI expert bots as agent tools. $1 bots run on YOUR machine - your data stays yours.
Independent directory of agentic AI tools — search, compare & recommend via MCP. Read-only.
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Related MCP Servers
- AlicenseBqualityCmaintenanceConnects AI coding agents to Autodesk Fusion 360 for CAD automation, enabling natural language control over sketching, 3D modeling, and CAM operations. It uses a Python-based bridge and a custom add-in to execute over 80 tools ranging from simple geometry creation to complex assembly and parameter management.80329 PyPI101MIT
- AlicenseBqualityAmaintenanceProduction-grade AutoCAD automation server enabling real-time CAD control via COM and headless DXF operations through 87 tools, including drawing creation, entity modification, layer management, and batch processing, designed for AI agent integration via the Model Context Protocol.242517 PyPI106MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI hosts to interact with a browser CAD workbench through model-neutral local stdio or authenticated remote MCP tools, supporting command discovery, design-health analysis, and scoped previews while never reading local files or taking over open sessions.MIT
- AlicenseBqualityCmaintenanceEnables AI agents to drive AutoCAD 2024+ and AutoCAD LT through live COM and AutoLISP engines, with support for headless DXF processing, ISO GD&T, P&ID drafting, and Rhino.Inside Grasshopper battery workflows.162MIT