dxpert UNS Tools: Sparkplug B & Unified Namespace Linter for IIoT
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| lint_sparkplug_topicA | Validate one or more MQTT topic strings against the Sparkplug B topic grammar (Sparkplug 3.0). Free, no API key, no account: the grammar runs locally inside this server and nothing is sent anywhere. Call this whenever a topic that is meant to be Sparkplug appears in a config, a broker trace, a code review, or a user question -- it is faster and far more reliable than reasoning about the grammar from memory. It checks the spBv1.0 namespace level, the eight message types (NBIRTH/NDEATH/DBIRTH/DDEATH/NDATA/DDATA/NCMD/DCMD) plus STATE, node-vs-device level count, the legacy Sparkplug 2.2 STATE form, publish-side MQTT wildcards, empty levels, and identifier characters that break downstream consumers. It returns ordered findings (fail / warn / pass / info) with the parsed topic parts, not a yes/no. It does NOT connect to a broker, decode payloads, or check whether the device actually exists. |
| check_uns_namespaceA | Check a set of Unified Namespace (UNS) topic paths for the convention problems that quietly rot a namespace: inconsistent hierarchy depth, mixed casing styles across segments, whitespace in segments, case-collisions between siblings that read as one node but are two, duplicate paths, empty levels, and stray MQTT wildcards. Free, no API key, no account: the checks run locally inside this server and nothing is sent anywhere. Call this when reviewing a proposed namespace, an ISA-95-style hierarchy, a broker topic dump, or a tag export -- before anyone builds on top of it, because renaming a namespace later is the expensive part. It returns a summary line plus per-issue findings (fail / warn / pass / info). It judges naming consistency only: it does NOT know your plant, does not validate Sparkplug grammar (use lint_sparkplug_topic for that), and does not design a namespace for you. |
| run_readiness_diagnosticA | Run the public dxpert.ai industrial AI-readiness diagnostic: a 16-answer self-reported intake in, a scored report out (ten axes 0-5, a maturity stage, the foundation gaps blocking the stated AI ambition, and a confidence value). Free and requires no API key or account, but unlike the two validators this one DOES call the dxpert.ai API over the network, so it needs connectivity and is rate limited. Call this when someone asks how ready a plant or site is for AI/analytics, what is blocking them, or where to start -- and you can supply honest answers to the intake fields. Ask the user for the values you do not have rather than guessing them; the verdict is only as good as the intake. The response carries a "scope" field which this tool passes through verbatim: it is a preliminary self-reported screening, not an audit, and should be reported to the user as such. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
The three tools target distinct capabilities, and the descriptions explicitly cross-reference each other (check_uns_namespace notes it does not validate Sparkplug grammar and points to lint_sparkplug_topic), which strongly reduces misselection. However, lint_sparkplug_topic and check_uns_namespace both operate on MQTT topic strings and could be confused at a glance by an agent skimming names.
All three names follow a consistent snake_case verb_noun pattern: lint_sparkplug_topic, check_uns_namespace, run_readiness_diagnostic. The verbs differ (lint/check/run) but each reflects a genuinely different action, and no camelCase or stylistic mixing appears.
Three tools is at the low edge of the well-scoped range but each represents a substantial, distinct capability rather than a thin wrapper. The set is minimal but defensible; the readiness diagnostic sits somewhat apart in domain from the two validators, making the set feel slightly narrow for a general 'tools' server.
Coverage is diagnostic-only: you can validate Sparkplug topics, audit UNS naming, and score readiness, but there is no way to normalize/fix namespaces, generate compliant topics, or decode payloads (explicitly excluded). For a toolkit scoped to UNS/Sparkplug diagnostics this is workable, but notable gaps remain around remediation and payload-level checks.