Skip to main content
Glama

WinProLadder MCP

Reverse-engineering and tooling project for FATEK WinProLadder .ldr files.

A working local stdio MCP server with lossless LDR parsing/encoding, a conservative semantic IR, file editing tools, and a user-import-verified start/stop template. Target profile: WinProLadder v3.28 / FBs-20MC. This is not full instruction coverage.

Agent quick start

uv sync --locked
uv run --locked winproladder-mcp --root C:/Fatek/winproladder-mcp

The server waits for MCP requests on stdin. Use the project .codex/config.toml or adapt examples/mcp-client.json to your MCP client. Reload the client connection after setup. See agent guide for exact schemas, paths and limits.

Tools: get_capabilities, inspect_ldr, read_ldr, validate_ladder, simulate_ladder, create_ldr, create_start_stop, export_ldr, modify_network. New files go to artifacts/; existing files and original samples are never overwritten. Timer, Counter, edge instructions and nested branches remain opaque/preserved; they cannot yet be generated from IR.

Related MCP server: Logisim-evolution MCP Server

Development setup

Install uv, then run:

uv sync
uv run pytest
uv run ruff check .
uv run mypy

The project pins Python 3.12 in .python-version; uv sync can install that Python version when it is not already available.

Repository layout

src/winproladder_mcp/  Python package
samples/               Immutable ground-truth WinProLadder exports
tests/                 Automated tests
docs/                  Reverse-engineered format documentation

Do not edit existing .ldr samples. Add a new minimal sample when testing a new instruction or varying one binary property.

Read-only binary research

uv run python -m winproladder_mcp.research inspect samples/test.ldr
uv run python -m winproladder_mcp.research hexdump samples/test.ldr
uv run python -m winproladder_mcp.research diff samples/w1.ldr samples/test2.ldr

inspect tests the currently observed framing and reports CRC validity; it is not a semantic ladder parser. diff compares absolute byte offsets, so insertions shift subsequent comparisons. These commands print to stdout and do not write files. See format findings and requested samples.

Available Tools

9 tools
create_ldrB

Create a new file from IR with sampled header and fresh CRC. Never overwrite files.

ParametersJSON Schema
NameRequiredDescriptionDefault
ladderYes
output_nameYes
allow_unverifiedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior4/5

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

Adds specific behavior beyond annotations: it never overwrites existing files and produces a sampled header with a fresh CRC. Annotations already mark it as a non-destructive write, but the non-overwrite guarantee and output-content details are useful additional context.

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 tightly written sentences with the purpose front-loaded and the key behavioral constraint immediately after. 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?

For a tool with a complex nested input schema, 0% parameter description coverage, and a 3-param signature, the description is too sparse. It doesn't explain what IR means, how to supply the ladder structure, what allow_unverified does, or what happens when a file already exists. Output schema exists, so return values need not be covered, but input context is largely missing.

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

Parameters1/5

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

Schema description coverage is 0% and the description mentions none of the three parameters (output_name, ladder, allow_unverified). It provides no meaning for what these parameters represent or how to supply them.

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 (create) and resource (a new file), and clarifies the source (IR) and key outputs (sampled header, fresh CRC). It doesn't explicitly distinguish itself from siblings like create_start_stop or export_ldr, but the core purpose is clear.

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 guidance on when to use this tool versus alternatives such as simulate_ladder, validate_ladder, or export_ldr. The only constraint given ('Never overwrite files') is a behavioral rule, not usage context.

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

create_start_stopC

Create X0/Y0 self-hold. True: X1=1 stops (verified). False: X1=0 stops (candidate).

ParametersJSON Schema
NameRequiredDescriptionDefault
output_nameYes
allow_unverifiedNo
stop_input_active_highNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare this is a non-read-only, non-destructive, closed-world mutation. The description adds some semantics via 'verified/candidate', but never explains what verification means, whether the created rung is persisted, or what side effects occur. Given the mutation nature, the added context is thin.

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 definition is compact and front-loaded, which is good, but the telegraphic fragments read as under-specification rather than efficient concision. Every token counts here for the wrong reason: too little meaning per sentence.

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 covered, but with 0% schema coverage on parameters and no behavioral explanation, the description is insufficient for a creation tool with three arguments. An agent lacks enough to invoke it confidently.

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 carry the parameter burden. It partially addresses stop_input_active_high and hints at allow_unverified ('verified/candidate'), but output_name is never explained and the mapping is cryptic, leaving the bulk of semantics 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?

States a specific verb (Create) and a resource (X0/Y0 self-hold), which is more than a tautology. However, 'X0/Y0 self-hold' is heavy domain jargon that an agent without ladder-logic context cannot decode, and there is no differentiation from siblings like create_ldr. Purpose is implied but not plainly stated.

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 and no mention of alternatives such as create_ldr or validate_ladder. The two 'True/False' lines describe parameter behavior rather than selection criteria, so the agent gets no routing help.

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

export_ldrB

Re-encode to a NEW file, preserving opaque bytes and any original invalid CRC.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
output_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

Annotations only say it is a non-read-only, non-destructive, non-open-world write. The description adds real behavioral value beyond that: output goes to a NEW file rather than mutating in place, and opaque bytes and corrupt CRCs are preserved verbatim rather than re-normalized. It still does not say what happens if output_name already exists.

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 tightly-written sentence with the action front-loaded and no filler. Given the 0% parameter coverage, the brevity is arguably under-specification rather than economy, but nothing present is wasteful.

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 no explanation. However, for a file-writing tool with two opaque required parameters, the description omits overwrite semantics, path conventions, and what 'path' vs 'output_name' each refer to, leaving meaningful 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 description coverage is 0%, so both required parameters are bare strings ('path', 'output_name'). The description's phrase 'to a NEW file' hints that output_name is the destination, but it never clarifies that path is the source LDR, nor gives any format or path-convention guidance. The description does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb ('Re-encode') and the target ('to a NEW file'), plus two fidelity guarantees (opaque bytes, original invalid CRC). It implicitly distinguishes itself from read_ldr/inspect_ldr (read-only) and create_ldr (creation from scratch), though it never names an LDR or says what is being re-encoded from.

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 when-to-use guidance, no prerequisites, and no reference to any sibling. An agent cannot tell from the description whether this is for round-tripping an existing file, converting formats, or exporting after a edit session.

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

get_capabilitiesA
Read-only

Get supported operations, instruction/address limits, JSON schema and an example.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already establish this is a safe, non-destructive, non-open-world read (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds the useful fact that the payload includes limits, schema, and an example, but discloses nothing about freshness, scope, or cost.

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 names the verb and then lists the returned contents with no filler or redundancy.

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, the return payload does not need documenting, and annotations cover the safety profile. The only missing element for a zero-param utility is a cue on when in a workflow to invoke it, which keeps this just short of 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?

Zero parameters, so per the rubric the baseline is 4. The description correctly implies no input is required by describing the call purely in terms of returned content.

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?

Specific verb ('Get') plus resource ('capabilities') with an enumeration of what is returned: supported operations, instruction/address limits, JSON schema, and an example. This clearly separates it from the mutating/inspection siblings (create_ldr, validate_ladder, inspect_ldr), though it never names 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?

Usage is only implied: an agent can infer this is a discovery/introspection call for the LDR toolset. There is no explicit 'call this before X' guidance or any statement of when not to use it versus the sibling tools.

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

inspect_ldrB
Read-only

Inspect framing, raw bytes, offsets and CRC validity. Read paths are workspace-scoped.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

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?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact — that paths are resolved within a workspace scope — but says nothing about output size, binary/raw content, or failure behavior when CRC checks fail.

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, purpose first and scoping constraint second, with no filler. Both sentences carry information an agent can act on.

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, and annotations cover the safety profile; for a one-parameter read tool the description is nearly sufficient. The remaining gap is sibling differentiation, which matters given read_ldr and validate_ladder sit alongside it.

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 single 'path' parameter has 0% schema description coverage, so the description must compensate. 'Read paths are workspace-scoped' hints that the path is resolved within a workspace, which is more than the empty schema provides, but it omits any format or relative-vs-absolute detail, leaving the semantics only half-specified.

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 (Inspect) plus the concrete aspects examined: framing, raw bytes, offsets, and CRC validity. That is far more informative than the bare name, but it does not disambiguate from siblings such as read_ldr or validate_ladder, whose territory (reading, validating) overlaps with what is described here.

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 only guidance offered is 'Read paths are workspace-scoped', which is a constraint rather than a when-to-use rule. With read_ldr and validate_ladder as siblings, the description never says when inspection is preferable to simply reading or validating the file.

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

modify_networkC

Edit in a NEW file; index 0 is N000. Preserve untouched raw records.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
indexYes
networkNo
operationYes
output_nameYes
allow_unverifiedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior3/5

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

With annotations declaring readOnlyHint=false and destructiveHint=false, the safety profile is already covered. The description adds real behavioral context beyond that: edits land in a NEW file via output_name and untouched raw records are preserved, consistent with the non-destructive hint. It still omits what output_name collisions do and any verification requirement around allow_unverified.

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?

Two short clauses with no filler, but the phrasing is cryptic and under-specified rather than genuinely concise; the key idea (new-file output) is buried after the edit statement.

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 mutation tool with nested $defs (Network/Step/Contact/Coil) and a 6-param schema with zero parameter documentation, the description is far too thin. The output schema covers return values, but the operational meaning of operation/network/allow_unverified is 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 6 parameters, so the description must carry the load. It clarifies 'index' (0 is N000) and the destination semantics of output_name, but says nothing about path, operation, network, or allow_unverified, leaving most parameters undocumented in both places.

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?

States the verb 'Edit' and implies the resource (a network), plus a concrete detail that index 0 is N000. However it never says what a 'network' is in this system and offers no differentiation from siblings like create_ldr, read_ldr, or validate_ladder, leaving the agent to infer scope.

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?

'Edit in a NEW file' hints that the original is not overwritten, which is a useful usage constraint, but there is no statement of when to choose this over the many sibling tools or any prerequisite (e.g. validated ladder). No when-not guidance at all.

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

read_ldrB
Read-only

Read logic in display order; unknown payloads stay opaque. Reject bad CRC.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already establish readOnly/non-destructive/non-open-world, so the bar is lower, and the description still adds real traits: output is in display order, unrecognized payloads are left opaque rather than decoded, and files with bad CRC are rejected. Those are non-obvious behaviors an agent would otherwise learn only by trial.

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?

Three compact clauses, no waste, with the core action front-loaded before the behavioral caveats. Perfectly sized for a single-parameter read tool.

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, and the description covers validation failure (bad CRC) and opaque payload handling. What is missing is any routing versus the similar-looking sibling inspect_ldr.

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 parameter (path) has 0% schema description coverage and the description says nothing about it — no format, no relative-vs-absolute guidance. Although 'path' is fairly self-evident, the description fails to compensate for the coverage gap as required when coverage is below 50%.

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 (logic, i.e. the LDR content) plus a scope qualifier (display order). It does not distinguish itself from the sibling inspect_ldr, which sounds like it also reads LDR files, so an agent cannot fully disambiguate from the text alone.

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 when-to-use guidance, no prerequisites, and no mention of the alternatives (inspect_ldr, validate_ladder, export_ldr) that share this domain. The agent must infer selection from the name alone.

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

simulate_ladderB
Read-only

Boolean IR scan model, not PLC emulation. Missing X inputs reset false each scan.

Missing initial devices default false. T/C contacts are fixed initial states; timers/counters are not executed. Networks evaluate in display order.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYes
ladderYes
initialNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

With readOnlyHint/destructiveHint already covering the safety profile, the description adds substantial behavioral context: missing X inputs reset false every scan, missing initial devices default false, T/C contacts are fixed initial states, timers/counters are not executed, and networks evaluate in display order. These are exactly the non-obvious execution semantics an agent needs and none are in the annotations.

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 most important distinction ('Boolean IR scan model, not PLC emulation') is front-loaded, and each following sentence adds a distinct execution rule. Slightly terse and fragmented, 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?

An output schema exists, so return values need not be explained, and the description covers the unusual evaluation quirks for a simulator. The remaining gap is that it never connects the ladder parameter to what the simulation actually produces, leaving a modest amount to inference.

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 carry parameter meaning. It indirectly explains two of the three parameters ('Missing X inputs reset false each scan' maps to inputs; 'Missing initial devices default false' maps to initial) and network ordering for ladder, but it never describes the expected shape of inputs/initial maps or which device keys they accept.

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 frames the tool as a 'Boolean IR scan model, not PLC emulation', which conveys the computation model but never plainly states the verb+resource (e.g. 'simulates execution of a ladder program'). The contrast with PLC emulation is helpful positioning, but it does not differentiate this tool from actual siblings like validate_ladder or inspect_ldr.

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 use this versus validate_ladder, inspect_ldr, or the other siblings. The description only explains internal semantics of the model, never a usage condition, prerequisite, or exclusion.

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

validate_ladderC
Read-only

Check IR encoding and report import verification. Not PLC syntax validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
ladderYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the non-mutating safety profile is covered. The description adds some scope context by clarifying it reports import verification rather than mutating state, but says nothing about output content (e.g., errors vs warnings) despite an output schema existing.

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 short sentences with no filler, and the core action is front-loaded ahead of the scope exclusion. It is terse and efficient, though arguably underspecified rather than optimally trimmed.

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. But the description does not decode the "IR encoding" concept or place the tool in a workflow relative to siblings, leaving the agent with only a bare scope statement for a validation tool.

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 `ladder` parameter has no description in the schema (0% top-level coverage), and the tool description never mentions its structure or expected shape. It relies entirely on the nested $defs for meaning, so the prose compensates for none of the coverage gap on the required argument.

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 names a verb-plus-resource ("Check IR encoding") and adds a negative scope boundary ("Not PLC syntax validation"), which is a genuine differentiator. However, "IR encoding" is unexplained jargon and it never distinguishes itself from close siblings like inspect_ldr, read_ldr, or simulate_ladder, so an agent must infer which validation tool 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 a single when-not clause ("Not PLC syntax validation"), but no when-to-use condition, no prerequisites, and no named alternative among the eight siblings. The agent is left to guess at what point in a workflow this validator should be invoked.

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. 9 tool updatesv0.1.0
    • First observedcreate_ldr
    • First observedcreate_start_stop
    • First observedexport_ldr
    • First observedget_capabilities
    • First observedinspect_ldr
    • First observedmodify_network
    • First observedread_ldr
    • First observedsimulate_ladder
    • First observedvalidate_ladder

TDQS

B3.3/5.0

Scored across 9 tools

Disambiguation4/5

Most tools target distinct operations (create, read, modify, simulate, validate, inspect), but create_ldr and export_ldr both produce new files and could be confused, and create_start_stop overlaps in spirit with create_ldr as a specialized generator. inspect_ldr vs validate_ladder vs read_ldr boundaries are reasonably clear from descriptions.

Naming Consistency5/5

Consistent verb_noun snake_case throughout (create_ldr, read_ldr, modify_network, validate_ladder, inspect_ldr). create_start_stop is the only longer form but still follows the same verb-led convention.

Tool Count5/5

Nine tools is well-scoped for a ladder-file manipulation server, spanning creation, reading, editing, export, simulation, inspection, validation, and capabilities discovery without excess.

Completeness4/5

Covers the full lifecycle (create, read, modify, export, validate, simulate) plus a capabilities introspector and a convenience generator. No explicit delete, but the 'never overwrite' design implies deletions are intentionally out of scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    A
    maintenance
    Provides read-only analysis of Mitsubishi GX Works3 PLC projects via MCP, enabling device tracing, cross-referencing, ladder inspection, linting, and report generation without modifying source projects.
    15
    1
    -
  • A
    license
    A
    quality
    A
    maintenance
    Zero-dependency stdio bridge to Moltline Studio's fleet of 14 hosted MCP servers covering code review, time operations, data transforms, business ops, education, research, outreach and more. Free tier requires no registration; premium tools unlock with a license. Independently audited, MCPize Verified A.
    2
    10
    MIT
  • F
    license
    C
    quality
    B
    maintenance
    MCP server for editing OMRON CX-Programmer ladder logic projects, supporting sections, rungs, symbols, and program validation via natural language.
    38
    2
    -