Skip to main content
Glama
BlackUppsss

cx-programmer-mcp

by BlackUppsss

Server Quality Checklist

50%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.4.0

  • Disambiguation4/5

    Most tools have clearly distinct purposes, but there are several close pairs (replace_rung vs replace_rung_structured, insert_rung vs insert_rung_structured, plan_exclusive_latch vs apply_exclusive_latch_group) that could be confused if an agent doesn't read the full descriptions. The detailed input type and effect differences are documented, but the overlap is notable.

    Naming Consistency4/5

    The majority of tools follow a clear verb_noun pattern (list_sections, create_section, delete_rung, etc.), but there are a few outliers like program_diagnostics_tool (noun_noun_tool) and project_diff (noun_noun) that break the convention. The pattern is otherwise consistent with snake_case and present-tense verbs.

    Tool Count2/5

    At 38 tools, this server exceeds the recommended range for a coherent set. While the domain (CX-Programmer editing) is complex, many tools are near-duplicates (raw vs structured rung operations) or could be combined (undo/redo could be a single tool). This volume likely increases agent selection difficulty and cognitive load.

    Completeness4/5

    The tool surface covers the core workflow comprehensively: project lifecycle (load, save, create, close), section management, rung-level editing with both raw and structured input, symbol management, analysis/diagnostics, and batch editing via patches. Minor gaps include no explicit program creation/deletion (only via sections) and no rung moving/copying, but these are workaroundable.

  • Average 3.4/5 across 35 of 38 tools scored. Lowest: 2.2/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 3 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior1/5

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

    The description does not disclose any behavioral traits beyond the basic operation. It fails to mention side effects such as shifting existing rungs, error conditions for invalid indices, or any impact on the program structure. The destructiveHint annotation is not elaborated.

    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 description is appropriately concise as a single sentence, which aids quick understanding. However, it is too terse and omits critical details that would make it more useful, balancing brevity at the expense of completeness.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness1/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's moderate complexity (multiple parameters, destructive annotation), the description is severely incomplete. It does not cover parameter usage, side effects, or usage context, making it insufficient for an agent to correctly invoke the tool without additional information.

    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?

    The description does not explain the purpose of the parameters like 'instructions', 'comment', or 'expected_revision'. It only references 'mnemonic rung' and 'index' but does not map them to the actual input schema, leaving most parameters unexplained.

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

    Purpose5/5

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

    The description clearly states the action (insert) and the target (a mnemonic rung) and specifies the position (zero-based index). It distinguishes from other rung manipulation tools by focusing on insertion.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines1/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    No guidance is provided on when to use insert_rung over other tools like replace_rung or delete_rung. The description lacks any context about typical use cases, prerequisites, or scenarios where insertion is appropriate.

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

  • Behavior2/5

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

    The description does not mention side effects, permissions, reversibility, or what happens on success/failure. The destructiveHint annotation indicates destructive behavior, but the description itself lacks transparency.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness2/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, very brief sentence. While concise, it lacks structure and does not provide any additional context or breakdown, making it too sparse for a tool with multiple parameters.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness1/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the schema's complexity, including expected_revision (implying optimistic concurrency), the description is incomplete. It does not explain the tool's context, such as that it modifies an existing rung or the role of expected_revision.

    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?

    The schema lists six parameters (project_id, program_name, section_name, rung_index, comment, expected_revision) but provides no descriptions. The tool description also fails to explain any of them.

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

    Purpose5/5

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

    The description clearly states the action (set) and the target (comment attached to one rung), making the tool's purpose unambiguous.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines1/5

    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, nor any prerequisites or conditions for its use.

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

  • Behavior2/5

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

    The provided annotations include destructiveHint=true and readOnlyHint=false, but the description only says 'Insert a rung compiled from a structured boolean expression.' It does not disclose whether inserting the rung may overwrite an existing rung at that index, what validation is done on the expression, or what feedback the caller receives. The annotation flags do some work, but the description adds little context beyond them.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single concise sentence with the most important verb and object front-loaded. It earns its place by announcing the operation directly, though it omits details about behavior when the rung index already exists.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool has 8 parameters with 6 required, nested objects, and no output schema. The description must explain behavior, return values, and side effects despite the complexity, but it remains minimal. The annotation has some hints, but the description is insufficient for an agent to work safely in the PLC context.

    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 input schema covers only parameter titles (e.g., project_id, program_name, section_name), none of which are described in the description. The expression is an open object and outputs is an array of string values, but the description adds no meaning about these fields or their relationships, making the schema carry the entire burden.

    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 uses a specific verb ('insert') with a resource ('rung') and states the rung is compiled from a structured boolean expression. However, it does not distinguish this insert operation from sibling replace_rung_structured, which also targets a rung index, so the scope is somewhat ambiguous without reading the schema.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    There is no explicit guidance on when to use this tool versus alternatives like replace_rung, delete_rung, or compile_rung_structured. The insert semantics imply adding a rung, but conditions, prerequisites, or consequences of inserting at the given index are not stated.

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

  • Behavior3/5

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

    Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds the default insertion position ('before END'), which is useful behavioral context, but it does not disclose side effects, revision requirements, or consequences beyond creation. No contradiction with annotations 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?

    The description is a single, front-loaded sentence with no filler. It efficiently conveys the core purpose and a key placement detail, though 'normally' is slightly vague and could be more precise.

    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 five parameters, destructive behavior, and an output schema, this description is too thin. It omits guidance on parameter relationships, revision handling, and when creation might be inappropriate. The output schema reduces the need to describe return values, but the description still does not provide enough operational context.

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

    Parameters2/5

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

    Schema description coverage is 0%, so the description must compensate, but it only hints at program/section context and the before_section default. It does not explain required parameters like project_id, program_name, section_name, or expected_revision beyond what the schema itself already provides.

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

    Purpose4/5

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

    The description states the specific action ('Create a program section') and a distinguishing placement detail ('normally immediately before END'). It clearly identifies the resource and differentiates it from section-related siblings like delete_section or rename_section, though it does not explicitly acknowledge those alternatives.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    There is no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The phrase 'normally immediately before END' implies a common usage context, but it does not explain when create_section is preferred over other structural editing tools like insert_rung or replace_rung.

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

  • Behavior3/5

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

    Annotations already declare destructiveHint=true, so the description doesn't need to restate that. However, it adds no additional behavioral context beyond 'delete by address' – e.g., whether deletion is permanent, if it affects other references, or if revision checks apply. The annotation covers the destructive nature, and the description adds minimal value, but there's no contradiction.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single sentence of only six words, which is highly concise. It gets to the point quickly and front-loads the core action, but it omits necessary details due to its brevity. There is no filler, but the extreme brevity borders on under-specification.

    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?

    Given there are 5 parameters, no parameter documentation, and the tool is destructive, this description is insufficient. It lacks information about required parameters, potential effects on related data, or how the expected_revision might influence the operation. The output schema exists but the description does not leverage it to add operational context.

    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%, meaning the description does not explain any parameters. The description mentions 'by address' but does not clarify that 'address' is required, nor does it explain the roles of 'scope', 'program_name', 'expected_revision', or 'project_id'. Since there are 5 parameters with no documentation, the description fails to compensate.

    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 clearly states the action (delete) and the resource (symbol-table entry) identified by address. It is concise and unambiguous, but it doesn't explicitly differentiate from sibling tools like 'upsert_symbol' or 'delete_section' which are clearly different resources. However, the verb-resource pairing is specific enough.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description gives no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, potential side effects, or context where deletion might be inappropriate. No exclusions or alternatives are presented.

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

  • Behavior2/5

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

    Annotations declare destructiveHint=true, so the description needn't restate that. However, the description does not disclose any behavioral consequences beyond the action, such as whether existing references are updated, impact on rungs, or whether the operation is reversible. The 'expected_revision' parameter hints at concurrency control but the description provides no context.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, concise sentence that front-loads the core action. It is appropriately sized, but given the 0% schema coverage and mutation semantics, a bit more detail would not hurt.

    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?

    A deletion/rename tool with destructiveHint=true and 5 parameters including an optional revision should explain prerequisites, side effects, and concurrency behavior. The output schema is present, so return values are likely covered, but the description fails to provide critical usage context.

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

    Parameters2/5

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

    Schema description coverage is 0%, so the description must compensate. It only mentions 'program section' but does not explain the role of project_id, program_name, section_name, or especially expected_revision. The parameter names are fairly self-explanatory, but the revision semantics are entirely undocumented.

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

    Purpose4/5

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

    The description 'Rename one program section' clearly states the verb (rename) and resource (program section), distinguishing it from sibling tools like create_section and delete_section. It lacks explicit mention of the project/program context, but the schema parameters fill that in.

    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?

    There is no explicit when-to-use or alternative guidance, but the name and description clearly imply a mutation operation on a section. It does not mention when to prefer other tools (e.g., create_section, delete_section), but the simple scoping is implied by the sibling set.

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

  • Behavior3/5

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

    Annotations indicate readOnlyHint true and openWorldHint false, so the description doesn't need to restate safety. The description adds some color about contents (ladder, comments, symbols) but does not disclose anything beyond that, such as output size or performance characteristics. It is consistent with annotations, and the extra detail about 'optional rung analysis' provides slight incremental value.

    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?

    The description is a single, focused sentence that immediately states the tool's purpose and primary contents. It contains zero filler and is well-front-loaded, making it easy to scan.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Although an output schema exists, the description still needs to clarify parameter semantics and usage context. It fails to explain the meaning of 'structured' and 'include_empty_rungs,' and doesn't mention how this tool differs from related rung-level tools. For a read-only tool with 4 params, it is too terse to be fully self-sufficient.

    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 has the full burden to explain parameters. It only mentions 'optional rung analysis,' which vaguely hints at structured or include_empty_rungs, but does not clarify what these booleans control or how project_id and program_name are used. Required parameters are obvious from names, but the optional flags are unexplained.

    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 clearly states the tool returns program context including ladder, comments, symbols, and optional rung analysis, with a specific verb and resource. It distinguishes somewhat from siblings like get_rungs or list_symbols by implying a broader, AI-focused context, though it doesn't explicitly name alternatives.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    No guidance is provided on when to use this tool versus siblings such as get_rungs, analyze_rung, or list_symbols. The description implies it's for pulling a whole program context, but there are no explicit usage conditions or exclusions, leaving the agent to infer appropriateness.

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

  • Behavior3/5

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

    The annotations already indicate read-only behavior, and the description adds a scope constraint ('for one program'). It does not disclose additional behaviors like ordering, pagination, or error handling, but the program scope is a useful behavioral detail beyond the annotation.

    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?

    The description is a single, concise sentence with no unnecessary words. It is well-structured and to the point.

    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?

    The description adequately covers the core functionality and scope. It implies the return type (sections and rung counts) and is sufficient for a simple tool, though it lacks explicit mention of edge cases or output format details.

    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?

    The schema parameters (project_id, program_name) have no descriptions, and the tool description provides no clarification about their meaning or expected format. Since schema coverage is 0%, the description fails to compensate by explaining the parameters.

    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 clearly states the tool lists sections and rung counts for a single program, distinguishing it from tools that list programs or manage other aspects. It is specific about the scope and the data returned.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description does not explicitly state when to use this tool versus alternatives. It only mentions 'for one program,' which implies a use case but lacks direct guidance on choosing this over other similar tools (e.g., list_programs, get_program_context).

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

  • Behavior3/5

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

    Annotations declare readOnlyHint=true, so an agent can infer this is a read-only inspection tool. However, the description provides no behavioral details about computed outputs, formatting, 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.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, front-loaded sentence listing the checkable diagnostics with no redundant detail.

    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?

    This is a focused diagnostic tool with one required parameter and a readOnlyHint, but the description does not state the expected output format, permission prerequisites, or how results are returned, and it offers no guidance on whether to use it before/after other operations.

    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?

    The schema declares exactly one parameter (project_id) with zero property descriptions, and the tool description does not explain the meaning, constraints, or format of this ID. Schema coverage is 0%, far below the 50% threshold, so the description must compensate and does not.

    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 diagnostic purpose ('Report duplicate coils...') with a clear verb+resource, but does not explicitly distinguish itself from sibling tools such as validate_program or list_symbols.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies a diagnostics context but provides no explicit when-to-use or when-not-to-use guidance, nor names alternative tools despite a large sibling list.

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

  • Behavior2/5

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

    Annotations already mark this as destructive (destructiveHint: true), but the description adds no behavioral context such as what happens to the existing rung, reversibility, or side effects. It does not contradict the annotations, but provides zero additional transparency.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, front-loaded sentence with no fluff – every word contributes. It could potentially be expanded with structured details, but for concise communication it is well-formed, though slightly too sparse to earn a top score.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness1/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    With 8 parameters, nested objects, and an output schema, this is a complex tool, yet the description provides almost no contextual information. It fails to explain how to construct 'expression', what 'outputs' means, or how rung_index and revision interact, making it grossly incomplete.

    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 offers no parameter-level detail. Terms like 'expression' or 'outputs' are left completely unexplained, placing the full burden on the user to infer meaning from the schema alone.

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

    Purpose5/5

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

    The description clearly states the action ('Replace a rung') and the key differentiator ('structured boolean expression instead of raw mnemonic text'). This specific verb+resource combination distinguishes it from sibling tools like 'replace_rung' that use raw text.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The phrase 'instead of raw mnemonic text' implies when to use this tool (when a structured expression is available) and contrasts it with alternatives, providing clear context. However, it lacks explicit exclusionary guidance or a formal 'use when' statement, so it stops short of a 5.

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

  • Behavior3/5

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

    Annotations already indicate readOnlyHint=true and openWorldHint=false, so the read-only nature is covered. The description adds that it searches across named fields (mnemonic, addresses, comments, symbols), which is a behavioral trait but already implied by the purpose. It does not disclose return format, pagination, or limitations, but given annotations, a score of 3 is appropriate as minimal 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.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, front-loaded sentence with no fluff. It conveys the essential purpose efficiently. While it is minimal, it avoids redundancy and earns its place, though it might be considered under-specified for a tool with no schema coverage.

    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?

    Given the tool has 2 required parameters with 0% schema coverage and an existing output schema, the description does not provide enough context. It does not mention expected return format, usage patterns, or any restrictions. For a search tool that likely returns a list of results, the description is insufficient to guide an agent effectively, making it incomplete.

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

    Parameters3/5

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

    Schema description coverage is 0%, so the description must compensate. It explains what 'query' searches (mnemonic text, addresses, comments, and global/local symbols), adding meaning beyond the schema. However, it leaves 'project_id' completely unexplained, and the description does not cover any format or constraints on query, providing only partial semantics.

    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 clearly states the tool searches mnemonic text, addresses, comments, and global/local symbols, which is specific and distinguishes it from siblings like list_symbols or cross_reference_address. It uses a specific verb (search) and identifies the resource scope, making the purpose 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?

    No guidance on when to use this tool versus alternatives. It does not mention when not to use it, differences from similar tools, or prerequisites. The only clue is the description of what it searches, but there is no explicit usage context or exclusions.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true and the description aligns with that by describing checks rather than mutations. It adds the specific check categories, but does not disclose output behavior, failure semantics, or any operational constraints beyond what the annotations provide.

    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?

    The description is a single front-loaded sentence with no filler. Every word contributes to the tool's purpose and scope.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool is simple with one parameter and an output schema, so return-value details are not required. However, the description lacks usage context and parameter guidance, making it adequate but incomplete for an agent deciding when and how to invoke it.

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

    Parameters2/5

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

    Schema description coverage is 0% and the description does not mention project_id at all. The input schema only provides the title 'Project Id', so the description adds no additional meaning about how the parameter is used or formatted.

    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 uses a specific verb ('Run') and names three concrete validation categories: CXT structural checks, protected-scope integrity checks, and ladder diagnostics. This makes the tool's purpose clear, though it does not explicitly differentiate it from the sibling program_diagnostics_tool.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    No guidance is given about when validate_program should be used compared to alternatives such as program_diagnostics_tool or save_cxt. There is no mention of ideal timing (e.g., before saving) or when not to use the tool.

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

  • Behavior3/5

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

    Annotations already indicate destructiveHint=true and idempotentHint=false, so the description does not need to restate those. The description adds the qualifier 'in-memory,' which implies the edit is not persisted to disk and is part of a session-level undo/redo stack. It does not disclose failure conditions (e.g., no undone edit exists) or whether the expected_revision parameter affects rollback behavior, but the annotations cover the core safety profile. The added 'in-memory' context is a minor enhancement.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, precise sentence with no waste. It is front-loaded with the verb 'redo' and clearly introduces the action. However, it omits needed detail such as parameter explanations, which technically are part of completeness but the brevity itself is commendable. It is appropriately sized for a simple operation, though the lack of parameter info might be a missed opportunity.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool has two parameters (one required), an output schema, and a destructive nature. The description only states the action; it does not explain the meaning of expected_revision, error cases, or the in-memory nature is not expanded. With no usage guidelines beyond inference and no parameter semantics, an agent may not know how to properly invoke it, especially since there is a param that likely controls optimistic concurrency. The output schema exists but its relationship to the function (e.g., what is returned after a successful redo) is not mentioned. The description is insufficient for a reliable call.

    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?

    The schema description coverage is 0%, so the description must compensate. It does not mention either project_id or expected_revision. The description only references 'the last undone edit' without explaining how project_id selects the target project or what expected_revision is used for (e.g., a concurrency guard). The agent receives no parameter semantics from the description, leaving all meanings to the property names, which is insufficient for a tool with one required param and a complex output schema.

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

    Purpose5/5

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

    The description clearly identifies the action (redo) and the target (last undone in-memory edit). It is distinct from the sibling tool undo_last_edit and specifically describes the unique operation. The verb 'redo' is unambiguous, and 'last undone' provides a clear scope typical of a redo action.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description clearly states what the tool does but does not explicitly say when to use it. It implies usage after an undo operation via the phrase 'undone in-memory edit,' and the sibling name undo_last_edit suggests a pairing. However, it lacks explicit guidance on preconditions (e.g., must have previously undone an edit) or when not to use it, so the usage context is only implied.

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

  • Behavior3/5

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

    The description adds a behavioral note about the revision guard preventing stale edits, which is useful context beyond the destructiveHint annotation. However, it does not elaborate on other behaviors such as what happens to the existing rung or any side effects, so it only partially meets the bar.

    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?

    The description is extremely concise—two sentences—and front-loads the primary action and key constraint (revision guard). Every word earns its place, with no fluff or redundancy.

    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?

    Given the tool's complexity (7 parameters, destructive, output schema, multiple sibling rung tools), the description is minimal. It omits parameter semantics, output details, and any process context, making it inadequate to fully guide an agent in correct use.

    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?

    With schema description coverage at 0%, the description fails to compensate by explaining any of the 7 parameters. It only hints at 'instructions' via 'mnemonic lines', but does not clarify other fields like project_id, rung_index, or expected_revision. This is a significant gap given the large parameter count.

    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 clearly states the action (replace one rung) and the format (CX-Programmer mnemonic lines), which is specific and tied to the resource. However, it does not explicitly differentiate from the sibling tool 'replace_rung_structured', so it falls short of a 5.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage (replace a rung) but provides no explicit guidance on when to use this versus alternatives like 'replace_rung_structured' or other rung-editing tools. No exclusions or when-not-to-use scenarios are mentioned.

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

  • Behavior3/5

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

    The annotations declare destructiveHint=true and readOnlyHint=false, so the description doesn't need to state that it modifies, but it does not add behavioral context beyond that. It doesn't mention that it might overwrite existing symbols, require specific permissions, or affect revision tracking. The description's statement about not touching PLC setup is useful but limited.

    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?

    The description is a single, concise sentence that efficiently communicates the core purpose and a key constraint. 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?

    Despite having an output schema (which may explain return values), the description lacks critical context: it does not explain the upsert semantics (how it decides to create vs update), the role of expected_revision for concurrency, or conditions under which the operation might fail. Given the tool's mutation nature and many parameters, more guidance is needed.

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

    Parameters2/5

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

    With 0% schema description coverage, the description should compensate, but it only mentions 'global/local' scope and does not explain the meaning of key parameters like expected_revision, program_name, or address format. It does not clarify how the upsert logic works (e.g., how it identifies an existing symbol). This is a significant gap for an 8-parameter tool.

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

    Purpose4/5

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

    The description clearly states the action (create or update) and the resource (program symbol), and adds scope distinction (global/local) and explicitly excludes touching PLC setup or I/O tables. This distinguishes it from sibling tools like delete_symbol and list_symbols, though it doesn't explicitly name 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?

    It implies usage for creating/updating symbols, and the exclusion of PLC setup/I/O tables provides some direction on what not to use it for. However, it does not explicitly say when to use this versus alternatives like apply_program_patch or set_rung_comment, nor does it provide prerequisites like needing a loaded project.

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

  • Behavior4/5

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

    Annotations already mark this as destructive, and the description adds meaningful behavioral detail by stating the existing section is replaced, the resulting program logic is 'first-press-wins SET/RSET latch,' and that a trailing empty rung is appended. It stops short of describing failure modes or revision requirements, but it exceeds what annotations alone provide.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    One tightly written sentence, front-loaded with the action verb 'Replace,' and no filler or repetition. It communicates the core transformation in minimal space.

    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?

    Although an output schema is present and annotations provide safety context, the tool is a complex destructive mutation with five required parameters and zero parameter-level documentation. The description explains the top-level transformation but is not sufficient for an agent to know what values to supply, especially for 'participants' and 'expected_revision.'

    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 does not explain any of the six parameters. The meaning of 'participants' is especially opaque—it is an array of objects with arbitrary additional string properties—and 'reset_address' is only inferable from the latch context, not documented.

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

    Purpose5/5

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

    The description uses a specific verb and resource: 'Replace a non-END section' and clearly defines the resulting artifact: a 'first-press-wins SET/RSET latch program plus one trailing empty rung.' This is distinct enough to separate it from planning or other sibling editing tools.

    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 explicit guidance on when to use this tool versus alternatives like plan_exclusive_latch or apply_program_patch. The only contextual hint is 'non-END section,' which acts as a precondition, but there are no when-to-use, when-not-to-use, or alternative tool references.

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

  • Behavior3/5

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

    Annotations already indicate destructiveHint: true)Skip destructive nature. The description adds that it 'repair CX-Programmer rung indexes/counts,' which is useful behavioral context beyond the annotation)Skip that the tool performs additional maintenance beyond the deletion. However, it does not disclose other side effects (e.g., impact on references, need to save) or failure modes, so it adds only partial transparency.

    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?

    The description is a single concise sentence that states the action and a key side effect without fluff. It is appropriately short and front-loaded with the verb and object.

    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 destructive operation with 4 required parameters and an optional expected_revision, the description lacks important context about consequences (e.g., whether changes are reversible, impact on program logic, or how to handle revision mismatches). While an output schema exists, the description does not convey enough operational context for safe invocation.

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

    Parameters2/5

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

    With 0% schema description coverage, the description must explain parameter meanings, but it only implies rung_index via 'rung.' It does not clarify the roles of project_id, program_name, section_name, or expected_revision (likely for concurrency control). The description adds minimal value beyond the schema's basic property names.

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

    Purpose5/5

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

    The description clearly states the action: 'Delete one rung' and adds a specific detail about repairing indexes/counts, which distinguishes it from sibling tools like insert_rung or replace_rung. It is specific about the resource (rung) and the operation (delete), making the purpose unambiguous.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description does not provide any guidance on when to use this tool versus alternatives. Among siblings like insert_rung, replace_rung, and compile_structured_rung, there is no mention of scenarios where deletion is appropriate or preferred, nor any prerequisites or conditions.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds the global/local scope distinction, but doesn't disclose return format, pagination, or potential limitations. It's a simple read operation, so minimal additional transparency is needed.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    One-sentence description, front-loaded with the main action. No fluff, efficient.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool has an output schema and readOnly annotation, but the description lacks parameter explanations and usage scenarios. With 3 parameters and no schema descriptions, the description is too minimal to be considered complete. It covers the basic purpose but not the full context.

    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?

    Input schema has 3 parameters, but description covers only 0% of them. The description mentions 'global or local' which hints at the scope parameter, but doesn't explain project_id or program_name semantics. The description adds little value beyond the schema, failing to compensate for low schema coverage.

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

    Purpose5/5

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

    The description clearly states the tool lists CX-Programmer symbols/address comments with global or local scope. It uses a specific verb (List) and resource (symbols/address comments), and distinguishes from sibling listing tools like list_programs and list_sections by focusing on symbols.

    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 explicit guidance on when to use this tool versus other listing tools, nor when to use 'scope' vs 'program_name' parameters. The description only implies usage for symbol listing, but omits context such as prerequisites or when to filter by program.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint=true, and the description complements this by emphasizing the omission of 'PLC setup payloads', suggesting a lightweight, read-only overview. It adds value by clarifying the return scope (identity and tree only), which is not in the annotations. However, it does not describe other behavioral aspects like pagination or performance.

    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?

    The description is a single, tightly written sentence. It front-loads the action and resource, and the phrase 'without PLC setup payloads' adds precision without redundancy.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool is moderately complex (returns identity and tree) and has an output schema (which likely describes the return structure itself). The description is minimal but adequate for a read-only summary tool, though it could benefit from explaining what 'PLC setup payloads' specifically are. Given the output schema exists, the return format is not the main gap; the main gap is lack of usage context.

    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?

    With schema description coverage at 0%, the description should compensate for the single parameter 'project_id'. It does not provide any additional meaning beyond what the schema states (the parameter name and its type). The description fails to clarify that the project_id is used to select the project for summarization, which is critical.

    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 clearly states the verb 'Return' and the resource 'PLC identity and the program/section tree', and distinguishes it from other tools by noting it omits 'PLC setup payloads'. While it doesn't explicitly name sibling tools, the scope is clear and specific enough to differentiate from related tree/list tools.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    There is no explicit guidance on when to use this tool versus alternatives like list_sections or list_programs. The description implies a high-level overview use case ('program/section tree'), but it does not state when this is preferable or mention any exclusions.

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

  • Behavior3/5

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

    The annotations already declare this as read-only (readOnlyHint: true). The description complements this by confirming 'does not edit a project' and revealing it is a 'preview' feature, which adds a temporal aspect beyond the static annotation. However, beyond that confirmation, it doesn't describe expected response, error conditions, or compiler behavior in detail, staying close to what annotations already show.

    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?

    The description is two sentences, with the core action in the first and a crucial caveat in the second. Every word earns its place; there is zero fluff or repetition of the tool name/title.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a tool with only 2 parameters, both required, and an output schema present, the description covers the key aspects: what the tool does, that it's a safe preview operation, and its side-effect-free nature. It lacks only a brief note on when to use it versus the sibling compilation/editing tools to be fully complete for the most common scenarios.

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

    Parameters3/5

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

    Schema description coverage is 0%, so the description must compensate. It does clarify the domain ('boolean AST' and 'CX mnemonic'), giving context for the 'expression' and 'outputs' fields, but it never explicitly maps these terms to parameters. An agent still has to guess that 'expression' is the AST and 'outputs' are the mnemonic targets, so there's room for more explicit mapping.

    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 clearly states the verb and resource: 'Compile a boolean AST into CX mnemonic'. It specifies the exact instruction set ('LD/AND LD/OR LD plus OUT/SET/RSET') and explicitly says it does not edit a project. While it's clear this is a compilation step, it doesn't directly name sibling tools like analyze_rung or simulate_rung for contrast, preventing a 5.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies a safe, side-effect-free compile operation ('does not edit a project') but gives no guidance on when to choose this over alternatives like replace_rung_structured or simulate_rung. No explicit 'use when...' or 'use case' is mentioned, leaving the agent to infer usage from the tool name and siblings.

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

  • Behavior4/5

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

    Annotations include readOnlyHint=false, destructiveHint=true, and openWorldHint=true. The description adds value by explicitly stating it never performs GUI automation, online edit, PLC download, force-set/reset, or mode changes, which clarifies the scope of its actions. It also implies it saves a file (destructive in the sense of writing) and opens an external application. This goes beyond the annotations by specifying what it does not do, which is useful for an agent to avoid misusing it.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise, with two sentences. The first sentence states the primary action, and the second sentence lists exclusions. It's front-loaded with the main purpose. However, it could be slightly more structured by separating the exclusions into a bullet list, but it's still efficient and easy to parse.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool has 4 parameters, 2 required, and an output schema. The description is short and doesn't explain the parameters or the output. Given the complexity (external application launch, file saving), the description should provide more context about prerequisites (e.g., CX-Programmer must be installed), what happens on success/failure, and the meaning of expected_revision. The output schema exists, so return values are covered, but the description lacks operational details. It's adequate but not complete.

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

    Parameters2/5

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

    Schema description coverage is 0%, so the description must compensate. It mentions 'Save a CXT' and 'open it' but doesn't explain the parameters: project_id, output_path, cx_programmer_exe, and expected_revision. The description doesn't clarify what these parameters mean, their relationships, or any constraints. For example, it doesn't say that output_path is where the CXT is saved, or that cx_programmer_exe is optional to override the default executable path. This is a significant gap given the 0% coverage.

    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 clearly states the action: 'Save a CXT and open it in locally installed CX-Programmer on Windows.' It identifies the resource (CXT file) and the target application (CX-Programmer), and distinguishes it from siblings by specifying the local Windows environment. However, it doesn't explicitly contrast with sibling tools like save_cxt or load_project, so it's clear but not fully differentiated.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage: it's for saving and opening a CXT in CX-Programmer, and it explicitly lists what it never does (GUI automation, online edit, PLC download, force-set/reset, mode changes). This provides some context for when not to use it, but it doesn't mention alternatives or prerequisites like needing CX-Programmer installed or when to use save_cxt instead. The 'never' list is helpful but not a full usage guideline.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=false, and the description's 'Return' is consistent with a read-only operation. It adds context by specifying 'program-only semantic JSON', but does not disclose additional behavioral traits such as output size, determinism, or any side effects. The description aligns with annotations, so no contradiction.

    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?

    The description is a single, concise sentence that front-loads the action ('Return') and immediately specifies the output type. There is no wasted wording or redundant information.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool has one simple parameter, an output schema, and read-only annotations, the description is largely sufficient. It clearly states what is returned and for what purpose. However, it does not clarify how this differs from a full project snapshot or mention any caveats, leaving a small gap in context.

    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 input schema has 0% description coverage for the single required parameter project_id, and the description does not elaborate on its meaning or format. While the parameter name is self-explanatory, the description fails to compensate for the lack of schema documentation, leaving the agent to infer the expected value.

    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 clearly states the tool's function: 'Return program-only semantic JSON' with a specific verb and resource. It also notes the purpose ('suitable for AI review or external versioning'), which adds clarity. However, it does not explicitly differentiate itself from sibling tools like project_diff or save_cxt, though 'program-only' hints at a narrower scope.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description gives implied use cases ('suitable for AI review or external versioning') but does not provide explicit guidance on when to use this tool versus alternatives. It lacks any mention of when not to use it or comparisons with sibling tools such as project_diff, save_cxt, or project_summary.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint=true, which aligns with the description's 'Return' verb and adds no contradiction. The description adds value by specifying the exact status fields returned, providing context beyond the bare read-only annotation. No side effects or additional behavior are mentioned, but for a simple read tool the added field list is sufficient 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?

    The description is a single, compact sentence that conveys the tool's purpose without any fluff or unnecessary detail. It is front-loaded with the core function and uses precise terminology, making it highly scannable.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple read-only tool with one parameter and an output schema present, the description adequately covers the return categories and implies the tool is a status getter. However, the lack of parameter explanation and any mention of when to use it detracts from completeness. Overall, it's sufficient for a straightforward status endpoint but not fully self-contained.

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

    Parameters2/5

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

    The single required parameter project_id has no description in either the schema (0% coverage) or the tool description. The description does not explain what project_id represents or how it affects the status returned, leaving the agent to infer its purpose from the name alone. This is a significant gap given the low schema coverage.

    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 clearly states the tool returns specific status aspects (revision, dirty state, undo/redo depth, program-scope integrity) using a specific verb and resource. It distinguishes from sibling tools by naming these particular fields, though it does not explicitly contrast with alternatives, so it earns a 4.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides no guidance on when to use this tool versus other status-related siblings like project_summary or get_program_context. It only states what it returns, leaving usage context entirely implied.

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

  • Behavior3/5

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

    The readOnlyHint and openWorldHint annotations already establish that this is a safe, bounded read operation. The description adds the useful detail that results include section names, but it does not discuss pagination, project scoping, or behavior when no programs exist; this is acceptable for a simple listing tool but not rich 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?

    The description is six words, front-loaded, and free of fluff. Every word contributes to the core purpose.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple, read-only one-parameter listing tool with an output schema, the description is nearly sufficient. It would be more complete with an explicit statement that project_id is required to scope the listing, but the schema already marks it required, so the context is mostly covered.

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

    Parameters2/5

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

    Schema description coverage is 0%, and the description never mentions project_id or explains how it scopes the listing. The parameter name 'project_id' is self-explanatory, but the description does not compensate for the missing schema documentation beyond implying that programs belong to a project.

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

    Purpose5/5

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

    The description uses the specific verb 'List' with the resource 'programs' and adds the detail 'and their section names,' making the tool's action clear. It also differentiates from sibling list_sections by indicating that this enumerates programs with their associated section names.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    No guidance is provided about when to use this tool versus alternatives such as list_sections, project_summary, or get_program_context. The description implies a listing use case but does not state exclusions, prerequisites, or preferred scenarios.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, and the description adds useful limitation context: only the supported boolean mnemonic subset is evaluated, and it is not a full PLC-cycle simulation. This clarifies the tool's boundary without contradicting annotations.

    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?

    The description is a single, front-loaded sentence with no filler. It efficiently states the action, scope, and limitation.

    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?

    Despite having an output schema, the description is too sparse for a 6-parameter simulation tool with nested objects. It does not explain how bits or state are used, what 'supported boolean mnemonic subset' includes, or any behavioral constraints beyond the one-sentence limitation.

    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 provides no parameter-level information. Although parameter names like rung_index and bits are self-explanatory at a basic level, the description adds nothing about expected values, relationships, or the state parameter's role, so it fails to compensate for the schema gap.

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

    Purpose4/5

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

    The description uses 'Evaluate' with a specific object ('supported boolean mnemonic subset') and explicitly scopes it to 'reasoning/testing only', distinguishing it from PLC-cycle simulation. It does not fully name the tool as simulating a rung's boolean output, but the intent is sufficiently clear and differentiates from siblings like analyze_rung or compile_structured_rung.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description gives a clear usage context: use for reasoning/testing, not for PLC-cycle simulation. This is an explicit exclusion. However, it does not name alternative tools or describe prerequisites such as needing a loaded project or valid section/rung context.

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

  • Behavior4/5

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

    Annotations already establish the destructiveHint, and the description adds valuable transactional context: any failing operation rolls back the entire patch. This clarifies all-or-nothing behavior beyond what the structured annotations provide, though it leaves out details like auth requirements or expected_revision handling.

    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?

    The description is a single, front-loaded sentence with no filler or repetition. Every word contributes meaning, including the critical atomicity and rollback behavior.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool has a complex untyped operations array and an undocumented expected_revision parameter, yet the description does not clarify the patch operation format or concurrency expectations. Although an output schema exists, the missing operation syntax and parameter semantics leave the description incomplete for reliable invocation.

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

    Parameters2/5

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

    With schema description coverage at 0%, the description must compensate, but it only vaguely indicates that 'operations' are program edits. It does not explain the structure of operation items, the role of project_id, or the meaning of expected_revision, which are important given additionalProperties: true on operation objects.

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

    Purpose5/5

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

    The description uses a specific verb ('Apply') and identifies the resource as 'program-only edits,' with the distinctive atomic batch behavior stated directly. It clearly differentiates this from sibling tools that handle single edits or non-program operations.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies use for batched program edits and implies single-edit tools are alternatives, but it does not explicitly state when to use this tool versus replace_rung, insert_rung, or other sibling edit tools. No exclusions or alternative tool names are given.

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

  • Behavior4/5

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

    The annotation already indicates destructive behavior, and the description adds a behavioral nuance: attempting to delete the END section is disallowed. This goes beyond the basic destructive flag, but it does not elaborate on other potential behaviors like concurrency or error handling.

    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?

    The description is extremely concise, stating only the necessary action and the one critical caveat. It contains no superfluous information and is appropriately sized for a simple deletion operation.

    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?

    Given that the operation is destructive and involves four parameters, the description omits important contextual details such as the meaning of expected_revision, error conditions, side effects, or any preconditions. The output schema exists but does not cover these behavioral aspects, leaving the description incomplete.

    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?

    The schema provides parameter names but no descriptions, and the tool description does not explain any parameter. The expected_revision parameter is crucial for optimistic concurrency but is left unexplained. Since schema coverage is zero, the description fails to compensate.

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

    Purpose5/5

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

    The description explicitly states the action ('Delete a section') and the object, making the tool's purpose unambiguous. It also sets it apart from sibling tools like delete_rung by specifying 'section'. The caveat about END being protected adds a clear scope restriction.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage for deleting a section, which is clear from the name and verb. It also provides a specific usage restriction ('END is protected'), indicating when the tool cannot be used. However, it does not mention any alternatives or broader context (e.g., when to prefer this over other deletions).

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

  • Behavior4/5

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

    The description aligns with readOnlyHint=true and openWorldHint=false, and adds value by specifying the exact comparison (pending edits vs loaded project) and diff format (unified CXT). It does not contradict annotations, though it omits error or edge-case behavior.

    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?

    The description is a single sentence, front-loaded with the action verb, and contains no filler or redundant phrasing.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple read-only diff tool with an output schema and readOnlyHint annotation, the description is largely sufficient. It lacks explicit usage context like 'inspect before save_cxt,' but the core behavior is fully scoped.

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

    Parameters2/5

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

    Schema description coverage is 0%, and the description does not mention project_id or context_lines. While parameter names are somewhat self-explanatory, the description fails to compensate for the lack of schema descriptions.

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

    Purpose5/5

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

    The description uses a specific verb 'Show' and names the resource: a unified CXT diff comparing pending edits to the loaded project. This clearly differentiates it from sibling save/load/edit tools as a read-only preview.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    No guidance is provided on when to use this tool versus alternatives like save_cxt, semantic_snapshot, or validate_program. There are no stated exclusions, prerequisites, or suggested call contexts.

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

  • Behavior4/5

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

    The description explicitly mentions the refusal of source overwrite unless allowed, which adds behavioral detail beyond the annotations (readOnlyHint: false, destructiveHint: true). It doesn't contradict annotations, and it gives a key safety behavior. However, it lacks details on validation failure 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.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise and to the point, but lacks structured guidance like parameter explanations or example usage. It is minimal but clear for the core action.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool is a write operation with a safety flag, but it doesn't explain when to use it (e.g., after editing) or what happens to the existing file. It provides basic context but misses edge cases like validation failure or side effects.

    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 schema lists five parameters (backup, project_id, output_path, expected_revision, allow_source_overwrite) with no descriptions. The description only hints at allow_source_overwrite. There's no explanation for expected_revision or backup, so the semantics are unclear for agents.

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

    Purpose5/5

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

    The description clearly states the action ('Validate and save edited source') and the target format ('as CXT'), making it distinct from siblings like apply_program_patch or replace_rung. It's a specific verb+resource statement.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage after editing source and mentions validation, but it does not explicitly contrast with alternatives like 'apply_program_patch' or state when not to use this tool. Some context is given, but no exclusions or comparisons.

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

  • Behavior4/5

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

    The readOnlyHint annotation already signals a safe read operation, and the description adds useful context by stating that structured=true adds read/write and boolean-expression analysis. This goes beyond the annotation by revealing what enriched information is computed, though the phrase 'read/write analysis' is a bit terse.

    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?

    The description is two short sentences, front-loaded with the core action, and contains no filler or redundant information. Every part contributes to understanding the tool's purpose or optional behavior.

    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 covers return values and annotations cover safety, so those areas are adequately handled elsewhere. However, with zero parameter descriptions and no guidance on deciding between this tool and related analysis tools, the description is only minimally complete for a tool with five parameters and optional structured behavior.

    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 schema has 0% description coverage, yet the description only elaborates on structured, leaving include_empty, project_id, program_name, and section_name without added semantics. The parameter names and titles are somewhat self-explanatory, but the description does not compensate 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.

    Purpose5/5

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

    The description opens with a specific verb and resource: "Read rungs from one section," which clearly states the core functionality. The phrase "one section" scopes the operation and helps distinguish it from broader tools like list_sections or rung-analysis tools.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies use when rungs from a single section are needed, but it does not explicitly state when to prefer this tool over alternatives such as analyze_rung or search_program. The structured=true hint gives some usage context, but no exclusions or alternative guidance are provided.

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

  • Behavior4/5

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

    Annotations already declare the tool destructive and not read-only. The description adds valuable context by clarifying the operation is in-memory only and does not affect disk state, which is not captured by the annotations. However, it does not disclose behavior when there is no edit to undo or how expected_revision affects the operation.

    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?

    The description is a single sentence, front-loaded with the action, and contains no filler or redundant phrasing. Every word adds meaning.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The description covers the core behavior and the important in-memory/disk distinction, and an output schema exists. However, it omits the meaning of expected_revision and does not address edge cases like undoing when no edit exists, leaving the tool partially underspecified for a destructive operation.

    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 carries the burden of explaining parameters, but it mentions neither project_id nor expected_revision. The parameter names are somewhat self-explanatory, but the optional expected_revision's role as a concurrency guard is completely undocumented.

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

    Purpose5/5

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

    The description uses a specific verb ('Undo') with a clear resource ('the last in-memory edit') and a key scoping qualifier ('without touching disk'). This clearly distinguishes the tool from siblings like redo_last_edit and other edit operations.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies when to use the tool—when you need to revert the most recent in-memory change without persisting—but it does not explicitly state when not to use it or mention alternatives such as redo_last_edit. The usage context is clear enough, but exclusion guidance is absent.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=false, establishing a safe read operation. The description adds value by specifying the outputs (structured mnemonic, boolean AST, reads/writes, stateful writes, timers and counters), giving a clearer picture of what the tool returns beyond the annotation flags.

    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?

    The description is a single, focused sentence that front-loads the action ('Parse one rung') and efficiently enumerates the output categories. No wasted words.

    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 fully described. The description names the key output categories. It could mention potential error cases or prerequisites, but for a read-only analysis tool with an output schema, this is adequately complete.

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

    Parameters2/5

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

    Schema description coverage is 0% and the description does not mention any parameters. The parameter names (project_id, program_name, section_name, rung_index) are self-explanatory, but the description provides no additional meaning or compensation for the lack of schema descriptions.

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

    Purpose5/5

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

    The description uses a specific verb ('Parse') and resource ('one rung'), and lists concrete outputs: structured mnemonic, boolean AST, reads/writes, stateful writes, timers and counters. This clearly distinguishes it from sibling tools like simulate_rung or compile_structured_rung.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies its usage (when you need to parse a rung's structure) but does not explicitly state when to use it over alternatives or provide exclusions. No sibling tools are named, so guidance is only implied.

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

  • Behavior4/5

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

    Annotations already indicate destructiveHint: true and readOnlyHint: false MendThe description adds valuable context by specifying 'in-memory' and 'without writing changes', clarifying that no persistent side effects occur. This reinforces the destructive nature (session discarded) and indicates the operation is not a save. It provides behavior beyond the bare annotation.

    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?

    The description is a single, compact sentence with no redundant words. It front-loads the core action and its key side effect (no writes). Every word contributes meaningful information.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's simplicity (one required parameter, no nested objects, output schema present), the description is adequately complete. It conveys the essential behavior (discard, no writes) and the in-memory scope. It does not detail side effects beyond 'discard,' but for a close operation, this is sufficient, and annotations cover the destructive nature.

    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 needs to compensate. However, it does not mention 'project_id' at all. While the parameter name is self-explanatory, the description does not clarify that this ID must reference an existing in-memory session or how it is used. The tool provides no additional meaning over the bare schema property.

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

    Purpose5/5

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

    The description clearly states the verb 'Discard' and the resource 'in-memory project session', specifying the action (close/discard) and the scope (in-memory, no writes). It distinguishes itself from siblings like save_cxt (which persists) and load_project (which loads), making the purpose unambiguous.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage: 'Discard an in-memory project session without writing changes' suggests abandoning changes and closing. However, it does not explicitly state when to prefer this over alternatives (e.g., save_cxt) or any prerequisites (e.g., session must be active). The context is clear but lacks explicit exclusions or comparisons.

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

  • Behavior4/5

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

    The readOnlyHint annotation already indicates no mutation, and the description reinforces it with 'does not edit a project.' It adds useful behavioral context about first-press-wins semantics and SET/RSET usage. No contradiction exists between description and annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    One concise sentence with the key purpose front-loaded and no filler. Every phrase earns its place: preview, recipe type, mechanism, and no-edit guarantee.

    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?

    Given the output schema exists and readOnlyHint is already set, the description is reasonably complete for a preview tool. It conveys purpose, mechanism, and non-mutating behavior. It could benefit from naming the applying sibling, but that is a minor omission.

    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?

    With 0% schema description coverage, the description must compensate, but it only gives domain context (SET/RSET, first-press-wins). It does not explain what 'participants' should contain or how 'reset_address' is used, leaving two required parameters under-specified.

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

    Purpose5/5

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

    The description uses a specific verb ('Preview') and resource ('first-press-wins latch recipe'), plus the mechanism (SET/RSET) and scope ('does not edit a project'). It clearly distinguishes this from the sibling apply_exclusive_latch_group, which is the write counterpart.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description clearly communicates when to use the tool: to preview a recipe without modifying the project. However, it does not explicitly name the alternative tool to use when actually applying the latch, so the usage guidance is strong but not fully explicit.

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

  • Behavior4/5

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

    The readOnlyHint annotation is supported by the description's lack of mutation language. The description adds the classification behavior (read/write/coil/set/reset) which gives the user a sense of the output categories, going beyond a simple 'lists references' statement. It doesn't describe auth or rate limits, but for a read-only tool this is sufficient.

    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?

    The description is a single, well-structured sentence that says everything it needs to without waste. It's appropriately sized for the complexity of the 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?

    For a read-only search tool with an output schema, the description is largely complete. It covers the core function and adds value by noting the classification output. It doesn't mention edge cases like what happens with invalid addresses, but that's likely covered elsewhere. Overall, a solid, complete description.

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

    Parameters3/5

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

    Schema description coverage is 0%, so the description must compensate. The description clarifies what 'address' refers to and what kind of analysis is performed on it (classifying references). However, it doesn't explicitly document the semantics of 'project_id' beyond the schema, nor describe the return format in detail, leaving some room for interpretation.

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

    Purpose5/5

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

    The description uses a specific verb and resource ('Find every program reference to an address') and adds the classification dimensions ('read/write/coil/set/reset'), clearly distinguishing it from sibling tools. It's a complete, specific statement of the tool's function.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description clearly states what the tool does, implying when to use it (when you need to find references to an address). However, it doesn't explicitly mention when not to use it or name alternatives like search_program or get_program_context, though the specificity makes the use case clear.

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

  • Behavior4/5

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

    The description adds valuable behavior beyond the destructiveHint annotation: it clones the 'opaque PLC setup/I/O/unit configuration' and 'blanks only the program surfaces.' It also notes the optional immediate .CXT save. However, it does not explicitly disclose overwrite semantics for output_path, which is relevant given the destructiveHint flag.

    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?

    The description is three sentences, front-loaded with the core purpose, and every sentence adds useful information. There is no repetition of the schema or annotations.

    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?

    Given the 8-parameter creation tool with no schema descriptions, the description covers the key decision (template_id vs template_path), the cloning result, the blanking behavior, and optional saving. Output schema exists, so return-value documentation is not required; the only notable gap is overwrite behavior, which the parameter name and default mitigate.

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

    Parameters3/5

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

    Schema description coverage is 0%, so the description must compensate. It meaningfully explains template_id vs template_path and implies output_path via the optional .CXT save. The remaining parameters (plc_name, project_name, program_name, section_name, overwrite) are left to their names and defaults, which are fairly self-explanatory but not described.

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

    Purpose5/5

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

    The description opens with 'Create a new offline CX-Programmer project session from a native CXT/CXP template' — a specific verb, resource, and source. It clearly distinguishes this creation tool from siblings like load_project, save_cxt, and list_project_templates.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description gives explicit guidance: use a bundled template_id for supported CPUs, and use template_path for maximum fidelity with another CPU/release. This is a clear when-to-use-which-alternative explanation, not just a restatement of the tool's purpose.

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

  • Behavior4/5

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

    Annotations are all false, so they don't guarantee file safety; the description adds the valuable disclosure 'The input file is never modified,' resolving ambiguity around readOnlyHint=false. It also surfaces the CX_MCP_ALLOWED_ROOTS environment variable, giving the agent actionable knowledge about filesystem access restrictions.

    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 short sentences, each earning its place: the purpose, the file-safety guarantee, and the security configuration note. No redundancy with the schema or annotations, and the core purpose is front-loaded.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a low-complexity tool (1 parameter, output schema present), the description covers purpose, file types, safety, and security. It stops short of explaining session lifecycle behavior (e.g., what happens when loading a new project while one is already open), which is a minor gap given the editing-session framing.

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

    Parameters4/5

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

    Schema description coverage is 0%, so the description must compensate. It does so by specifying that the tool loads '.CXP or .CXT' files, which tells the agent that the required 'path' parameter must point to one of these file types. This is the key semantic constraint on the parameter.

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

    Purpose5/5

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

    The description uses a specific verb+resource construction: 'Load a CX-Programmer .CXP or .CXT into an offline, in-memory editing session.' It clearly names the input format and the destination context, and it differentiates itself from siblings like save_cxt, close_project, and launch_in_cx_programmer.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The phrase 'offline, in-memory editing session' provides clear context that this is the foundational step for subsequent in-memory edit tools, and distinguishes it from launch_in_cx_programmer. However, no explicit alternatives or when-not-to-use scenarios are named.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, so the description's 'List' is consistent and no contradiction. The description adds context about 'bundled blank' templates and the purpose of 'native-structure project creation', which goes beyond the annotation. For a simple list tool, this is sufficient behavioral disclosure.

    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?

    The description is a single, clear sentence with no filler. It efficiently conveys the tool's purpose and scope.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool is simple (no parameters, read-only) and there is an output schema available, so the description need not detail return values. It fully covers what the tool does and its context.

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

    Parameters4/5

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

    The tool has zero parameters, and schema coverage is 100% (empty object). The description correctly implies no parameters are needed, and the baseline for 0 params is 4, which is appropriate.

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

    Purpose5/5

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

    The description uses a specific verb ('List') and resource ('bundled blank CX-Programmer project templates') and clearly distinguishes from the sibling 'create_project_from_template' by focusing on listing rather than creation. It also adds context about 'native-structure project creation'.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage context (listing templates for project creation) but does not explicitly state when to use this tool versus alternatives like 'create_project_from_template'. It is clear from the verb, but lacks explicit when/when-not guidance.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

Cx-Proggrammer-MCP MCP server

Copy to your README.md:

Score Badge

Cx-Proggrammer-MCP MCP server

Copy to your README.md:

Latest Blog Posts

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/BlackUppsss/Cx-Proggrammer-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server