OPC UA Modeler
Server Details
OPC UA companion spec types, namespace dependencies, and engineering units for AI agents
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- node-opcua/node-opcua-modeler-mcp-server
- GitHub Stars
- 1
- Server Listing
- node-opcua-modeler-mcp-server
Available Tools
12 toolsfind_engineering_unitFind an engineering unitARead-onlyIdempotentInspect
Find the official UNECE Rec. 20 engineering unit symbol for a given description. ALWAYS call this before using any engineering unit — NEVER guess unit symbols.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Description or common name of the unit (e.g. "revolutions per minute", "celsius", "pressure bar") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the authoritative standard ('UNECE Rec. 20') and a usage policy, but does not disclose details such as return shape, exact-match versus fuzzy-match behavior, or what happens when no symbol is found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler, and the core purpose appears first. The imperative rule is front-loaded where it matters and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only, idempotent lookup, the description covers purpose, input, and mandatory usage well. The main gap is the lack of any note about the response representation or no-match behavior, but the low complexity and existing annotations keep this from being a significant deficiency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'query' parameter is fully documented in the schema with a clear description and examples. The tool description only refers to it as 'a given description', adding no significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Find'), a precise resource ('official UNECE Rec. 20 engineering unit symbol'), and the input it operates on ('a given description'). It clearly distinguishes this tool from the sibling tools, none of which are engineering-unit lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'ALWAYS call this before using any engineering unit'. It also states a hard behavioral rule: 'NEVER guess unit symbols', which tells the agent the alternative to avoid. No sibling tool is an alternative, so no further routing is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_reusable_blockFind a reusable interface or AddInARead-onlyIdempotentInspect
Find reusable Interfaces / AddIns by capability — pass a member name or keyword (e.g. "SerialNumber", "DeviceHealth", "Location") and get the standard blocks that already expose it. PREFER applying/composing an existing block over redefining its members inline. Interfaces are applied with interfaces:; addins (types with a DefaultInstanceBrowseName) are composed with addIns:. A single property → use the Interface; a whole named sub-object → use the AddIn.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Member name or capability keyword (e.g. "SerialNumber", "health", "calibration") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnly, idempotent, and openWorld annotations already communicate the safety profile, and the description adds context by explaining how result blocks are applied (`interfaces:` vs `addIns:`) and what distinguishes an AddIn (DefaultInstanceBrowseName). It does not detail no-match behavior or the exact response shape, but for a read-only lookup tool the provided context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences carry the entire necessary message with examples, a preference rule, technical application syntax, and a decision rule. There is no filler, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with no output schema, the description covers what to pass, what to expect back, and how to apply the results. It leaves some open questions (e.g., behavior when no match is found, pagination), but those are minor for this level of complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents `query`, so the baseline is 3, but the description enriches it with additional example keywords (DeviceHealth, Location) and links the query semantics to the output decision (single property vs. sub-object). That meaningfully clarifies what kinds of inputs yield Interfaces versus AddIns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: find reusable Interfaces/AddIns by capability, with concrete example keywords. It clearly says what the tool returns (standard blocks that already expose the capability), but it never names or contrasts sibling tools such as search_types or list_types, so differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs the agent to prefer an existing reusable block over inline redefinition, and it provides a concrete decision rule: a single property should use an Interface, while a whole named sub-object should use an AddIn. This tells the model when to call this tool and how to choose between the two result categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dsl_referenceGet the DSL grammar referenceARead-onlyIdempotentInspect
Get the grammar reference for the OPC UA modeler YAML DSL: file header, top-level sections, name-prefix conventions, minimal examples, and common mistakes. Call this FIRST before writing any YAML model by hand. Works without an API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and open-world hints, so the safety profile is covered. The description adds useful context beyond annotations: it lists the content areas of the reference and states that no API key is required. This is appropriate for a no-parameter reference lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence front-loads what the tool returns, and the second delivers the usage instruction and auth note. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, no-output-schema reference tool, the description is complete: it states the content scope, the recommended invocation point, and auth requirements. Combined with the annotations, an agent has everything needed to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain parameter semantics. The schema coverage is 100% vacuously; baseline 4 applies. No additional parameter meaning is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a specific resource ('grammar reference for the OPC UA modeler YAML DSL') and enumerates the contents (file header, sections, naming conventions, examples, mistakes). This clearly distinguishes it from sibling tools like get_type_details or opcua_model_create, which address different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs 'Call this FIRST before writing any YAML model by hand', which gives a clear condition for use. It also notes that it works without an API key, implying it is a low-friction first step. It does not name alternatives or explicit when-not-to-use cases, so it falls short of the full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_type_detailsGet type detailsARead-onlyIdempotentInspect
Get detailed information about a specific type: its components, properties, methods, interfaces, and optional members. Use this to understand a type's structure before creating instances or subtypes.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | Companion spec alias where the type is defined (e.g. "machinery") | |
| browseName | Yes | The type browse name (e.g. "MachineryItemIdentificationType") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, which cover the main behavioral safety traits. The description adds that the tool returns structural details about a type, but it does not disclose additional behavioral traits such as error conditions, output format, or any special behavior. This is adequate given the annotation coverage but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The action and resource are front-loaded, the content categories are compactly listed, and the usage guidance is the final sentence. Every clause contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with two fully documented required parameters, the description gives enough to invoke the tool correctly and explains the intended use case. It lacks an explicit alternative-routing hint and does not describe the output schema, since none is provided, but this is a minor gap for a straightforward getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (alias and browseName). The description does not add parameter-level semantics beyond calling the type 'specific,' which matches baseline expectations when the schema carries the explanatory burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a specific resource ('detailed information about a specific type') and lists concrete content categories like components, properties, methods, interfaces, and optional members. It is clear, though it does not explicitly contrast itself with siblings such as list_types or search_types, relying on 'specific type' to imply the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: 'Use this to understand a type's structure before creating instances or subtypes.' This tells the agent when the tool is appropriate, though it does not mention when to prefer alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_namespacesList companion specificationsARead-onlyIdempotentInspect
List all well-known OPC UA companion spec namespace aliases with their full names, URIs, and dependencies. Use this to discover what namespaces are available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds scope and output content ('full names, URIs, and dependencies') but does not disclose additional behavioral traits such as pagination or ordering. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with the primary action front-loaded. Every sentence adds value: the first states the scope and output fields, the second states the intended use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list operation, the description is complete. It names the resource, scope, output content, and use case. No output schema exists, but the description supplies the essential return-value expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to clarify about inputs. The description still helps by describing what the returned namespace information includes, which is sufficient given the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List all well-known OPC UA companion spec namespace aliases' with their names, URIs, and dependencies. It clearly distinguishes this tool from siblings like list_types and search_types by focusing on companion spec namespaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to discover what namespaces are available,' giving a clear intended use case. It does not explicitly mention when not to use it or name alternative tools, but the context is clear enough for a zero-parameter discovery tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_typesList types in a namespaceARead-onlyIdempotentInspect
List ALL ObjectTypes, VariableTypes, and InterfaceTypes defined in a specific companion spec namespace. ALWAYS call this before using any type from a namespace — NEVER guess type names.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | Companion spec alias (e.g. "machinery", "di", "robotics") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that the tool enumerates all relevant type definitions exhaustively and frames itself as a required discovery step. There is no contradiction with annotations, but the description does not disclose additional behavioral details such as output shape or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences carry both the tool's scope and its primary usage rule. The information is front-loaded, with no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter listing tool with no output schema and simple annotations, the description is largely sufficient. It tells the agent what it lists and when to call it. A minor gap is that it does not mention how to discover valid aliases, e.g., by first calling list_namespaces, though sibling context partially compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the alias parameter already documented as a companion spec alias with examples. The description's reference to a 'specific companion spec namespace' aligns with the schema but adds no new semantic detail beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('List') and a precise resource: 'ALL ObjectTypes, VariableTypes, and InterfaceTypes defined in a specific companion spec namespace.' This clearly distinguishes the tool from generic listing or searching tools by emphasizing namespace-scoped enumeration of all three type categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit condition for use: 'ALWAYS call this before using any type from a namespace — NEVER guess type names.' It does not, however, mention when not to use it or point to alternatives like search_types or get_type_details, so it stops short of full usage differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opcua_model_createCreate a model from a descriptionARead-onlyInspect
Generate an OPC UA YAML model from a natural language description using AI. Requires an API key (set OPCUA_MODELER_API_KEY env var). The AI will auto-detect relevant companion specs, generate a validated model with documentation, and auto-correct validation errors.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Natural language description of the OPC UA model to generate | |
| forceSpecs | No | Companion spec aliases to force (e.g. ["di", "ia"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds meaningful behavior: AI auto-detects companion specs, produces documentation, validates, and auto-corrects errors. It also surfaces the API-key requirement. It does not contradict readOnlyHint or openWorldHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences and about 40 words, with the main purpose up front, then the prerequisite, then behavior. Every sentence adds information; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter schema, read-only annotation, and no output schema, the description provides enough context for selection and intent. It does not specify the exact return shape or failure modes, but the output type (YAML model) is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers both parameters with descriptions, so the 100% schema coverage sets the baseline. The description adds no parameter-specific meaning beyond reinforcing that prompt is the natural-language input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (generate), a precise output (OPC UA YAML model), an input source (natural language description), and a method (using AI). This distinguishes it from sibling operations like validate and reverse, even though opcua_model_generate is a close sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies when to use it: when an OPC UA model should be produced from an NL description, and it gives a hard prerequisite (OPCUA_MODELER_API_KEY). It does not explicitly name alternatives or exclusion cases, which keeps it below 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opcua_model_generateGenerate NodeSet2 XMLARead-onlyIdempotentInspect
Generate OPC UA NodeSet2.xml and Symbols.CSV from a YAML model. Requires an API key (set OPCUA_MODELER_API_KEY env var). Returns base64-encoded artifacts if the model is valid, or diagnostics if validation fails. Optionally set include_docs=true to also generate markdown documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| yaml | Yes | The full YAML model source to generate from | |
| include_docs | No | Set to true to include markdown documentation (slower) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation read-only and idempotent; the description adds that an API key is required, outputs are base64-encoded, invalid models return diagnostics, and include_docs incurs a slower execution. This goes beyond the structured annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with the core purpose front-loaded. Each sentence covers a distinct aspect: action, prerequisites/returns, and optional behavior, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with rich annotations and no output schema, the description is sufficient: it names required auth, return format, error behavior, and the optional flag. An agent has enough information to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters fully. The description mentions 'from a YAML model' and optionally re-states include_docs=true, but it does not add new meaning beyond what the input schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it generates OPC UA NodeSet2.xml and Symbols.CSV from a YAML model. This clearly distinguishes it from sibling tools like validate or reverse by naming both the input and the output artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from a YAML model' and the output artifacts establish a clear use case: producing NodeSet2 artifacts from a YAML source. It does not explicitly name alternatives or provide when-not-to-use conditions, but the context is clear and it includes an important prerequisite (API key).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opcua_model_reverseReverse-engineer NodeSet2 XMLARead-onlyIdempotentInspect
Reverse-engineer a NodeSet2.xml file back into the YAML DSL format. Requires an API key (set OPCUA_MODELER_API_KEY env var). Optionally specify the target namespace URI to extract.
| Name | Required | Description | Default |
|---|---|---|---|
| xml | Yes | The NodeSet2.xml content to reverse-engineer | |
| namespace_uri | No | Target namespace URI to extract (auto-detected if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses an auth requirement not present in annotations: 'Requires an API key (set OPCUA_MODELER_API_KEY env var).' It also clarifies extraction behavior via the optional namespace URI. Since annotations already cover read-only/idempotent/open-world traits, the description adds valuable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences, front-loading the core purpose first. The second sentence combines the auth requirement and optional parameter without wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, input format, output format ('YAML DSL format'), auth prerequisite, and optional namespace filtering. With both parameters documented in the schema and read-only/idempotent annotations supplied, nothing essential for calling this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minor meaning by identifying the input as NodeSet2.xml content and mentioning the namespace URI as an extraction target, but it largely restates what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Reverse-engineer a NodeSet2.xml file back into the YAML DSL format.' This clearly conveys the tool's core purpose and likely distinguishes it from siblings like opcua_model_generate, though it does not 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when converting NodeSet2 XML to YAML DSL and notes the API key prerequisite. However, it does not explicitly state when to prefer this over sibling tools like opcua_model_generate or opcua_model_create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opcua_model_validateValidate an OPC UA modelARead-onlyIdempotentInspect
Validate an OPC UA YAML model for correctness. Returns diagnostics with severity (error/warning/info), codes, messages, and line numbers. Works without an API key (limited to 50 calls/day). ALWAYS validate before generating.
| Name | Required | Description | Default |
|---|---|---|---|
| yaml | Yes | The full YAML model source to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, openWorldHint, and idempotentHint, and the description adds valuable behavioral context beyond them: the exact diagnostic output shape (severity, codes, messages, line numbers) and the API-key-free rate limit. This fully covers what an agent needs to know about the call's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each with purpose: what it does, what it returns, and when to use it. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter validation tool with no output schema, the description adequately compensates by explaining the return structure (errors/warnings/info, codes, messages, line numbers) and the mandatory usage order relative to generation. An agent has enough context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single 'yaml' parameter at 100% coverage ('The full YAML model source to validate'). The description adds no new parameter semantics, but none are needed; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validate), resource (OPC UA YAML model), and purpose (correctness), and clearly distinguishes from sibling generation/reversal tools. The 'ALWAYS validate before generating' instruction further clarifies its role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use the tool ('ALWAYS validate before generating'), and provides operational context (works without an API key, 50 calls/day limit). This gives an agent clear selection and ordering guidance relative to generation siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_dependenciesResolve namespace dependenciesARead-onlyIdempotentInspect
Given one or more companion spec namespace aliases, returns the full resolved dependency list that MUST go in the YAML namespaces: section. Always call this before generating the namespaces block.
| Name | Required | Description | Default |
|---|---|---|---|
| aliases | Yes | Companion spec aliases to resolve (e.g. ["machineTool", "robotics"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds that it produces a 'full resolved dependency list' and is a prerequisite step, but provides no details on return format, ordering, or failure behavior. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core behavior is stated first, and the workflow directive is front-loaded and directly actionable. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with clear annotations, the description covers the essential inputs, the output concept, and the workflow context. The absence of an output schema is mitigated by the statement that the result is a 'full resolved dependency list' for the YAML namespaces section.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents aliases as 'Companion spec aliases to resolve' with an example. The description's 'one or more' adds slight cardinality emphasis, but it mostly restates what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('resolve'), a clear resource ('namespace dependencies'), and ties the result to a concrete artifact ('YAML namespaces: section'). This distinguishes it from siblings like list_namespaces by focusing on dependency resolution rather than mere listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The explicit instruction 'Always call this before generating the namespaces block' tells the agent when to use the tool in the workflow. It does not mention alternatives or when not to use it, but the stated context is sufficient for correct sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_typesSearch types across specsARead-onlyIdempotentInspect
Search for types across ALL companion specs by keyword. Use this when you don't know which namespace defines a type. Returns matching types with their namespace alias.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (e.g. "identification", "temperature", "motion") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnly and idempotent behavior, and the description adds the important cross-spec search scope plus the fact that results include the namespace alias for disambiguation. It does not describe match semantics like case-sensitivity or substring matching, but this is minor for a read-only search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: the action, the trigger condition, and the return shape. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter, no output schema, and annotations covering safety, the description is sufficient: it states scope, expected output, and when to use it. Nothing is missing that would prevent a correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single query parameter is fully described in the schema, including example keywords, so the schema does the heavy lifting. The description adds little beyond calling it a keyword, which is already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('search for types') and a defined scope ('across ALL companion specs'), which clearly differentiates it from siblings like list_types or get_type_details. The immediate usage condition ('when you don't know which namespace defines a type') further pins down its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the trigger condition: use this when the namespace is unknown. It stops short of naming sibling alternatives or stating when not to use it, such as when the namespace is already known, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
- First observed
find_engineering_unit - First observed
find_reusable_block - First observed
get_dsl_reference - First observed
get_type_details - First observed
list_namespaces - First observed
list_types - First observed
opcua_model_create - First observed
opcua_model_generate - First observed
opcua_model_reverse - First observed
opcua_model_validate - First observed
resolve_dependencies - First observed
search_types
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
MCP server for the Fail Modes taxonomy — a knowledge base of AI system failure modes
AI-security knowledge as MCP: standards-mapped tools (OWASP, NIST, MITRE) for AI agents.
Trust signals for AI agents: an open agent-readiness standard and developer tool guide. Read-only.
Cross-OEM industrial machine intelligence: identity, normalization, automation, attestation.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects AI agents to OPC UA-enabled industrial systems for real-time monitoring and control of operational data. It enables users to read, write, and browse industrial device nodes through natural language interactions.MIT
- AlicenseNot gradedqualityBmaintenanceEnables LLMs to read, write, browse, search, and subscribe to live data on OPC-UA industrial automation servers, with caching, discovery index, and support for stdio or HTTP transports.5MIT
- AlicenseBqualityCmaintenanceA tool for SHACL-based assessment, comparison, and coverage analysis of digital passport data models, designed for AI-agent orchestration.10European Union Public 1.2
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI agents to traverse SysML v2 model graphs, query requirements, and perform impact analysis for model-based systems engineering. It allows agents to interact with plain-text models to automate documentation and refine system architectures.-
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool targets a distinct resource or operation: unit lookup, reusable-block lookup, DSL reference, type details, namespaces, type listing/search, and the four model operations are all clearly separated. Even the two search-like tools (find_reusable_block and search_types) have different intents and return different kinds of results, so an agent should not misselect.
Most utility tools follow a verb_first_snake_case pattern (find_*, get_*, list_*, search_*, resolve_*), but the four workflow tools use an opcua_model_* prefix (create, generate, reverse, validate). This is a blend of two systematic conventions rather than chaotic naming, but it is not fully uniform.
Twelve tools is well within the ideal range for this domain, and each tool covers a distinct aspect of the modeling workflow from discovery and dependency resolution to validation and artifact generation. No tool feels redundant, and the count is appropriate for the stated purpose.
The tool surface covers the full lifecycle: discovering namespaces/types/units/reusable blocks, resolving dependencies, authoring YAML, validating it, generating artifacts, and reverse-engineering existing NodeSet files. There are no obvious dead ends or essential missing operations for the OPC UA modeling workflow.