Skip to main content
Glama
labelixa-mcp

labelixa-mcp

Official

labelixa-mcp

Labelixa is an MCP (Model Context Protocol) server and API platform for thermal label development. It gives AI assistants and developer tools the ability to render, validate, debug, inspect and convert thermal printer labels — ZPL, EPL, TSPL and CPCL — through MCP.

There are two ways to connect:

Remote server (recommended)

This npm package

Endpoint

https://api.labelixa.com/mcp

local process over stdio

Tool set

full set: rendering, validation, debugging, conversion, barcode analysis, printer compatibility, templates, bulk jobs

core subset (table below); each tool calls the Labelixa REST API

Install

nothing to install

npx -y labelixa-mcp or npm install -g labelixa-mcp

Authentication

optional lbx_ API key

optional lbx_ API key

The live tool list of the remote server is at labelixa.com/mcp.

Remote server (no install)

Transport: Streamable HTTP, stateless JSON-RPC over POST. Anonymous use is free and rate-limited per IP; an API key uses the account's own quota. Keys: labelixa.com.

Claude Code:

claude mcp add --transport http labelixa https://api.labelixa.com/mcp

With an API key:

claude mcp add --transport http labelixa https://api.labelixa.com/mcp \
  --header "Authorization: Bearer lbx_..."

Generic MCP client configuration (Claude Desktop, Cursor and other clients that accept a url entry):

{
  "mcpServers": {
    "labelixa": {
      "url": "https://api.labelixa.com/mcp",
      "headers": {"Authorization": "Bearer lbx_..."}
    }
  }
}

Drop the headers block for anonymous use.

Related MCP server: barcode-mcp

Local server (this package)

npm install -g labelixa-mcp

Or skip installing and run it with npx straight from your MCP client config:

{
  "mcpServers": {
    "labelixa": {
      "command": "npx",
      "args": ["-y", "labelixa-mcp"],
      "env": {"LABELIXA_API_KEY": "lbx_..."}
    }
  }
}

Environment variables:

  • LABELIXA_API_KEY — optional lbx_ API key. Without it the anonymous quota applies.

  • LABELIXA_BASE_URL — optional; defaults to https://api.labelixa.com.

Requests never follow redirects, so a server cannot forward your key to another host. Numeric inputs are checked before a request is made: dpmm is 6, 8, 12 or 24, label sides are finite, above 0 and at most 15 inches, and DPI values are 152, 203, 300 or 600.

Tools in this package

Tool

What it does

zpl_preview

Renders ZPL to a PNG image for inspection. Server-side render — not a guarantee of how a specific physical printer will output the label.

zpl_validate

Lints ZPL and returns the structured diagnostics report (unknown commands, parameter ranges, layout overflow) as JSON. Pass the real label size — checks depend on it.

barcode_generate

Generates a standalone barcode (SVG or PNG): code128, code39, ean13, upca, upce, itf14, msi, qrcode, datamatrix, pdf417.

language_detect

Detects the printer language of raw label code (ZPL/EPL/TSPL/CPCL). Heuristic — returns a confidence tier, not a probability.

epl_validate

Lints EPL/EPL2 code; positioned findings with severity, as JSON.

tspl_validate

Lints TSPL/TSPL2 code; positioned findings with severity, as JSON.

cpcl_validate

Lints CPCL code; positioned findings with severity, as JSON.

zpl_compatibility

Compatibility RISK analysis of ZPL against a printer model. Not an emulator — reports language posture with evidence level; never says "it works".

zpl_command_help

Looks up one ZPL command in the maintained catalog: name, syntax, parameters and whether the preview engine actually renders it — printer-side commands are marked as not rendered. Optional locale (en default, tr, de) translates the name and descriptions only; command codes, syntax strings, examples and parameter names are protocol and never change.

convert_zpl_dpi

Rescales ZPL coordinates between printer resolutions (203/300/600 dpi). Embedded ^GF/~DG bitmaps are NOT rescaled — a warnings block precedes the output when present.

explain_zpl

Full sectioned health report (syntax, size/DPI, orientation, barcodes, fonts, memory) with an honest score — sections it cannot assess say "not assessed" instead of counting.

EPL, TSPL and CPCL previews, label templates, bulk generation, image-to-ZPL conversion, SBPL / DPL / IPL to ZPL conversion (printer_language_to_zpl) and barcode reading from photos are on the remote server only.

Directory listings

  • Official MCP Registry: com.labelixa/zpl (remote server + this npm package).

  • Smithery: labelixa/zpl. Smithery routes calls through its own gateway; the canonical endpoint is https://api.labelixa.com/mcp.

Honesty notes

  • Errors carry the server's own message verbatim; quota exhaustion is reported with the server's Retry-After rather than a made-up delay.

  • zpl_preview is a render, not a print: physical output depends on the printer, media and darkness settings.

Source of this package: github.com/Labelixa/labelixa-mcp. Docs: labelixa.com/docs/api. License: MIT.

Available Tools

11 tools
barcode_generateAInspect

Generate a standalone barcode (SVG text or PNG image). Supported types include code128, code39, ean13, upca, upce, itf14, msi, qrcode, datamatrix, pdf417.

NameRequiredDescriptionDefault
dataYesData to encode
typeYesBarcode type, e.g. code128
formatNosvg

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does add real behavioral signal with "standalone" plus "SVG text or PNG image," implying the artifact is returned inline rather than written to disk or embedded in a ZPL job. It says nothing about errors for invalid data/type combinations, size limits, or encoding constraints, which matter because barcode types have strict data-length rules.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and output forms, with the supported-type list appended as scannable detail. Nothing is redundant and nothing wastes space.

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?

For a three-parameter tool with no annotations and no output schema, the definition should say more about what comes back — an SVG string versus base64/binary PNG — and about failure modes. As written it is adequate to call correctly but leaves the return shape to inference.

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 schema covers 67% of parameters and leaves the `format` enum undocumented; the description compensates by explaining that output is "SVG text or PNG image," giving each enum value concrete meaning. The full list of supported `type` values likewise extends beyond the schema's terse "Barcode type, e.g. code128." Only per-type data constraints remain unaddressed.

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

Purpose4/5

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

States a specific verb and resource ("Generate a standalone barcode") and enumerates the supported symbologies, so an agent knows exactly what it produces. It does not explicitly distinguish itself from the ZPL-validation siblings, but those are clearly a different operation, so confusion risk is low.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is the tool for rendering a barcode when a label preview/validation sibling is not what you want. There is no explicit "use this when..." statement nor any named alternative or precondition.

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

convert_zpl_dpiAInspect

Rescale ZPL coordinates between printer resolutions (203/300/600 dpi). Embedded ^GF/~DG bitmap data is NOT rescaled — when present, a Warnings block precedes the output instead of silently passing.

NameRequiredDescriptionDefault
zplYesRaw ZPL code to convert
sourceNoSource resolution in dpi (152, 203, 300 or 600)
targetNoTarget resolution in dpi (152, 203, 300 or 600)

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it does disclose the most important trait: embedded ^GF/~DG bitmaps are NOT rescaled and a Warnings block is emitted rather than silently passing. That is genuine, non-obvious behavioral context. It stops short of covering error behavior on invalid ZPL or the output shape.

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

Conciseness5/5

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

Two sentences, no waste, with the core operation front-loaded and the caveat immediately after. Every clause carries 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?

For a 3-param transform tool with no output schema, the description tells the agent what is transformed, what is left alone, and that a Warnings block may precede output. Error/failure behavior and the return type are the only notable gaps.

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 coverage is 100%, so zpl/source/target and their defaults are already documented. The description adds the resolution set (203/300/600) but actually omits 152, which the schema lists, so it adds little and is slightly narrower than the schema.

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

Purpose4/5

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

States a specific verb and resource (rescale ZPL coordinates) plus the dimension being scaled (printer resolution), which no sibling tool covers. It never names an alternative, but the purpose is unmistakable and non-overlapping with zpl_validate/zpl_preview.

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

Usage Guidelines3/5

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

Usage is implied by the purpose — you call it when moving a label between 203/300/600 dpi printers. There is no explicit when-to-use/when-not guidance, no instruction to validate with zpl_validate first, and no note about what happens if source equals target or the source is mis-declared.

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

cpcl_validateAInspect

Lint/validate CPCL label code and return the structured diagnostics report (findings with positions and severity) as JSON.

NameRequiredDescriptionDefault
cpclYesRaw CPCL code

TDQS

A3.9/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it does disclose the important behavioral trait: the return is a structured diagnostics report with positions and severity, in JSON. 'Lint/validate' implies a non-mutating check with no side effects on the input, though the description does not say so explicitly or cover limits on input size.

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

Conciseness5/5

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

A single sentence with the action front-loaded, followed immediately by what is returned. No filler, no restatement of the tool name.

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 (one required string parameter), and since no output schema exists, the description usefully compensates by describing the return shape (findings with positions and severity, JSON). An agent has everything needed to call it and interpret the result.

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?

There is a single parameter at 100% schema description coverage ("Raw CPCL code"), so the schema already covers it and baseline 3 applies. The description's phrase "CPCL label code" adds no format, encoding, or size guidance beyond the schema.

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 a specific verb pair ("Lint/validate") and resource ("CPCL label code"), which cleanly separates it from the zpl_validate, epl_validate, and tspl_validate siblings by language. It stops short of explicitly routing callers who don't yet know the label language (e.g., toward language_detect), so it falls just 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?

Usage is only implied: the tool is for checking CPCL code. There is no statement of when to prefer it over siblings, no mention of what to do with the diagnostics (e.g., fix-and-revalidate), and no exclusion or prerequisite guidance.

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

epl_validateAInspect

Lint/validate EPL/EPL2 label code and return the structured diagnostics report (findings with positions and severity) as JSON.

NameRequiredDescriptionDefault
eplYesRaw EPL/EPL2 code

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does useful work by disclosing the return shape (findings with positions and severity, as JSON) and implying a non-mutating check, but it says nothing about what happens with clean code, whether diagnostics above a severity are surfaced as errors, or any size limits.

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

Conciseness5/5

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

A single front-loaded sentence with no wasted words; the verb, resource, and return contract all land in one pass.

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 one-parameter, non-mutating lint tool with no output schema, the description covers purpose and return shape adequately. The only real gap is edge-case behavior for valid input and error signaling, which is minor at this complexity.

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?

One required parameter at 100% schema coverage, so the schema already documents it. The description adds only a mild clarification that both EPL and EPL2 are accepted; no format examples or constraints beyond the schema's minLength 1.

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

Purpose4/5

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

States a specific verb (lint/validate) plus the resource (EPL/EPL2 label code) and the result shape (structured diagnostics report). The language naming implicitly separates it from zpl_validate, tspl_validate and cpcl_validate, but no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is only implied by the EPL/EPL2 scope in the description; there is no explicit 'use this when' or 'use zpl_validate instead' routing. An agent must infer the choice from the language name alone.

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

explain_zplAInspect

Human-readable health REPORT for a finished ZPL label with a 0-100 score, sectioned (syntax, size/DPI, orientation, barcodes, fonts, memory): only assessable sections count, the rest say 'not assessed'. Use it to review or explain a label to a person; for a quick pass/fail check while editing use zpl_validate. Pass the real label size — findings depend on it.

NameRequiredDescriptionDefault
zplYesRaw ZPL code
dpmmNoPrinter density in dots per mm (6, 8, 12 or 24)
modelNoOptional printer model as manufacturer/model (e.g. zebra/zd421) to add a model-compatibility section
width_inNoLabel width in inches (at most 15)
height_inNoLabel height in inches (at most 15)

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden and does well by explaining the report structure, scoring, and the 'not assessed' behavior for non-assessable sections. It implies a read-only review operation but does not explicitly state side effects, permissions, or error 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 front-loaded with the report purpose and scoring, then routes between this tool and zpl_validate, then adds the key size caveat. Every sentence contributes useful information without waste.

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?

There is no output schema, so the description appropriately explains the return format as a sectioned 0-100 health report and notes that only assessable sections are counted. Given full schema coverage and the sibling alternative named, an agent has enough context to call this tool correctly.

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 coverage is 100%, so the schema already documents all five parameters. The description adds meaningful semantic emphasis by warning that the real label size must be passed because findings depend on it.

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 states a specific output, a human-readable health report for a finished ZPL label, including the 0-100 score and the sections it covers. It clearly distinguishes this from zpl_validate by positioning zpl_validate for quick pass/fail checks while editing.

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?

It explicitly says to use this tool to review or explain a label to a person and names zpl_validate as the alternative for quick pass/fail validation. It also tells the caller to pass the real label size because findings depend on it.

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

language_detectAInspect

Detect which printer language raw label code is written in (ZPL, EPL, TSPL or CPCL). Heuristic: returns the language plus a confidence TIER (high/medium/low) and signal codes — not a probability.

NameRequiredDescriptionDefault
codeYesRaw label code to classify

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningful work: it discloses the method is a 'Heuristic' and explicitly warns that the result is a confidence TIER plus signal codes, 'not a probability' — setting correct expectations about reliability. It stops short of stating determinism, whether empty/garbage input errors, or performance characteristics.

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

Conciseness5/5

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

Two dense sentences with zero filler: the purpose and the candidate set come first, the return-shape caveat second. Every clause carries information the agent needs.

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 one-parameter, no-annotation tool with no output schema, the description covers the essential ground by explaining the return shape (language + tier + signal codes) and the heuristic nature. Only the routing guidance to the sibling validators is missing.

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?

One parameter with 100% schema description coverage ('Raw label code to classify'), so the schema already documents it fully. The description adds nothing about input format, size limits, or how mixed-language code is handled, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Detect') and resource ('which printer language raw label code is written in') and enumerates the candidate languages (ZPL, EPL, TSPL, CPCL), so the agent knows exactly what comes back. It never names the sibling validators (zpl_validate, epl_validate, etc.) or positions itself relative to them, so sibling differentiation is only inferable.

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 is purely definitional: no statement of when to call this versus the four *_validate tools, no prerequisites, and no guidance on what to do with a 'low' tier result. An agent must infer the triage role from the sibling names alone.

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

tspl_validateAInspect

Lint/validate TSPL/TSPL2 label code and return the structured diagnostics report (findings with positions and severity) as JSON.

NameRequiredDescriptionDefault
tsplYesRaw TSPL/TSPL2 code

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does disclose the return shape (findings with positions and severity, JSON), which usefully signals a non-destructive lint operation, but it says nothing about whether any code is modified, error vs warning handling, or limits on input size.

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, front-loaded with the action and ending with the return contract. Nothing redundant or padded.

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 one-parameter lint tool with no annotations and no output schema, the description covers what it does and what comes back well enough to invoke it correctly. Minor gaps remain around whether it is purely read-only and how severe findings are represented.

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?

Single parameter with 100% schema description coverage ('Raw TSPL/TSPL2 code'), so the schema already does the work. The description only reinforces that the input is TSPL/TSPL2 source; it adds no format, encoding, or size guidance beyond the schema.

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

Purpose4/5

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

States a specific verb (lint/validate) and resource (TSPL/TSPL2 label code), plus what it returns (structured diagnostics with positions and severity). The language naming implicitly separates it from epl_validate, cpcl_validate and zpl_validate, but it never explicitly says 'use the other validator for other languages'.

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

Usage Guidelines3/5

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

Usage is implied by the verb 'validate' — an agent can infer it is called before printing or after generating TSPL. There is no explicit when-to-use, no preconditions, and no mention of the sibling validators as alternatives for other languages.

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

zpl_command_helpAInspect

Look up one ZPL command in the maintained catalog: name, syntax, parameters (types, ranges, defaults) and whether the preview engine actually renders it — printer-side commands are honestly marked as not rendered.

NameRequiredDescriptionDefault
localeNoLanguage for the name and descriptions (default English). Command codes, syntax strings, examples and parameter names are protocol and never change.
commandYesCommand code with or without prefix, e.g. ^PO, BC, ~DG

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the full load. It does disclose two real behavioral facts: the catalog is curated/maintained (so results are authoritative) and the tool reports whether the preview engine actually renders a command, flagging printer-side commands as not rendered. It says nothing about not-found behavior, completeness guarantees, or response shape beyond the field list.

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

Conciseness5/5

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

A single sentence, front-loaded with the action and resource, that packs the return contents and one important caveat without a wasted clause. Nothing is repeated from the name or schema.

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

Completeness4/5

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

With no output schema, the description usefully substitutes by naming the returned fields (name, syntax, parameters with types/ranges/defaults, render status), which is exactly what an agent needs to interpret results. The gaps are minor: unknown-command behavior and whether lookups are exact-match only are unstated.

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 100% and both parameters are documented in the schema, including the locale enum and the example command formats, so the baseline of 3 applies. The description adds no meaning beyond that — notably it never mentions the locale parameter or the accepted command-prefix forms.

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?

Names a specific verb and resource ("look up one ZPL command in the maintained catalog") and enumerates what the result contains: name, syntax, parameter types/ranges/defaults, and render support. That is far more informative than a tautology. It stops short of explicitly distinguishing itself from the closest sibling, explain_zpl, which an agent would have to reason about on its own.

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

Usage Guidelines3/5

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

Usage is implied by "look up one ZPL command" — a reference lookup for a single command — but the description never says when to choose it over explain_zpl, zpl_validate, or zpl_compatibility, nor when not to. A reader can infer the catalog-lookup case but gets no routing guidance.

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

zpl_compatibilityAInspect

Compatibility RISK analysis of ZPL code against a specific printer model, given as manufacturer/model (e.g. 'zebra/zd421'). NOT an emulator and never says 'it works': reports the model's language posture with evidence level, size-rule findings and the scope of our preview.

NameRequiredDescriptionDefault
zplYesRaw ZPL code
modelYesPrinter model as manufacturer/model, e.g. zebra/zd421

TDQS

A4.1/5.0
Behavior4/5

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

No annotations exist, so the description carries the burden and does well: it discloses the epistemic posture ('never says it works'), the evidence-level reporting, the size-rule findings, and the preview scope. It doesn't cover determinism, cost, or whether the analysis is static vs simulated beyond the emulator disclaimer, leaving a small gap.

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?

Purpose is front-loaded in the first clause with the model-format hint immediately after, and the negative framing follows as a guardrail. Dense but essentially waste-free; slightly overpacked into long clauses.

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

Completeness4/5

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

With two fully documented params, no output schema, and no annotations, an agent needs to know what comes back and what the result does not claim — the description covers both (language posture with evidence level, size-rule findings, preview scope, no 'it works' verdict). Minor gaps remain around output shape and whether unsupported models produce an error.

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 coverage is 100% and both parameters are already documented, including the manufacturer/model example. The description repeats the 'manufacturer/model (e.g. zebra/zd421)' format rather than adding new semantics, so baseline 3 applies.

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?

States a specific verb+resource ('Compatibility RISK analysis of ZPL code against a specific printer model') with the exact input format expected. It also pre-emptively separates itself from the emulation/preview siblings by saying 'NOT an emulator' and referencing 'the scope of our preview', so an agent can distinguish it from zpl_preview and zpl_validate without opening a schema.

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?

Clear about the context of use (risk assessment for a given model, not a pass/fail guarantee) and explicitly excludes the emulator interpretation, which is the most likely misread against zpl_preview. It stops short of naming siblings like zpl_validate or stating when to prefer those, so it isn't full routing guidance.

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

zpl_previewAInspect

Render ZPL label code to a PNG image via the Labelixa API. This is a SERVER-SIDE render for inspection — it is not a guarantee of how a specific physical printer will output the label.

NameRequiredDescriptionDefault
zplYesRaw ZPL code (^XA ... ^XZ)
dpmmNoPrinter density in dots per mm (6, 8, 12 or 24)
indexNoWhich label to render when the stream contains several
width_inNoLabel width in inches (at most 15)
height_inNoLabel height in inches (at most 15)

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and adds a genuinely valuable behavioral caveat: this is server-side rendering and does not guarantee physical printer output. It does not cover auth requirements, rate limits, or how the resulting PNG is delivered, which keeps it below a 5.

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

Conciseness5/5

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

Two tight sentences with the core action front-loaded and the caveat immediately following. Nothing is wasted or redundant.

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 names the output format (PNG), which is important since no output schema exists. It leaves open how the image is returned (URL vs. binary/base64) and whether multi-label streams yield multiple images, a minor but real gap.

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 coverage is 100% and every parameter (zpl, dpmm, index, width_in, height_in) is documented inline, so the baseline of 3 applies. The description adds no syntax or semantic detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ("Render ZPL label code to a PNG image") and names the underlying service, so the agent knows exactly what it produces. It does not explicitly contrast with siblings like zpl_validate, but the render-vs-validate distinction is inferable from the verb.

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 phrase "for inspection" implies a visualization use case, but there is no explicit when-to-use guidance or routing to alternatives such as zpl_validate (to check syntax) or zpl_compatibility. The agent must infer the workflow position.

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

zpl_validateAInspect

Pass/fail lint for ZPL: machine-readable diagnostics with line/column, code and severity (unknown commands, parameter range errors, layout overflow). Fast; run it before zpl_preview whenever you generate or edit ZPL. For a human-readable report with a score use explain_zpl instead. Pass the real label size — checks depend on it.

NameRequiredDescriptionDefault
zplYesRaw ZPL code
dpmmNoPrinter density in dots per mm (6, 8, 12 or 24)
width_inNoLabel width in inches (at most 15)
height_inNoLabel height in inches (at most 15)

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses machine-readable diagnostics, line/column, code, severity, the error categories checked, speed, and the dependency on real label dimensions. It does not explicitly say the tool is read-only or describe failure behavior, but 'lint' and 'pass/fail' make the safety profile clear enough for a validator.

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 front-loaded and compact. Each sentence adds a distinct piece of value: purpose and outputs, usage sequencing, sibling alternative, and parameter importance.

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?

For a four-parameter validator with no output schema and no annotations, the definition supplies the key missing context: diagnostic structure, failure categories, when to call it, when not to call it, and the importance of correct label dimensions. Nothing essential for correct invocation is missing.

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 100%, so the baseline is 3. The description adds meaningful rationale beyond the schema: 'Pass the real label size — checks depend on it,' explaining why the width/height/density parameters matter rather than merely restating their defaults.

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 states a specific verb and resource: 'Pass/fail lint for ZPL.' It also names the diagnostic categories and distinguishes the tool from zpl_preview and explain_zpl, so an agent can select it without opening 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 Guidelines5/5

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

It gives explicit sequencing guidance ('run it before zpl_preview whenever you generate or edit ZPL') and an explicit alternative ('For a human-readable report with a score use explain_zpl instead'). This is a strong routing definition.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.5.2
    • Changedbarcode_generate1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedconvert_zpl_dpi5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / source / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / source / minimum
        Added value: +-9007199254740991
      • addedInput schema / properties / target / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / target / minimum
        Added value: +-9007199254740991
    • Changedcpcl_validate1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedepl_validate1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedexplain_zpl3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / dpmm / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / dpmm / minimum
        Added value: +-9007199254740991
    • Changedlanguage_detect1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedtspl_validate1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedzpl_command_help1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedzpl_compatibility1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedzpl_preview3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / dpmm / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / dpmm / minimum
        Added value: +-9007199254740991
    • Changedzpl_validate3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / dpmm / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / dpmm / minimum
        Added value: +-9007199254740991
  2. 3 tool updatesv0.4.2
    • Changedexplain_zpl6 fields changed
      • removedInput schema / properties / dpmm / maximum
        Removed value: -24
      • removedInput schema / properties / dpmm / minimum
        Removed value: -6
      • changedInput schema / properties / height_in / description
        Previous value: -"Label height in inches"New value: +"Label height in inches (at most 15)"
      • addedInput schema / properties / height_in / maximum
        Added value: +15
      • changedInput schema / properties / width_in / description
        Previous value: -"Label width in inches"New value: +"Label width in inches (at most 15)"
      • addedInput schema / properties / width_in / maximum
        Added value: +15
    • Changedzpl_preview7 fields changed
      • removedInput schema / properties / dpmm / maximum
        Removed value: -24
      • removedInput schema / properties / dpmm / minimum
        Removed value: -6
      • changedInput schema / properties / height_in / description
        Previous value: -"Label height in inches"New value: +"Label height in inches (at most 15)"
      • addedInput schema / properties / height_in / maximum
        Added value: +15
      • addedInput schema / properties / index / maximum
        Added value: +10000
      • changedInput schema / properties / width_in / description
        Previous value: -"Label width in inches"New value: +"Label width in inches (at most 15)"
      • addedInput schema / properties / width_in / maximum
        Added value: +15
    • Changedzpl_validate6 fields changed
      • removedInput schema / properties / dpmm / maximum
        Removed value: -24
      • removedInput schema / properties / dpmm / minimum
        Removed value: -6
      • changedInput schema / properties / height_in / description
        Previous value: -"Label height in inches"New value: +"Label height in inches (at most 15)"
      • addedInput schema / properties / height_in / maximum
        Added value: +15
      • changedInput schema / properties / width_in / description
        Previous value: -"Label width in inches"New value: +"Label width in inches (at most 15)"
      • addedInput schema / properties / width_in / maximum
        Added value: +15
  3. 1 tool updatev0.1.1
    • Changedzpl_command_help1 field changed
      • addedInput schema / properties / locale
        Added value: +{
        +  "description": "Language for the name and descriptions (default English). Command codes, syntax strings, examples and parameter names are protocol and never change.",
        +  "enum": [
        +    "en",
        +    "tr",
        +    "de"
        +  ],
        +  "type": "string"
        +}
  4. 11 tool updatesv0.1.0
    • First observedbarcode_generate
    • First observedconvert_zpl_dpi
    • First observedcpcl_validate
    • First observedepl_validate
    • First observedexplain_zpl
    • First observedlanguage_detect
    • First observedtspl_validate
    • First observedzpl_command_help
    • First observedzpl_compatibility
    • First observedzpl_preview
    • First observedzpl_validate

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation4/5

Most tools target clearly distinct actions/resources: preview, validate, explain, compatibility, command help, DPI conversion, barcode generation, and language detection. The main overlap is between zpl_validate and explain_zpl, but descriptions explicitly distinguish a fast pass/fail lint from a human-readable scored report. The parallel epl/tspl/cpcl validators are unambiguous because of their language prefixes.

Naming Consistency3/5

The vocabulary is readable and mostly snake_case, but ordering conventions vary: zpl_validate (prefix_action), convert_zpl_dpi (verb_object_detail), language_detect and barcode_generate (noun_verb), and zpl_command_help (prefix_noun_noun). The language-prefixed validators are consistent with each other, but the set as a whole mixes patterns.

Tool Count5/5

Eleven tools is well-scoped for a label-code validation/rendering utility. Each tool covers a distinct operation: rendering, validation, explanation, compatibility, lookup, conversion, detection, and barcode generation. No tool appears redundant or gratuitous.

Completeness4/5

ZPL workflows are well covered end-to-end: preview, lint, explain, compatibility, command lookup, DPI conversion, and barcode generation. EPL, TSPL, and CPCL are only supported for validation, with no preview/explain equivalents, and there is no cross-language conversion or label-generation tool. These are notable but workable gaps for the stated purpose.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to decode and render barcodes/QR codes and validate GTINs via the Model Context Protocol, with both hosted and self-hosted deployment options.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI clients to prepare and preview labels, then safely submit physical print jobs to an Xprinter XP-330B through local stdio or authenticated remote access, with status, cancellation, and retry receipts.
    MIT