TwinCAT Validator MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TwinCAT Validator MCP Servervalidate MotorControl.TcPOU and suggest safe fixes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TwinCAT Validator MCP Server
An MCP server that validates, auto-fixes, and scaffolds TwinCAT 3 XML files (.TcPOU, .TcIO, .TcDUT, .TcGVL). Connect it to any LLM client to give your AI assistant reliable, deterministic TwinCAT code quality tooling — structural checks, 21 IEC 61131-3 OOP checks, auto-fix pipelines, and canonical skeleton generation.
Supported File Types
Extension | Description |
| Program Organization Units — Function Blocks, Programs, Functions |
| I/O configurations — Interfaces |
| Data Unit Types — Structures, Enums, Type Aliases |
| Global Variable Lists |
Related MCP server: tiacommander-mcp
Installation
pip install twincat-validator-mcpFrom Source
git clone https://github.com/agenticcontrolio/twincat-validator-mcp.git
cd twincat-validator-mcp
pip install -e .Claude Desktop Extension
The easiest way to use this server with Claude Desktop is via the one-click .dxt extension:
pip install twincat-validator-mcpDownload the
.dxtfile from the latest releaseOpen Claude Desktop → Settings → Extensions → Install Extension
See dxt/README.md for full instructions and troubleshooting.
Connecting to an LLM Client
For other clients (Cursor, VS Code, Windsurf, Cline), the server uses stdio transport. Add the following to your client's MCP config file:
Cursor — .cursor/mcp.json
{
"mcpServers": {
"twincat-validator": {
"command": "twincat-validator-mcp",
"args": []
}
}
}VS Code (Copilot / Continue) — .vscode/mcp.json
{
"servers": {
"twincat-validator": {
"type": "stdio",
"command": "twincat-validator-mcp",
"args": []
}
}
}Windsurf — ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"twincat-validator": {
"command": "twincat-validator-mcp",
"args": []
}
}
}Cline (VS Code Extension)
{
"mcpServers": {
"twincat-validator": {
"command": "twincat-validator-mcp",
"args": [],
"disabled": false
}
}
}Replace "command": "twincat-validator-mcp" with:
"command": "python",
"args": ["-m", "twincat_validator"],
"cwd": "/path/to/twincat-validator-mcp"MCP Tools
Validation
Tool | Description |
| Full validation of a single file — returns all issues with severity, location, code snippet, and explanation |
| Validate multiple files matching glob patterns (e.g. |
| Quick critical-only check to confirm a file is safe to import into TwinCAT |
| Run a named subset of validation checks on a file |
| Return a 0–100 health score with issue counts by severity |
| Generate prioritized fix recommendations from a validation result |
Auto-fix
Tool | Description |
| Apply all safe auto-fixes to a single file in deterministic order |
| Apply auto-fixes to multiple files matching glob patterns |
| Generate a canonical, deterministic XML skeleton for a given file type and subtype |
| Promote inline |
Orchestration
Tool | Description |
| Full enforced pipeline for one file: validate → autofix → validate → suggest fixes if still unsafe |
| Full enforced pipeline across multiple files with summary or full response modes |
| Run the strict pipeline twice and report per-file idempotence stability |
| Resolve the active OOP validation policy for a file or directory (walks ancestor dirs for |
| Validate the nearest |
| Return curated knowledge-base entries and OOP policy scoped to a workflow stage ( |
Validation Checks
Structure & Format (critical — blocks import)
XML structure validity
GUID format (
{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx})GUID uniqueness across elements
Property getter VAR blocks (missing
VAR/END_VAR)LineIds count consistency
File ending format
Style (warning — advisory)
Tab characters (TwinCAT requires spaces)
2-space indentation
Element ordering
Naming conventions (
FB_,PRG_,FUNC_,E_,ST_,I_,GVL_)Excessive blank lines
CDATA formatting
OOP — IEC 61131-3 (21 checks)
Runs automatically when EXTENDS or IMPLEMENTS is detected. Skipped for procedural code.
Category | Checks |
Inheritance safety | Extends visibility, extends cycle detection, diamond inheritance warning |
Override correctness | Override marker, override signature match, override super call |
Interface compliance | Interface contract, inheritance property contract, interface segregation |
FB lifecycle |
|
Memory safety | Dynamic creation attribute, pointer/delete pairing |
Design quality |
|
Property/method | Property accessor pairing, method visibility consistency, method count |
Auto-fix Capabilities
Fixes are applied in a deterministic, dependency-aware order:
Tabs → 2 spaces (runs before indentation)
File ending — fixes truncated
]]>after</TcPlcObject>Property newlines — normalizes declaration line breaks
CDATA formatting — corrects CDATA section structure
Property VAR blocks — inserts missing
VAR/END_VARin gettersExcessive blank lines — reduces to max 2 consecutive
Indentation — normalizes to 2-space multiples
GUID case — uppercases hex to canonical lowercase
LineIds — experimental generation (marked unsafe, opt-in only)
Running autofix twice on the same file produces byte-identical output (idempotency guaranteed).
Intent-Aware OOP Enforcement
All tools accept an intent_profile parameter:
Value | Behavior |
| Detects OOP patterns ( |
| Skips all 21 OOP checks regardless of file content |
| Always runs OOP checks |
Batch tools scan all .TcPOU files to resolve "auto" once at the batch level.
Health Score
Files are scored 0–100 based on issue counts:
Deduction | Severity |
−25 pts | Critical / error |
−5 pts | Warning |
−1 pt | Info |
Score | Rating |
90–100 | Excellent — production ready |
70–89 | Good — minor issues |
50–69 | Needs work |
0–49 | Critical issues present |
Target ≥ 90 for all production files.
MCP Resources
URI | Description |
| All 34 check definitions |
| All 9 fix definitions with complexity and risk level |
| TwinCAT naming patterns by file type |
| Server metadata and capability summary |
| Full LLM-friendly knowledge base |
| Explanation, examples, and common mistakes for one check |
| Algorithm and examples for one fix |
| Deterministic generation contracts for all file types |
| Contract for |
| Default OOP policy values |
| Resolved OOP policy for a path |
MCP Prompts
8 reusable prompt templates for canonical LLM workflows — covering single-file generation, batch validation, OOP scaffolding, determinism verification, and troubleshooting flows. Accessible via your MCP client's prompt interface.
Agent Guide
AGENT.md is an example guide prompt that tells your LLM agent exactly how to use this server — which tools to call, in what order, how to route intent (procedural vs OOP), stop conditions, and the reporting contract. Copy it into your system prompt or agent instructions and customise it to match your workflow.
Recommended Workflow
The pattern for any TwinCAT generation task — no code is written until the user has approved the plan.
flowchart LR
A([User Prompt]) --> B[📋 Plan\nLLM produces plan file\nand stops]
B --> C{User reviews\nand approves?}
C -- No --> B
C -- Yes --> D[⚙️ Implement\nLLM generates\nTwinCAT artifacts]
D --> E[✅ Validate\nMCP server validates,\nauto-fixes, confirms safety]
E --> F([Done])
style A fill:#4a90d9,color:#fff,stroke:none
style F fill:#27ae60,color:#fff,stroke:none
style C fill:#f39c12,color:#fff,stroke:noneAfter approval, the LLM follows this MCP tool sequence:
flowchart TD
START([Plan approved by user]) --> CTX
CTX["get_context_pack\n(stage=pre_generation)"]
CTX --> POLICY["get_effective_oop_policy\n(if OOP task)"]
POLICY --> SKE
CTX --> SKE
SKE["generate_skeleton\nfor each artifact"]
SKE --> WRITE["LLM writes\nST content into files"]
WRITE --> ORCH
subgraph ORCH_LOOP ["Orchestration loop (max 3 iterations)"]
ORCH["process_twincat_single\nor process_twincat_batch"]
ORCH --> SAFE{safe_to_import\n&& safe_to_compile?}
SAFE -- Yes --> DET
SAFE -- No --> BLOCKED{no_progress\nor iter >= 3?}
BLOCKED -- No --> KB["get_context_pack\n(stage=troubleshooting,\ncheck_ids=blockers)"]
KB --> FIX["LLM applies\none focused correction"]
FIX --> ORCH
BLOCKED -- Yes --> FAIL([Report blocked —\nstop])
end
DET["verify_determinism_batch\n(second pass — no changes expected)"]
DET --> STABLE{stable?}
STABLE -- No --> ORCH
STABLE -- Yes --> DONE([Report done ✅\nsafe_to_import, safe_to_compile,\nblocking_count=0, content_changed=false])
style START fill:#4a90d9,color:#fff,stroke:none
style DONE fill:#27ae60,color:#fff,stroke:none
style FAIL fill:#e74c3c,color:#fff,stroke:none
style BLOCKED fill:#f39c12,color:#fff,stroke:none
style SAFE fill:#f39c12,color:#fff,stroke:none
style STABLE fill:#f39c12,color:#fff,stroke:noneSee EXAMPLE_PROMPT.md for a complete worked prompt using this pattern.
Configuration
Config files live in twincat_validator/config/ inside the installed package. To locate them:
import twincat_validator, os
print(os.path.join(os.path.dirname(twincat_validator.__file__), "config"))File | Purpose |
| Check definitions — severity, category, auto_fixable flag |
| Fix definitions — complexity, risk level, deterministic order |
| Naming patterns by file type and subtype |
| LLM-friendly explanations and examples for all checks and fixes |
| Canonical XML generation rules and forbidden patterns |
Restart the server after editing config files to reload.
Development
pip install -e ".[dev]"
# Run tests
pytest tests/
# Format
black --line-length=100 .
# Lint
ruff check .
# Type check
mypy twincat_validator/server.py --ignore-missing-imports
# Full CI suite (py311 + py312, lint, type check)
toxLicense
MIT — see LICENSE for details.
Authors
Agentic Control - Jaime Calvente Mieres: design, architecture, and domain expertise
Built with the assistance of Claude (Anthropic) and Codex (OpenAI).
Available Tools
16 toolsautofix_batchB
Automatically fix multiple TwinCAT files matching glob patterns.
Args: file_patterns: Glob patterns (e.g., ["*.TcPOU"]) directory_path: Base directory create_backup: Create backup files before fixing profile: Response profile passed to per-file autofix (default: llm_strict) format_profile: Formatting profile for per-file autofix strict_contract: Enforce generation contract fail-closed in per-file autofix create_implicit_files: Auto-create missing interface/DUT dependencies orchestration_hints: Include loop-guard hints in per-file responses intent_profile: Programming paradigm intent — "auto" (default), "procedural", or "oop". With "auto", each file's content is inspected individually for EXTENDS/IMPLEMENTS, so OOP files receive full OOP checks even in mixed batches. ctx: FastMCP context for per-file progress notifications (injected automatically)
| Name | Required | Description | Default |
|---|---|---|---|
| file_patterns | Yes | ||
| directory_path | No | . | |
| create_backup | No | ||
| profile | No | llm_strict | |
| format_profile | No | twincat_canonical | |
| strict_contract | No | ||
| create_implicit_files | No | ||
| orchestration_hints | No | ||
| enforcement_mode | No | strict | |
| intent_profile | No | auto | |
| ctx | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden. It discloses key behavioral traits like 'Create backup files before fixing' and 'Auto-create missing interface/DUT dependencies,' which hint at destructive file modifications. However, it never explicitly states that this is a destructive write operation or describes error-handling behavior (e.g., fail-fast vs. continue-on-error).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses a standard Args block format appropriate for a complex tool with 11 parameters. Information is efficiently organized with minimal redundancy. The structure is slightly compromised by the omission of the `enforcement_mode` parameter from the Args list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (11 parameters, 0% schema coverage) and presence of an output schema, the description adequately compensates for the schema's lack of descriptions on most parameters. However, the missing parameter documentation and lack of sibling-tool context leave noticeable gaps for a tool of this sophistication.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage (titles only), so the description's Args block carries the full load. It provides rich semantic detail for 10 of 11 parameters (e.g., explaining that `intent_profile` inspects files for EXTENDS/IMPLEMENTS, or that `ctx` is injected automatically). It fails to document the `enforcement_mode` parameter at all, which prevents a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence clearly states the tool 'Automatically fix[es] multiple TwinCAT files matching glob patterns,' providing a specific verb (fix), resource (TwinCAT files), and scope (batch/multiple). However, it does not explicitly differentiate from the sibling tool `autofix_file` (single-file vs. batch) or define what 'fix' encompasses (formatting, validation, or both).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like `autofix_file` or `validate_batch`. There are no prerequisites mentioned (e.g., whether validation should be run first) and no warnings about when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autofix_fileB
Automatically fix common TwinCAT XML issues.
Args: file_path: Path to TwinCAT file create_backup: Create backup before fixing fixes_to_apply: List of fix IDs, or None for all profile: "full" (default) verbose response, "llm_strict" minimal response format_profile: "default" or "twincat_canonical" formatting pass strict_contract: If True, fail closed on generation-contract violations create_implicit_files: If True, auto-create missing implicit dependency files (currently interface .TcIO files for IMPLEMENTS I_* clauses) orchestration_hints: If True, include next_action/terminal/no_change hints and content fingerprints for loop prevention in weak agents. intent_profile: Programming paradigm intent — "auto" (default), "procedural", or "oop". Controls which check families are used in post-fix validation.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| create_backup | No | ||
| fixes_to_apply | No | ||
| profile | No | full | |
| format_profile | No | default | |
| strict_contract | No | ||
| create_implicit_files | No | ||
| orchestration_hints | No | ||
| enforcement_mode | No | strict | |
| intent_profile | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses specific complex behaviors (contract violation handling, implicit file creation, orchestration hints for agents) but fails to explicitly state the fundamental safety profile: that this is a destructive file-modifying operation. Given zero annotations, this omission is significant despite the detailed parameter explanations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Appropriately structured with a clear one-line summary followed by detailed Args documentation. Length is justified given 10 parameters with zero schema descriptions. Indented Args format is readable, though slightly non-standard for MCP.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Handles high complexity reasonably well given lack of annotations and schema descriptions, but gaps remain: missing enforcement_mode parameter, no mention of how to discover valid 'fix IDs' for fixes_to_apply, and no warning about destructive side effects despite output schema existing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the Args section compensates heavily for 9/10 parameters with detailed semantics (e.g., profile options, strict_contract behavior). However, it completely omits the 'enforcement_mode' parameter present in the schema, leaving that parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb ('fix') and resource ('TwinCAT XML issues'). Distinguishes from validation/suggestion siblings by emphasizing automatic fixing action, though could explicitly contrast with autofix_batch for scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to choose this over siblings (autofix_batch for multiple files, suggest_fixes for preview-only) or prerequisites. The 'Automatically' prefix implies hands-off repair but doesn't state conditions like 'use when file is corrupt but parseable'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_specificC
Run specific validation checks on a TwinCAT file.
Args: file_path: Path to TwinCAT file check_names: List of check IDs to run
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| check_names | Yes | ||
| enforcement_mode | No | strict |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but fails to disclose key behavioral traits. It does not indicate whether the tool modifies the TwinCAT file (though likely read-only given 'autofix' siblings exist), what the output schema contains, or how to interpret the 'enforcement_mode' parameter's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with a clear imperative sentence followed by an Args section. Structure is front-loaded with the purpose statement first. The only inefficiency is the omission of the 'enforcement_mode' parameter from the Args list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage and no annotations, the description is insufficient for a 3-parameter tool. It fails to document the 'enforcement_mode' parameter and provides no context on return values (though an output schema exists, the agent still needs to know what the tool conceptually returns) or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section adds semantic value for 'file_path' (specifying it is a TwinCAT file) and 'check_names' (clarifying they are check IDs), partially compensating for the 0% schema description coverage. However, it completely omits the third parameter 'enforcement_mode' (default: 'strict'), leaving its behavioral impact unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Run[s] specific validation checks on a TwinCAT file,' providing a specific verb and resource. However, it does not explicitly distinguish from sibling tools like 'validate_file' or 'validate_batch,' leaving the agent to infer the distinction from the word 'specific' and the required 'check_names' parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'validate_file' (likely full validation) or 'check_specific' (targeted validation). The description does not state prerequisites (e.g., needing valid check IDs) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_methods_to_xmlB
Promote inline METHOD blocks from main ST to XML elements.
Args: file_path: Path to .TcPOU file create_backup: Create .bak backup when content changes
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| create_backup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the backup creation behavior ('Create .bak backup when content changes'), implying file modification, but lacks explicit disclosure that it modifies the input file in-place, error handling behavior, or output format details despite the existence of an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Appropriately concise with a clear single-sentence purpose statement followed by a structured Args block. No redundant text, though the Args section repeats information that ideally would be in the schema (necessary given 0% coverage).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a 2-parameter tool with an output schema (which excuses return value documentation). However, given this is a file-modifying mutation tool with no annotations, the description should explicitly state the modification behavior rather than implying it only through the backup parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Excellent compensation for 0% schema description coverage. The Args section documents both parameters: 'file_path' includes the specific '.TcPOU' extension context, and 'create_backup' explains the conditional backup behavior ('when content changes'). Provides the semantic meaning missing from the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific transformation: extracting inline METHOD blocks from main ST (Structured Text) into dedicated <Method> XML elements. It identifies the specific file format (.TcPOU) and operation type, though it doesn't explicitly differentiate from the generic 'process_twincat_single' sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives like 'process_twincat_single' or 'autofix_file'. Missing prerequisites (e.g., when extraction is appropriate) and exclusion criteria (e.g., files without inline methods).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_skeletonB
Generate canonical deterministic TwinCAT XML skeleton for a file type.
Args: file_type: .TcPOU, .TcDUT, .TcGVL, or .TcIO (with or without leading dot) subtype: For .TcPOU only: function_block, function, or program
| Name | Required | Description | Default |
|---|---|---|---|
| file_type | Yes | ||
| subtype | No | ||
| enforcement_mode | No | strict |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Adds 'canonical deterministic' behavioral context, but omits critical safety profile (read-only vs. destructive), side effects, or whether output is returned vs. written to disk. Lacks disclosure of rate limits or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Uses Args section efficiently to document constraints. Information is front-loaded with the purpose statement. Missing parameter is a content omission, not a structural verbosity issue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a 3-parameter tool with existing output schema (return values need not be explained). However, missing enforcement_mode parameter and lack of usage context or behavioral safety disclosure prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description compensates well for file_type (valid extensions, dot formatting) and subtype (conditional valid values), but completely omits enforcement_mode parameter, leaving one-third of the interface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb (Generate) and resource (TwinCAT XML skeleton), with 'deterministic' clarifying output consistency. However, it does not explicitly distinguish from sibling tools like extract_methods_to_xml or process_twincat_single.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this generator versus processing/validation siblings (e.g., process_twincat_single, validate_file). No mention of prerequisites, workflow position, or when generation is preferred over extraction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_context_packA
Get curated knowledge base entries and OOP policy scoped by workflow stage.
Stages:
pre_generation: Returns high-priority non-fixable checks the LLM must get right when generating TwinCAT XML from scratch.
troubleshooting: Returns KB entries for specific check_ids (typically extracted from blocker lists after orchestration).
Args: stage: Workflow stage ("pre_generation" or "troubleshooting"). check_ids: Explicit check IDs (required for troubleshooting, ignored for pre_generation). target_path: Optional file/dir path for OOP policy resolution. max_entries: Maximum KB entries to return (default 10). include_examples: Include correct_examples and common_mistakes arrays (default True). Set False to save tokens. enforcement_mode: Policy enforcement mode ("strict" or "compat"). intent_profile: Programming paradigm intent — "oop", "procedural", or "auto". In pre_generation stage: - omitted: defaults to "oop" (backward compatible behavior). - "oop": Core + OOP check guidance is returned. - "procedural": Only core (non-OOP) check guidance is returned. - "auto": No file content is available at pre-generation time, so resolves to "procedural". Use "oop" or "procedural" explicitly for predictability. In troubleshooting stage: - explicit value is required (workflow guardrail). - value has no routing effect (check_ids drive selection).
Returns: JSON with effective_oop_policy, curated entries[], missing_check_ids[], intent metadata, truncation info, and meta envelope.
| Name | Required | Description | Default |
|---|---|---|---|
| stage | No | pre_generation | |
| check_ids | No | ||
| target_path | No | ||
| max_entries | No | ||
| include_examples | No | ||
| enforcement_mode | No | strict | |
| intent_profile | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and successfully discloses complex behavioral traits: stage-dependent routing logic, default value implications ('omitted: defaults to oop'), and parameter interaction effects ('In troubleshooting stage... value has no routing effect'). It lacks explicit safety declarations (read-only status) which prevents a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear Stages/Args/Returns sections and front-loaded with the core purpose. While lengthy, the detail is justified by the complex parameter interactions and conditional logic; every sentence provides necessary behavioral context given the lack of schema annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with complex routing logic and 7 parameters, the description is complete. It explains the stage-based workflows, parameter interdependencies, default behaviors, and summarizes the return structure (JSON with effective_oop_policy, entries, etc.), providing sufficient context for correct invocation despite no output schema being provided in the structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the Args section comprehensively documents all 7 parameters. It explains valid values, conditional requirements (e.g., check_ids required/ignored by stage), and semantic intent (e.g., include_examples 'Set False to save tokens'), fully compensating for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Get') + resource ('curated knowledge base entries and OOP policy') + scope ('workflow stage'), clearly defining the tool's function. It implicitly distinguishes itself from sibling `get_effective_oop_policy` by emphasizing the knowledge base entries and stage-scoping behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly defines when to use each stage: 'pre_generation' for 'generating TwinCAT XML from scratch' and 'troubleshooting' for 'blocker lists after orchestration'. It clearly states parameter dependencies (e.g., 'check_ids: required for troubleshooting, ignored for pre_generation'), providing clear guardrails for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_effective_oop_policyA
Get effective OOP validation policy for a file or directory target.
Args: target_path: Optional path to a file or directory. If omitted, uses current working directory defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| target_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It signals read-only intent via 'Get' and adds the important behavioral context that this resolves 'effective' (inherited/merged) policies rather than just local ones. However, it omits safety confirmations (read-only assurance), side effects, or computational cost of resolving effective policies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately compact with two sentences. The first states purpose immediately; the second documents the single parameter using a standard Args format. No extraneous information is present, though the 'Args:' structure is slightly formal for MCP descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter tool with one optional parameter and an existing output schema (per context signals), the description is adequately complete. It covers the parameter semantics sufficiently and does not need to describe return values since an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given 0% schema description coverage, the description effectively compensates by explaining that target_path is optional and documenting the default behavior (current working directory). This adds essential semantic meaning beyond the raw schema which only indicates a string type with empty default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get') and resource ('effective OOP validation policy') with scope ('for a file or directory target'). The term 'effective' distinguishes it from siblings like 'lint_oop_policy' or 'get_validation_summary' by implying resolution of inherited/cascading policies, though it could explicitly contrast with validation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implicit usage guidance by explaining the default behavior when target_path is omitted (uses current working directory). However, it lacks explicit guidance on when to use this tool versus alternatives like 'get_validation_summary' or 'lint_oop_policy', or prerequisites for the target path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_validation_summaryB
Get high-level file quality summary with health score.
Args: file_path: Path to TwinCAT file
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure burden. While 'Get' implies read-only access, the description fails to clarify whether this triggers validation computation or retrieves cached results, what the health score represents (scale/format), or error handling behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with no redundant text. The two-sentence structure (purpose statement followed by Args documentation) is efficient and appropriately front-loaded, though brevity sacrifices contextual richness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 sibling tools including multiple validation variants, the description is insufficient for tool selection. The existence of an output schema reduces the need for return value documentation, but the crowded namespace demands explicit comparison criteria that are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Compensates effectively for 0% schema description coverage by specifying that file_path represents a 'Path to TwinCAT file' (adding domain context 'TwinCAT' that the schema lacks). The Args structure efficiently documents the single parameter's semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Get') and clearly identifies the resource ('high-level file quality summary with health score'). However, it lacks explicit differentiation from validation-related siblings like 'validate_file' or 'check_specific', leaving ambiguity about whether this retrieves cached data or performs live analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus the numerous validation alternatives (validate_file, validate_batch, check_specific). No prerequisites, constraints, or selection criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lint_oop_policyB
Lint nearest .twincat-validator.json policy keys/types and return normalized policy.
| Name | Required | Description | Default |
|---|---|---|---|
| target_path | No | ||
| strict | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool searches for the 'nearest' policy file (describing resolution behavior) and 'return[s] normalized policy' (describing output). However, it fails to clarify whether this is a read-only operation, what 'normalized' specifically entails (schema enforcement, default injection?), or error behavior when no policy file exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence of twelve words. It front-loads the action ('Lint'), specifies the target resource, and concludes with the return value. There is no redundant or extraneous text; every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description appropriately does not detail return values. However, with zero schema parameter descriptions and two parameters to document, the description should have explicitly mapped 'target_path' to the directory search behavior and defined the 'strict' flag. The omission of edge case handling (no policy file found) also leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, requiring the description to compensate. While the word 'nearest' implicitly suggests that target_path controls the search starting directory, it does not explicitly document this mapping, nor does it explain what the empty string default signifies (current working directory?). The 'strict' parameter is completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lints '.twincat-validator.json policy keys/types' and returns a 'normalized policy.' It identifies the specific resource (the policy file) and action (linting/normalizing), distinguishing it from siblings like validate_file or get_effective_oop_policy which operate on code or retrieve computed policies rather than linting the configuration file itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'nearest' which implies directory tree traversal behavior, hinting that target_path determines the search starting point. However, it provides no explicit guidance on when to use this tool versus siblings like get_effective_oop_policy or validate_file, nor does it explain the consequences of the 'strict' parameter or when one might want to disable it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_twincat_batchA
Run enforced deterministic batch TwinCAT workflow.
Steps:
validate_batch (pre-check)
autofix_batch (strict pipeline)
validate_batch (post-check)
Args: file_patterns: Glob patterns (e.g., ["*.TcPOU"]) directory_path: Base directory create_backup: Create backup files before fixing validation_level: "all", "critical", or "style" enforcement_mode: Policy enforcement mode ("strict" or "compat") response_mode: "summary" (minimal, default), "compact" (no pre/post blobs), or "full" (all detail sections included). include_sections: In summary mode only — optional list of heavy sections to add. Supported: "blockers", "issues", "pre_validation", "autofix", "post_validation", "effective_oop_policy", "meta_detailed". Unknown names are ignored with a warning in the response. Has no effect in compact or full mode. include_knowledge_hints: Include recommended_check_ids from blockers (when not done). intent_profile: Programming paradigm intent — "auto" (default), "procedural", or "oop". Controls which check families run: - "procedural": OOP checks are skipped. - "oop": Full OOP check family is enforced. - "auto": Scans matched .TcPOU declarations for EXTENDS/IMPLEMENTS; resolves to "oop" if any are found, otherwise "procedural".
| Name | Required | Description | Default |
|---|---|---|---|
| file_patterns | Yes | ||
| directory_path | No | . | |
| create_backup | No | ||
| validation_level | No | all | |
| enforcement_mode | No | strict | |
| response_mode | No | summary | |
| include_sections | No | ||
| include_knowledge_hints | No | ||
| intent_profile | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It successfully discloses the 3-step pipeline, the file-modification nature (implied by 'autofix' and 'backup' parameters), and complex behavioral traits like `intent_profile` auto-detection. It lacks explicit safety warnings about mutation, though the backup option hints at risk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a front-loaded summary, clear step enumeration, and organized Args section. It is appropriately sized given the 9 undocumented parameters, though dense. The 'include_sections' parameter description is particularly verbose but necessary given the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given high complexity (9 params, workflow logic) and poor schema coverage, the description is comprehensive. It covers all parameters and explains the OOP vs Procedural logic. Since an output schema exists, omitting return value descriptions is acceptable. Minor gap: no mention of error handling behavior if autofix fails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage (titles only). The Args section fully compensates by providing detailed semantics for all 9 parameters, including enum values ('all'/'critical'/'style'), examples (['*.TcPOU']), and behavioral context (response modes, intent profile logic). This is exemplary compensation for schema deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Run') and resource ('TwinCAT workflow'), and the enumerated steps (validate/autofix/validate) clearly distinguish this composite tool from siblings like `validate_batch` or `autofix_batch` alone. However, it assumes domain knowledge of 'deterministic' without referencing the sibling `verify_determinism_batch`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The three-step workflow implies this is for comprehensive batch processing, but there is no explicit guidance on when to choose this over `process_twincat_single` or standalone `validate_batch`. The description explains 'what' it does but not 'when' to prefer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_twincat_singleA
Run enforced deterministic single-file TwinCAT workflow.
Steps:
validate_file (pre-check)
autofix_file (strict pipeline)
validate_file (post-check)
suggest_fixes (only if still unsafe)
Args: file_path: Path to the TwinCAT file to process. create_backup: Create a backup before applying fixes. validation_level: "all", "critical", or "style". enforcement_mode: Policy enforcement mode ("strict" or "compat"). include_knowledge_hints: Include recommended_check_ids from blockers. intent_profile: Programming paradigm intent — "auto" (default), "procedural", or "oop". Controls which check families run: - "procedural": OOP checks are skipped (safe for plain FUNCTION_BLOCK/PROGRAM). - "oop": Full OOP check family is enforced. - "auto": Resolved from file content (EXTENDS/IMPLEMENTS → oop, else procedural).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| create_backup | No | ||
| validation_level | No | all | |
| enforcement_mode | No | strict | |
| include_knowledge_hints | No | ||
| intent_profile | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Documents the multi-step workflow and param effects (especially intent_profile logic), but fails to explicitly disclose destructive behavior (file modification) despite mentioning 'create_backup' and 'autofix_file'. Missing safety warnings or side-effect disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose statement, numbered workflow steps, and Args list. Every sentence earns its place; detailed parameter documentation is justified given zero schema coverage. Front-loaded with the workflow summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given high complexity (6 params, multi-step workflow) and 0% schema coverage, description adequately covers parameter semantics and workflow steps. Has output schema (per context signals) so return values needn't be explained. Minor gaps: lacks explicit destructive warning and comparison to batch sibling process_twincat_batch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the Args section comprehensively documents all 6 parameters. Provides enum values for validation_level, enforcement_mode, and intent_profile, plus detailed behavioral logic for intent_profile (procedural vs OOP vs auto resolution). Fully compensates for schema poverty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb+resource ('Run... single-file TwinCAT workflow') and distinguishes from siblings by mentioning it comprises validate_file, autofix_file, and suggest_fixes steps. 'Enforced deterministic' adds flavor but could be clearer about the end goal (fixing vs validating).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists internal steps (validate_file, autofix_file, suggest_fixes) implying this is the composite pipeline tool, but lacks explicit when-to-use guidance versus calling steps individually or versus process_twincat_batch sibling. 'Only if still unsafe' provides conditional logic but no explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_fixesA
Generate prioritized fix recommendations from validation results.
Args: validation_result: JSON string from validate_file()
| Name | Required | Description | Default |
|---|---|---|---|
| validation_result | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds the behavioral trait that recommendations are 'prioritized' (ranked by importance). However, it omits disclosure of safety properties (read-only vs destructive), idempotency, or side effects, though the existence of an output_schema reduces the need to describe return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately brief and front-loaded with the main purpose. The Args section is justified given the schema's lack of descriptions. The structure mixes narrative and docstring styles, which is functional but slightly less integrated than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter, has an output_schema (covering return values), and the description establishes the workflow link to 'validate_file()', the definition is sufficiently complete. The description adequately compensates for the schema coverage gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates effectively by specifying that 'validation_result' is a 'JSON string from validate_file()'. This provides critical semantic context (format and provenance) that the schema lacks, though it could further clarify the expected structure of the JSON content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Generate[s] prioritized fix recommendations from validation results', specifying the verb (generate), output (recommendations), and input source (validation results). The term 'prioritized' adds specificity, and the purpose distinguishes it from sibling 'autofix_*' tools by implying suggestion rather than application.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Args section mentions the input comes from 'validate_file()', implying a workflow sequence (validate → suggest). However, it lacks explicit guidance on when to use this versus 'autofix_file' or 'autofix_batch' (i.e., when manual review is preferred over automatic fixing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_batchA
Validate multiple TwinCAT files matching glob patterns.
Args: file_patterns: Glob patterns (e.g., ["*.TcPOU"]) directory_path: Base directory validation_level: "all", "critical", or "style" intent_profile: Programming paradigm intent — "auto" (default), "procedural", or "oop". With "auto", the matched .TcPOU files are scanned for EXTENDS/ IMPLEMENTS; if any are found the batch resolves to "oop", otherwise "procedural". ctx: FastMCP context for per-file progress notifications (injected automatically)
| Name | Required | Description | Default |
|---|---|---|---|
| file_patterns | Yes | ||
| directory_path | No | . | |
| validation_level | No | all | |
| enforcement_mode | No | strict | |
| intent_profile | No | auto | |
| ctx | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It successfully discloses behavioral details like 'per-file progress notifications' for the ctx parameter and the OOP detection logic ('scanned for EXTENDS/IMPLEMENTS'). However, it fails to state whether the operation is read-only or destructive—a critical omission given the presence of 'autofix_batch' as a sibling—and doesn't mention performance characteristics or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear one-line purpose followed by an Args section. Every sentence adds value, explaining either the tool's purpose or parameter semantics. The format is scannable and front-loaded, though the Args block could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters with validation logic and output schema), the description is adequate but incomplete. The missing 'enforcement_mode' documentation and lack of sibling comparison context prevent a higher score, though the presence of an output schema reduces the description's burden for return value documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the Args section provides rich semantic detail for 5 of 6 parameters: file_patterns includes an example ('*.TcPOU'), validation_level enumerates options, and intent_profile explains the auto-detection algorithm. However, it completely omits the 'enforcement_mode' parameter present in the schema, creating a documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific statement: 'Validate multiple TwinCAT files matching glob patterns.' It specifies the verb (validate), resource (TwinCAT files), and mechanism (glob patterns), effectively distinguishing it from the sibling tool 'validate_file' through the 'multiple' and 'glob patterns' qualifiers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies batch usage through the 'glob patterns' and 'multiple' qualifiers, but provides no explicit guidance on when to use this tool versus 'validate_file' or other siblings. It also lacks guidance on selecting between validation_level options ('all', 'critical', 'style') or when to override the 'auto' intent_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_fileA
Validate a single TwinCAT file.
Args: file_path: Path to TwinCAT file validation_level: "all", "critical", or "style" profile: Output profile - "full" (verbose, default) or "llm_strict" (minimal) intent_profile: Programming paradigm intent — "auto" (default), "procedural", or "oop". Controls which check families run: - "procedural": OOP checks are skipped. - "oop": Full OOP check family is enforced. - "auto": Resolved from file content (EXTENDS/IMPLEMENTS → oop, else procedural).
Returns: JSON string with validation results.
Full profile includes: validation_status, checks array, issues with Phase 3
enrichment, metrics, timing.
LLM strict profile includes only: file_path, safe_to_import, safe_to_compile,
blocking_count, blockers (unfixable errors).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| validation_level | No | all | |
| profile | No | full | |
| enforcement_mode | No | strict | |
| intent_profile | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It successfully discloses behavioral traits: it explains the resolution logic for 'auto' intent detection (EXTENDS/IMPLEMENTS → oop), details the differences between output profiles (Full vs LLM strict), and describes the return structure. It does not mention side effects or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses a clear docstring structure (Args/Returns) with good information density. Every sentence earns its place, explaining either parameter semantics or output format. Minor verbosity in the intent_profile bullet points is justified by the complexity of the concept.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters (one undocumented) and no annotations, the description is nearly complete. It compensates for the lack of schema descriptions for most parameters and provides detailed output documentation (acting as output schema). Deducted one point for the missing 'enforcement_mode' parameter explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, requiring the description to compensate. It provides detailed semantic meaning for 4 of 5 parameters: validation_level options, profile behavior, and extensive detail on intent_profile including resolution rules. However, it completely omits the 'enforcement_mode' parameter present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Validate') and resource ('TwinCAT file'), clearly stating the tool's function. The word 'single' effectively distinguishes it from the sibling 'validate_batch' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description explains parameter-specific usage (e.g., when to use 'full' vs 'llm_strict' profiles, or 'procedural' vs 'oop' intent), it lacks explicit guidance on when to choose this tool over siblings like 'validate_for_import' or 'autofix_file'. The 'single' qualifier provides implied context but no explicit alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_for_importC
Quick validation check for TwinCAT import readiness.
Args: file_path: Path to TwinCAT file
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| enforcement_mode | No | strict |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It hints at performance characteristics ('Quick') and purpose ('import readiness'), but fails to disclose what validation rules are applied, what the output schema contains, error handling behavior, or whether this is read-only vs. potentially modifying state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (two sentences) and front-loads the core purpose. However, the 'Args:' formatting is more typical of code documentation than tool descriptions, and the second sentence is incomplete (missing enforcement_mode documentation). It is appropriately sized but structurally suboptimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description correctly omits return value details. However, it is incomplete due to missing parameter documentation (enforcement_mode) and lack of sibling differentiation context. With 0% schema coverage and 2 parameters, the description fails to provide sufficient semantic coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It documents only the 'file_path' parameter ('Path to TwinCAT file') but completely omits the 'enforcement_mode' parameter, leaving its purpose and valid values (default: 'strict') unexplained despite being functionally significant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this performs a 'validation check for TwinCAT import readiness,' specifying the verb (validate), resource (TwinCAT file), and scope (import readiness). It distinguishes from siblings like 'validate_file' or 'validate_batch' by specifying the import context, though it could further clarify the distinction from 'check_specific'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its numerous validation siblings (validate_file, validate_batch, check_specific, get_validation_summary). There is no mention of prerequisites, when-not-to-use conditions, or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_determinism_batchA
Run strict batch orchestration twice and report per-file idempotence stability.
Args: file_patterns: Glob patterns (e.g., ["*.TcPOU"]) directory_path: Base directory create_backup: Create backup files before fixing validation_level: "all", "critical", or "style" enforcement_mode: Policy enforcement mode ("strict" or "compat") response_mode: "summary" (minimal, default), "compact", or "full". include_sections: In summary mode only — optional heavy sections to include. Supported: "blockers", "pre_validation", "autofix", "post_validation", "effective_oop_policy", "meta_detailed". Unknown names ignored with a warning in the response. Has no effect in compact or full mode.
| Name | Required | Description | Default |
|---|---|---|---|
| file_patterns | Yes | ||
| directory_path | No | . | |
| create_backup | No | ||
| validation_level | No | all | |
| enforcement_mode | No | strict | |
| response_mode | No | summary | |
| include_sections | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool runs 'twice' (key behavioral trait), but fails to clarify whether the tool is read-only or destructive. The create_backup parameter mentions 'before fixing', implying mutation, which contradicts the 'verify' name and 'report' verb without explanation. It also does not describe what 'strict batch orchestration' entails or what happens if idempotence fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear one-line summary followed by an organized Args block. Every section serves a purpose: the summary establishes purpose, the Args compensate for missing schema documentation. It is appropriately verbose given the complexity, though the include_sections description is lengthy (necessary for the enumerated valid values and mode-specific behavior).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description appropriately focuses on input parameters and response modes rather than return values. However, it lacks critical behavioral context regarding side effects (mutation vs. read-only) and does not explain the mechanism of the idempotence comparison (e.g., what constitutes a difference between the two runs).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description comprehensively compensates by documenting all 7 parameters in the Args section. It provides specific enum values (e.g., 'all', 'critical', 'style' for validation_level), examples (e.g., ['*.TcPOU'] for file_patterns), default indicators (e.g., 'summary' default for response_mode), and detailed constraints (e.g., include_sections only works in summary mode).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool 'Run strict batch orchestration twice and report per-file idempotence stability', providing a specific verb (run/report), resource (batch orchestration), and unique scope (twice/idempotence). This clearly distinguishes it from siblings like validate_batch or autofix_batch by emphasizing the double-run determinism check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the idempotence/determinism context—you use this when you need to verify stability across multiple runs. However, it lacks explicit guidance on when to choose this over validate_batch or autofix_batch, and does not specify prerequisites or exclusions (e.g., whether it requires specific file states).
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. Dates show when Glama detected each change.
16 tool updates
v1.0.0- First observed
autofix_batch - First observed
autofix_file - First observed
check_specific - First observed
extract_methods_to_xml - First observed
generate_skeleton - First observed
get_context_pack - First observed
get_effective_oop_policy - First observed
get_validation_summary - First observed
lint_oop_policy - First observed
process_twincat_batch - First observed
process_twincat_single - First observed
suggest_fixes - First observed
validate_batch - First observed
validate_file - First observed
validate_for_import - First observed
verify_determinism_batch
TDQS
There is significant overlap between tools, particularly between autofix_batch/autofix_file, validate_batch/validate_file, and process_twincat_batch/process_twincat_single which appear to be batch vs single-file versions of the same core operations. However, the descriptions help clarify the scope differences, and tools like extract_methods_to_xml, generate_skeleton, and get_context_pack have distinct purposes.
Most tools follow a consistent snake_case pattern with clear verb_noun structure (e.g., validate_file, generate_skeleton, get_context_pack). The main deviation is check_specific which uses an adjective_verb pattern rather than verb_noun, but overall the naming is predictable and readable.
16 tools is borderline high for a TwinCAT validation server, especially given the redundancy between batch and single-file versions. The server could likely consolidate some overlapping tools without losing functionality, making the count feel somewhat heavy for the domain scope.
The toolset provides comprehensive coverage for TwinCAT validation workflows including validation (single/batch), fixing (single/batch), policy management, knowledge retrieval, skeleton generation, and specialized operations like method extraction. There are no obvious gaps - it supports the full lifecycle from creation to troubleshooting to verification.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The OpenZeppelin Solidity Contracts MCP server integrates OpenZeppelin's security and style rules into AI-driven development workflows, enabling AI assistants to generate safe, correct, and production-ready smart contracts. It automatically validates generated code against OpenZeppelin standards (including imports, modifiers, naming conventions, and security checks) and supports various contract types including ERC-20, ERC-721, ERC-1155, Stablecoins, RWA, Governor, and Account contracts through prompt-driven workflows.
Official DevSpeak MCP server — translate technical text into formal specs from any AI IDE or agent
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
The OpenZeppelin Cairo Contracts MCP server generates secure smart contracts in the Cairo language for Starknet environments based on OpenZeppelin templates. It brings OpenZeppelin's proven security and style rules directly into AI-driven development workflows to create safe, production-ready contracts. Key capabilities include providing templates for ERC-20, ERC-721, ERC-1155, Multisig, Governor, and Vesting contracts.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables seamless interaction between MCP clients (like Claude Desktop) and CODESYS V3 programming environments, allowing automation of project management, POU creation, code editing, and compilation tasks.89120MIT
- FlicenseNot gradedqualityAmaintenanceMCP server that connects AI assistants to Siemens TIA Portal via the Openness API. AI-assisted PLC programming, project management, hardware configuration, cross-reference analysis, and deployment. 16 tools, 166 actions.33-
- AlicenseBqualityAmaintenanceMCP server for Beckhoff TwinCAT XAE / TE1000 Automation Interface, enabling control of XAE Shell, TwinCAT tree manipulation, PLC operations, and build actions via natural language.2510MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that extends AI coding assistants with deterministic, algorithmic capabilities such as code analysis, fault localization, and formal verification, enabling an autonomous engineering team within the IDE.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/agenticcontrolio/twincat-validator-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server