Skip to main content
Glama

MCP-ADAPTER

A single Model Context Protocol server that gives AI agents two things for fourteen engineering and design applications:

  1. 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.

  2. 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).

WARNING

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

matlab

matlab -batch, JSON round-trip of workspace variables

Simulink

simulink

MATLAB API (sim, Simulink.SimulationInput, find_system, set_param)

Wolfram Mathematica

mathematica

wolframscript -code / -file, Export[]

COMSOL Multiphysics

comsol

comsolbatch (studies, parameter lists, model methods), comsol compile, MPh Python

Adobe Photoshop

photoshop

ExtendScript/JSX via COM (Photoshop.Application), osascript or direct launch

Cadence OrCAD (Capture, PSpice, PCB Editor)

orcad

pspice.exe batch runs + .out parsing, Capture Tcl scripts

Altium Designer

altium

X2.EXE -RScriptFile/-RProcName DelphiScript projects

Proteus Design Suite

proteus

GUI launch, custom CLI pass-through, .pdsprj inspection

AMD Vivado

vivado

vivado -mode batch -source Tcl, Hardware Manager, vitis_hls

Autodesk AutoCAD

autocad

accoreconsole.exe scripts + AutoLISP, DXFOUT, -PLOT, COM SendCommand

Ansys HFSS (Electronics Desktop)

hfss

ansysedt -ng -RunScriptAndExit IronPython, -BatchSolve, PyAEDT

Autodesk EAGLE (retired June 2026)

eagle

eaglecon -X -dCAMJOB CAM jobs, XML design reading (BOM, netlist), -C editor commands

draw.io / diagrams.net

drawio

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

MCP_ADAPTER_NETWORK_MODE

local (default) / network

local: HTTP/SSE transports may only bind 127.0.0.1/localhost; any other --host aborts start-up (exit code 2). DNS-rebinding protection rejects requests whose Host/Origin header is not localhost. network: other interfaces are allowed when explicitly requested with --host.

MCP_ADAPTER_ALLOWED_HOSTS

comma list

network mode only: Host header allow-list (e.g. 192.168.1.20:8000); enables rebinding protection for those hosts.

MCP_ADAPTER_AUTH_TOKEN

random string (24+ characters)

Bearer token for the HTTP transports. Required in network mode: without it the server refuses to start an HTTP transport, and every request must send Authorization: Bearer <token> (compared in constant time; wrong or missing tokens get 401). Optional in local mode, enforced whenever set. mcp-adapter-setup and the workspace UI generate one when you choose network mode; it stays in .env and is never shown back in the UI.

MCP_ADAPTER_ALLOW_INTERNET

true / false (default)

When false, search_docs_online (Tavily) and mathematica_wolfram_alpha are not registered at all, so no code path can reach the internet. Everything else is local subprocess automation.

What each transport does:

  • stdio (default) – the MCP client starts mcp-adapter as a child process and talks over pipes. No socket is opened, no firewall prompt can appear for it.

  • streamable-http / sse – a TCP listener. In local mode it is bound to 127.0.0.1 only. 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 no

Or 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>=false or 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.1 only 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 example D:\Projects\PCB\orcad, unless per_application_subfolders is 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 (default outputs/ 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_ROOTS in .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-ui

This 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, and workspace_run for 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>_EXE variable 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_software shows, per application, whether it is installed and which automation tools are available or hidden; adapter_status adds the reason for every hidden tool (which variable to set). The server instructions tell agents to consult these first.

  • Installed something later? Set <SOFTWARE>_EXE if needed and restart the server; detection happens at start-up.

  • MCP_ADAPTER_EXPOSE_UNAVAILABLE=true in .env registers every tool regardless (useful for demos and tests); calls for missing software then return ok: false with the same hint instead of failing.

Optional extras:

  • pip install pywin32 – synchronous Photoshop/AutoCAD COM automation on Windows

  • pip 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_software and software_overview return best_for, typical_tasks, not_ideal_for and prefer_over per application; software_overview also 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

hfss_*

Antenna placement on vehicles/aircraft/ships, electrically large RCS, EMC with cable harnesses, characteristic modes, FSS, windscreen antennas, radio coverage (WinProp)

Feko

feko_*

Coupled physics on a geometry: heat, structural, fluid/CFD, electrostatics/magnetics, acoustics, electrochemistry and batteries, plasma, MEMS, topology optimization

COMSOL

comsol_*

Circuit simulation with real components (transient, AC/DC sweeps, noise, Monte Carlo, Smoke), Probe measurements

PSpice

orcad_pspice_*

PCB layout, footprints, design rules and queries, Gerbers/ODB++, ActiveBOM, Draftsman, multi-board and harness

Altium

altium_*

Existing EAGLE designs: parts, nets, BOM, netlist, Gerber/Excellon/assembly output with CAM jobs (EAGLE is retired; no new layout work)

EAGLE

eagle_*

Firmware running together with its circuit (Arduino/PIC/AVR/ARM/Pico), virtual instruments, IoT Builder

Proteus

proteus_*

FPGA: Verilog/VHDL synthesis, XDC timing, bitstreams, IP block designs, HLS, DFX, boot images

Vivado

vivado_*

Block-diagram dynamic systems, control loops, Stateflow, Simscape physical models, verification, code generation

Simulink

simulink_*

Exact/symbolic mathematics, closed forms, special functions, graph theory, curated data, uncertainty

Mathematica

mathematica_*

Numerics, signal/image/audio processing, filter and control design, ML/DL/RL, comms waveforms and BER, sensor fusion, data analysis, plots

MATLAB

matlab_*

DWG/DXF technical drawings, blocks and attributes, sheet sets, 3D solids, AutoLISP/.NET automation

AutoCAD

autocad_*

Raster photos, retouching, Camera Raw, generative fill, batch export, UXP/ExtendScript automation

Photoshop

photoshop_*

Flowcharts, block, UML/ER/BPMN and cloud architecture diagrams, CSV-driven diagrams

draw.io

drawio_*

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) (antenna_design)

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 (antenna_placement_rcs)

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 (rf_passives_si)

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 (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 (power_electronics)

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 (schematic_capture)

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 (pcb_layout)

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 (pcb_3d_mcad)

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 (embedded_firmware)

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 (fpga_hardware)

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 (control_dynamic_systems)

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 (differential_equations)

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 (symbolic_math)

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 (data_analysis_ml)

MATLAB → Mathematica

MATLAB for engineering data, domain toolboxes and deployment; Mathematica for exploratory and symbolic statistics.

Signal and scientific image processing (signal_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 (photo_editing)

Photoshop → MATLAB → Mathematica

Photoshop for anything visual; MATLAB or Mathematica only for algorithmic batch operations.

Structural analysis (stress, vibration, buckling, fatigue) (structural_fem)

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 (thermal)

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 (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 (low_frequency_em)

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 (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) (coupled_multiphysics)

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 (chemistry_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 (optics)

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 (emc_emi)

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 (technical_drawings)

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) (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

MCP_ADAPTER_NETWORK_MODE, MCP_ADAPTER_ALLOW_INTERNET, MCP_ADAPTER_ALLOWED_HOSTS

security policy, see Security and network policy; set by mcp-adapter-setup

MCP_ADAPTER_EXPOSE_UNAVAILABLE

false (default): register automation tools only for detected applications; true: register all, see Adapter behaviour

TAVILY_API

key for search_docs_online (live web search of vendor documentation); only used when MCP_ADAPTER_ALLOW_INTERNET=true

MATLAB_EXE, WOLFRAMSCRIPT_EXE, COMSOL_EXE, PHOTOSHOP_EXE, ORCAD_CAPTURE_EXE, PSPICE_EXE, ALTIUM_EXE, PROTEUS_EXE, VIVADO_EXE, VITIS_HLS_EXE, AUTOCAD_CORE_CONSOLE_EXE, ANSYS_EDT_EXE, FEKO_EXE, EAGLE_EXE, DRAWIO_EXE

explicit executable paths; when unset the adapter looks on PATH and in the usual vendor install folders (newest version wins)

MCP_ADAPTER_TIMEOUT

default timeout in seconds for launching an application (600)

MCP_ADAPTER_OUTPUT_DIR

where generated scripts, logs and results are written (./outputs)

PSPICE_ARGS, ORCAD_CAPTURE_TCL_CMD, ALTIUM_SCRIPT_ARGS, PHOTOSHOP_APP_NAME

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 policy

The 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.server

On 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

list_software

supported applications, catalog sizes, whether the executable was found

list_categories(software)

catalog categories with counts

list_tools(software, category?, kind?, limit, offset)

compact rows of catalog entries

describe_tool(software, name)

full entry as Markdown: description, usage, parameters, example, notes, docs

search_tools(query, software?, kind?, category?)

ranked keyword search across one or all catalogs

software_overview(software)

product summary + automation entry points (CLI flags, APIs, file formats)

recommend_application(task)

suggests the application for a task (what each is best for, installed here or not, tool prefix) with the matching comparison and installed alternatives

compare_applications(task?, area?)

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

search_docs_online(query, software?)

live documentation search restricted to vendor sites (Tavily); only registered when MCP_ADAPTER_ALLOW_INTERNET=true

adapter_status

detected executables, env overrides, the active security policy and the current output folder

set_output_folder(folder, per_application_subfolders?)

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

security_policy

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

matlab_run_code, matlab_run_file, matlab_call_function, matlab_eval, matlab_plot_to_file, matlab_version, matlab_installed_toolboxes

Simulink

simulink_simulate, simulink_model_info, simulink_list_blocks, simulink_get_block_parameters, simulink_set_block_parameters, simulink_build_model, simulink_export_diagram

Mathematica

mathematica_evaluate, mathematica_run_file, mathematica_run_script, mathematica_export, mathematica_wolfram_alpha, mathematica_version

COMSOL

comsol_list_modules, comsol_search_examples, comsol_example_info, comsol_run_example, comsol_build_from_java, comsol_inspect_model, comsol_evaluate, comsol_run_batch, comsol_run_method, comsol_compile_java, comsol_run_python, comsol_model_summary

Photoshop

photoshop_run_jsx, photoshop_run_action, photoshop_document_info, photoshop_batch_process, photoshop_export_layers

OrCAD

orcad_pspice_simulate, orcad_pspice_simulate_netlist, orcad_parse_pspice_output, orcad_capture_open, orcad_capture_run_tcl

Altium

altium_open, altium_run_script_project, altium_run_delphiscript, altium_script_template

Proteus

proteus_open_project, proteus_run_cli, proteus_project_info

Vivado

vivado_run_tcl, vivado_project_info, vivado_build_project, vivado_reports, vivado_program_device, vivado_create_project, vivado_run_hls

AutoCAD

autocad_run_script, autocad_run_lisp, autocad_drawing_info, autocad_export_dxf, autocad_plot_to_pdf, autocad_batch, autocad_send_command

HFSS

hfss_run_script, hfss_batch_solve, hfss_project_info, hfss_set_variables_and_solve, hfss_export_touchstone, hfss_export_report_csv, hfss_run_pyaedt

Feko

feko_version, feko_solve, feko_batch_process, feko_run_cadfeko_script, feko_run_postfeko_script, feko_parse_out, feko_lua_template

EAGLE

eagle_version, eagle_cam_jobs, eagle_cam_job, eagle_cam_output, eagle_run_commands, eagle_read_design, eagle_bom, eagle_netlist

draw.io

drawio_create_diagram, drawio_flowchart, drawio_export, drawio_read, drawio_codec

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 source command unless ORCAD_CAPTURE_TCL_CMD is configured.

  • Altium Designer is driven with X2.EXE -RScriptFile:<PrjScr> -RProcName:<Unit>Proc>; override the switch template with ALTIUM_SCRIPT_ARGS if your version expects different names.

  • Proteus has no documented headless simulation switch; proteus_run_cli passes arbitrary switches through.

  • Feko (verified with 2026.1): runfeko MODEL [-np N] [--use-gpu] [--priority x] solves; cadfeko_batch MODEL.cfx -# VAR=VALUE --force-mesh changes variables and re-meshes; Lua scripts run with cadfeko / postfeko [MODEL] --non-interactive --run-script FILE [--configure-script "..."]. runfeko has no --version switch (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.brd writes Gerber files, the Gerber job file, Excellon drill and assembly data (the adapter picks the shipped example_N_layer.cam job 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/.lbr files are XML (doc/eagle.dtd), so eagle_read_design, eagle_bom and eagle_netlist work 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 log solves a model or runs a compiled Java model program; a model built by a class is saved as out_<ModelTag>.mph, which the adapter reports. comsolcompile exits with code 0 even when compilation fails, so the adapter checks its message and the .class file. comsol_inspect_model and comsol_evaluate compile 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.py regenerates 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 statistics

To 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 tools
adapter_statusB

Which applications were detected, which automation tools are exposed or hidden (and why), and the security policy.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
templateYes
output_fileNo
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
taskNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does 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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
softwareYes
as_markdownNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNodecode
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
edgesNo
nodesYes
titleNoPage-1
directionNoTB
output_fileNo
export_formatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYes
titleNoFlowchart
directionNoTB
output_fileNo
export_formatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
output_csvNo
design_fileYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
design_fileYes
output_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
max_itemsNo
design_fileYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
modelNoD:/feko/model.cfx
outputNoD:/feko/result.csv
frequency_hzNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
out_fileYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
softwareYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
offsetNo
categoryNo
softwareYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
out_fileYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_fileYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
queryYes
categoryNo
softwareNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNo
per_application_subfoldersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so 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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
softwareYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
hoursNo
weeksNo
formatNo
minutesNo
secondsNo
datetimeNonow
timezoneNoUTC

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
datetimeYes
to_timezoneNoUTC
from_timezoneNoUTC

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNonow
startYes
timezoneNoUTC

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo%Y-%m-%d %H:%M:%S
datetimeNonow
timezoneNoUTC

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
timezoneNoUTC

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
datetimeNonow
timezoneNoUTC

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
zonesNo
datetimeNonow
from_timezoneNoUTC

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 31 tool updatesv0.1.0
    • First observedadapter_status
    • First observedaltium_script_template
    • First observedcompare_applications
    • First observeddescribe_tool
    • First observeddrawio_codec
    • First observeddrawio_create_diagram
    • First observeddrawio_flowchart
    • First observeddrawio_read
    • First observedeagle_bom
    • First observedeagle_netlist
    • First observedeagle_read_design
    • First observedfeko_lua_template
    • First observedfeko_parse_out
    • First observedlist_categories
    • First observedlist_software
    • First observedlist_tools
    • First observedorcad_parse_pspice_output
    • First observedproteus_project_info
    • First observedrecommend_application
    • First observedsearch_tools
    • First observedsecurity_policy
    • First observedset_output_folder
    • First observedsoftware_overview
    • First observedtime_add
    • First observedtime_convert
    • First observedtime_difference
    • First observedtime_format
    • First observedtime_list_timezones
    • First observedtime_now
    • First observedtime_unix
    • First observedtime_world_clock

TDQS

B3.2/5.0

Scored across 31 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Connects 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.
    80
    329 PyPI
    101
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Production-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.
    242
    517 PyPI
    106
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
  • A
    license
    B
    quality
    C
    maintenance
    Enables 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.
    162
    MIT