Open-source MCP-enabled transmission line calculator for PCB impedance, microstrip, stripline, and differential pair analysis
lineforge has 11 well-structured tools with consistent naming (verb_noun pattern: list_, describe_, calculate_, import_, rasterize_, solve_, tasks_, run_) and mostly complete schemas. Descriptions are present and domain-specific (e.g., 'Closed-form analytical solve. Synchronous (microseconds).' for calculate_impedance). However, parameter descriptions are sparse or missing context for complex tools like solve_cgp (8 params, some underdescribed). Output schemas are not documented. Error handling is minimal, no recovery guidance or actionable error messages visible. Tool composition is sound (single responsibility), but some tools like run_atlc2_script accept free-form script text without validation hints.
Closed-form analytical solve. Synchronous (microseconds).
JSON Schema for a single geometry type.
Discriminated-union JSON Schema across all geometries.
Decode a base64-encoded BMP usermap and store it as a resource.
List every supported transmission-line geometry.
Health check. Returns ``{"status": "ok", "version": ..., "phase": 2}``.
Rasterize a parameterized geometry to a Usermap and store it.
solve_cgp has 8 parameters with minimal descriptions. 'render_fields' is described as 'List of field types to render as PNG resources' but does not specify valid field types, format, or examples. 'method' enum is documented inline ('sor'|'amg'|'auto') but lacks explanation of when to use each.
run_atlc2_script accepts free-form 'script_text' with no validation hints, format specification, or error recovery guidance. LLMs cannot infer valid atlc2 syntax. No mention of what happens on parse failure or how to correct invalid scripts.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. E.g., calculate_impedance returns impedance values, but structure (single value? object with Z0, Zdiff? units?) is undocumented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Execute an atlc2-style script (geometry definitions + solver directives) and return outputs.
Solve C and Gp asynchronously via the bitmap Laplace solver. Returns a ``taskId`` immediately. Poll ``tasks_get(taskId)`` until status becomes ``completed`` or ``failed``.
Cancel a running or pending task.
Poll the status of an async task. Returns status, result (if completed), or error (if failed).
Error handling is not visible in tool definitions. No recovery guidance (e.g., 'If geometry is invalid, call describe_geometry first'). No error classification (retryable vs. fatal). Agents cannot self-correct on failure.
Parameter 'pixel_width' in rasterize and solve_cgp accepts 'string|number|null' but description does not clarify: what string formats are valid? ('0.1mm', '100um', '1e-4m'?) What is the numeric unit (meters? micrometers?)? Ambiguity invites LLM errors.