{
  "data": {
    "tool": {
      "category": "",
      "endpoint": "https://api.labelixa.com/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/labelixa-zpl.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/labelixa-zpl.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/labelixa-zpl.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 4935,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 6
          },
          "findings": [
            {
              "rule": "TC21",
              "severity": "warn",
              "tool": "epl_preview",
              "message": "described almost the same as tspl_preview (86% of the same words)",
              "fix": "Say in each description when to use it instead of the other."
            },
            {
              "rule": "TC21",
              "severity": "warn",
              "tool": "epl_preview",
              "message": "described almost the same as cpcl_preview (89% of the same words)",
              "fix": "Say in each description when to use it instead of the other."
            },
            {
              "rule": "TC21",
              "severity": "warn",
              "tool": "epl_validate",
              "message": "described almost the same as tspl_validate (88% of the same words)",
              "fix": "Say in each description when to use it instead of the other."
            },
            {
              "rule": "TC21",
              "severity": "warn",
              "tool": "epl_validate",
              "message": "described almost the same as cpcl_validate (91% of the same words)",
              "fix": "Say in each description when to use it instead of the other."
            },
            {
              "rule": "TC21",
              "severity": "warn",
              "tool": "tspl_preview",
              "message": "described almost the same as cpcl_preview (92% of the same words)",
              "fix": "Say in each description when to use it instead of the other."
            },
            {
              "rule": "TC21",
              "severity": "warn",
              "tool": "tspl_validate",
              "message": "described almost the same as cpcl_validate (91% of the same words)",
              "fix": "Say in each description when to use it instead of the other."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "16 of 21 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:23:15Z",
        "count": 21,
        "note": "answered without the initialize handshake",
        "schemaTokens": 4935,
        "status": "ok",
        "tools": [
          {
            "name": "zpl_preview",
            "title": "Render ZPL label",
            "description": "Render ZPL label code and return the label as a PNG image. Use this to SEE what ZPL output looks like — LLMs can write ZPL but cannot otherwise verify the visual result. One call renders one label (use `index` to pick a label from a multi-label stream). The result also carries an 'Open this label in the Labelixa editor' link the user can click to edit, save or share the label.",
            "inputSchema": {
              "properties": {
                "dpmm": {
                  "default": 8,
                  "description": "Printer density (8 = 203 dpi)",
                  "enum": [
                    6,
                    8,
                    12,
                    24
                  ],
                  "type": "integer"
                },
                "height_in": {
                  "default": 6,
                  "description": "Label height, inches",
                  "type": "number"
                },
                "index": {
                  "default": 0,
                  "description": "Label index in the stream",
                  "type": "integer"
                },
                "width_in": {
                  "default": 4,
                  "description": "Label width, inches",
                  "type": "number"
                },
                "zpl": {
                  "description": "ZPL source (^XA...^XZ)",
                  "type": "string"
                }
              },
              "required": [
                "zpl"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Render ZPL label"
            }
          },
          {
            "name": "zpl_validate",
            "title": "Validate ZPL",
            "description": "Lint ZPL code and return structured diagnostics: unknown commands, missing ^FS, out-of-range parameters, fields outside the label boundary. Run this before zpl_preview when generating ZPL.",
            "inputSchema": {
              "properties": {
                "dpmm": {
                  "default": 8,
                  "description": "Printer density (8 = 203 dpi). The boundary check measures against it — pass the real value.",
                  "type": "integer"
                },
                "height_in": {
                  "default": 6,
                  "description": "Label height in inches. Same as width_in: the boundary check depends on it.",
                  "type": "number"
                },
                "width_in": {
                  "default": 4,
                  "description": "Label width in inches. Fields outside it are reported, so a wrong size makes that finding wrong.",
                  "type": "number"
                },
                "zpl": {
                  "description": "ZPL source",
                  "type": "string"
                }
              },
              "required": [
                "zpl"
              ],
              "type": "object"
            },
            "outputSchema": {
              "properties": {
                "alanlar": {
                  "items": {
                    "properties": {
                      "line": {
                        "type": "integer"
                      },
                      "x": {
                        "type": "integer"
                      },
                      "y": {
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "diagnostics": {
                  "items": {
                    "properties": {
                      "code": {
                        "description": "Stable diagnostic code, e.g. ZPL0002",
                        "type": "string"
                      },
                      "col": {
                        "type": "integer"
                      },
                      "end_col": {
                        "type": "integer"
                      },
                      "end_line": {
                        "type": "integer"
                      },
                      "line": {
                        "type": "integer"
                      },
                      "mesaj": {
                        "description": "Human-readable message in the requested language",
                        "type": "string"
                      },
                      "message_key": {
                        "description": "i18n key for the message",
                        "type": "string"
                      },
                      "severity": {
                        "enum": [
                          "error",
                          "warning",
                          "info"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "severity",
                      "line",
                      "col"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "ozet": {
                  "properties": {
                    "error": {
                      "type": "integer"
                    },
                    "info": {
                      "type": "integer"
                    },
                    "toplam": {
                      "type": "integer"
                    },
                    "warning": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "toplam",
                    "error",
                    "warning",
                    "info"
                  ],
                  "type": "object"
                },
                "rfid": {
                  "items": {
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "diagnostics",
                "ozet"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Validate ZPL"
            }
          },
          {
            "name": "zpl_command_help",
            "title": "ZPL command help",
            "description": "Explain a single ZPL command: syntax, parameters with types/ranges/options, a fragment example and whether the Labelixa renderer draws it. Data comes from the same catalog that powers the public command reference pages.",
            "inputSchema": {
              "properties": {
                "command": {
                  "description": "ZPL command code, e.g. FO, ^BC, ~DG",
                  "type": "string"
                },
                "locale": {
                  "default": "en",
                  "description": "Language for the human-readable fields (name and descriptions). Command codes, syntax strings, examples and parameter names never change.",
                  "enum": [
                    "en",
                    "tr",
                    "de"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "command"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "ZPL command help"
            }
          },
          {
            "name": "barcode_png",
            "title": "Generate barcode PNG",
            "description": "Generate a single barcode as a PNG image (Code 128, QR, DataMatrix, EAN-13, UPC-A, PDF417 and more). For a full label with text and layout, write ZPL and use zpl_preview instead.",
            "inputSchema": {
              "properties": {
                "data": {
                  "description": "Data to encode",
                  "type": "string"
                },
                "type": {
                  "default": "code128",
                  "description": "Symbology (code128, qr, datamatrix, ean13, upca, pdf417...)",
                  "type": "string"
                }
              },
              "required": [
                "data"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Generate barcode PNG"
            }
          },
          {
            "name": "language_detect",
            "title": "Detect printer language",
            "description": "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.",
            "inputSchema": {
              "properties": {
                "code": {
                  "description": "Raw label code to classify",
                  "type": "string"
                }
              },
              "required": [
                "code"
              ],
              "type": "object"
            },
            "outputSchema": {
              "properties": {
                "dil": {
                  "description": "Detected printer language",
                  "type": "string"
                },
                "guven": {
                  "description": "Confidence level",
                  "type": "string"
                },
                "kanitlar": {
                  "items": {
                    "properties": {
                      "kod": {
                        "type": "string"
                      },
                      "satir": {
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "karma": {
                  "description": "True when the input mixes languages",
                  "type": "boolean"
                },
                "puanlar": {
                  "additionalProperties": {
                    "type": "integer"
                  },
                  "description": "Per-language score",
                  "type": "object"
                }
              },
              "required": [
                "dil",
                "guven",
                "puanlar"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Detect printer language"
            }
          },
          {
            "name": "epl_validate",
            "title": "Validate EPL",
            "description": "Lint EPL/EPL2 label code and return positioned findings with severity as JSON. Checks the command set Labelixa implements from the EPL2 manual — a clean result is not a guarantee that a specific printer accepts the job. Run this before epl_preview; if you are not sure which language the code is, call language_detect first.",
            "inputSchema": {
              "properties": {
                "epl": {
                  "description": "Raw EPL/EPL2 code",
                  "type": "string"
                }
              },
              "required": [
                "epl"
              ],
              "type": "object"
            },
            "outputSchema": {
              "properties": {
                "diagnostics": {
                  "items": {
                    "properties": {
                      "code": {
                        "description": "Stable diagnostic code, e.g. ZPL0002",
                        "type": "string"
                      },
                      "col": {
                        "type": "integer"
                      },
                      "end_col": {
                        "type": "integer"
                      },
                      "end_line": {
                        "type": "integer"
                      },
                      "line": {
                        "type": "integer"
                      },
                      "mesaj": {
                        "description": "Human-readable message in the requested language",
                        "type": "string"
                      },
                      "message_key": {
                        "description": "i18n key for the message",
                        "type": "string"
                      },
                      "severity": {
                        "enum": [
                          "error",
                          "warning",
                          "info"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "severity",
                      "line",
                      "col"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "ozet": {
                  "properties": {
                    "error": {
                      "type": "integer"
                    },
                    "info": {
                      "type": "integer"
                    },
                    "toplam": {
                      "type": "integer"
                    },
                    "warning": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "toplam",
                    "error",
                    "warning",
                    "info"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "diagnostics",
                "ozet"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Validate EPL"
            }
          },
          {
            "name": "tspl_validate",
            "title": "Validate TSPL",
            "description": "Lint TSPL/TSPL2 label code and return positioned findings with severity as JSON. Checks the command set Labelixa implements from the TSPL2 manual — a clean result is not a guarantee that a specific printer accepts the job. Run this before tspl_preview; if you are not sure which language the code is, call language_detect first.",
            "inputSchema": {
              "properties": {
                "tspl": {
                  "description": "Raw TSPL/TSPL2 code",
                  "type": "string"
                }
              },
              "required": [
                "tspl"
              ],
              "type": "object"
            },
            "outputSchema": {
              "properties": {
                "diagnostics": {
                  "items": {
                    "properties": {
                      "code": {
                        "description": "Stable diagnostic code, e.g. ZPL0002",
                        "type": "string"
                      },
                      "col": {
                        "type": "integer"
                      },
                      "end_col": {
                        "type": "integer"
                      },
                      "end_line": {
                        "type": "integer"
                      },
                      "line": {
                        "type": "integer"
                      },
                      "mesaj": {
                        "description": "Human-readable message in the requested language",
                        "type": "string"
                      },
                      "message_key": {
                        "description": "i18n key for the message",
                        "type": "string"
                      },
                      "severity": {
                        "enum": [
                          "error",
                          "warning",
                          "info"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "severity",
                      "line",
                      "col"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "ozet": {
                  "properties": {
                    "error": {
                      "type": "integer"
                    },
                    "info": {
                      "type": "integer"
                    },
                    "toplam": {
                      "type": "integer"
                    },
                    "warning": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "toplam",
                    "error",
                    "warning",
                    "info"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "diagnostics",
                "ozet"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Validate TSPL"
            }
          },
          {
            "name": "cpcl_validate",
            "title": "Validate CPCL",
            "description": "Lint CPCL label code and return positioned findings with severity as JSON. Checks the command set Labelixa implements from the CPCL manual — a clean result is not a guarantee that a specific printer accepts the job. Run this before cpcl_preview; if you are not sure which language the code is, call language_detect first.",
            "inputSchema": {
              "properties": {
                "cpcl": {
                  "description": "Raw CPCL code",
                  "type": "string"
                }
              },
              "required": [
                "cpcl"
              ],
              "type": "object"
            },
            "outputSchema": {
              "properties": {
                "diagnostics": {
                  "items": {
                    "properties": {
                      "code": {
                        "description": "Stable diagnostic code, e.g. ZPL0002",
                        "type": "string"
                      },
                      "col": {
                        "type": "integer"
                      },
                      "end_col": {
                        "type": "integer"
                      },
                      "end_line": {
                        "type": "integer"
                      },
                      "line": {
                        "type": "integer"
                      },
                      "mesaj": {
                        "description": "Human-readable message in the requested language",
                        "type": "string"
                      },
                      "message_key": {
                        "description": "i18n key for the message",
                        "type": "string"
                      },
                      "severity": {
                        "enum": [
                          "error",
                          "warning",
                          "info"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "severity",
                      "line",
                      "col"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "ozet": {
                  "properties": {
                    "error": {
                      "type": "integer"
                    },
                    "info": {
                      "type": "integer"
                    },
                    "toplam": {
                      "type": "integer"
                    },
                    "warning": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "toplam",
                    "error",
                    "warning",
                    "info"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "diagnostics",
                "ozet"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Validate CPCL"
            }
          },
          {
            "name": "explain_zpl",
            "title": "Explain ZPL health report",
            "description": "Full health report for a ZPL label: sectioned findings (syntax, size/DPI, orientation, barcodes, fonts, graphics memory, job behaviour) with an honest score — sections that cannot be assessed say so and are excluded from the score.",
            "inputSchema": {
              "properties": {
                "dpmm": {
                  "default": 8,
                  "description": "Printer density (8 = 203 dpi). The size/DPI section is scored against it — pass the real value.",
                  "enum": [
                    6,
                    8,
                    12,
                    24
                  ],
                  "type": "integer"
                },
                "height_in": {
                  "default": 6,
                  "description": "Label height in inches; same role as width_in.",
                  "type": "number"
                },
                "width_in": {
                  "default": 4,
                  "description": "Label width in inches; fields outside it are reported.",
                  "type": "number"
                },
                "zpl": {
                  "description": "Raw ZPL code",
                  "type": "string"
                }
              },
              "required": [
                "zpl"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Explain ZPL health report"
            }
          },
          {
            "name": "convert_zpl_dpi",
            "title": "Convert ZPL DPI",
            "description": "Rescale ZPL between printer resolutions (203/300/600 DPI): coordinates, fonts, barcode module width and label size are scaled. Embedded ^GF/~DG image data is NOT scaled; the response says so instead of silently passing it through.",
            "inputSchema": {
              "properties": {
                "source_dpi": {
                  "description": "Resolution the ZPL was written for, in DPI (not dpmm: 203 DPI = 8 dpmm).",
                  "enum": [
                    152,
                    203,
                    300,
                    600
                  ],
                  "type": "integer"
                },
                "target_dpi": {
                  "description": "Resolution to rescale to, in DPI. Equal to source_dpi means no scaling.",
                  "enum": [
                    152,
                    203,
                    300,
                    600
                  ],
                  "type": "integer"
                },
                "zpl": {
                  "description": "Raw ZPL code",
                  "type": "string"
                }
              },
              "required": [
                "zpl",
                "source_dpi",
                "target_dpi"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Convert ZPL DPI"
            }
          },
          {
            "name": "template_list",
            "title": "List label templates",
            "description": "List Labelixa's first-party label template catalog: id, English name, category, size/density and tags. Read-only product content (no tenant data). Fetch one with template_get; render its ZPL with zpl_preview.",
            "inputSchema": {
              "properties": {
                "category": {
                  "description": "Filter by category",
                  "enum": [
                    "kargo",
                    "urun",
                    "raf",
                    "palet",
                    "qr"
                  ],
                  "type": "string"
                },
                "search": {
                  "description": "Substring match on id/tags",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "List label templates"
            }
          },
          {
            "name": "template_get",
            "title": "Get label template",
            "description": "Fetch one catalog template: metadata, preview image URL and — for non-premium templates — the ZPL source, ready for zpl_preview. Premium templates return metadata for everyone; their ZPL source requires an API key whose plan includes the premium-template feature (same rule as the website).",
            "inputSchema": {
              "properties": {
                "template_id": {
                  "description": "Template id from template_list",
                  "type": "string"
                }
              },
              "required": [
                "template_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Get label template"
            }
          },
          {
            "name": "epl_preview",
            "title": "Render EPL label",
            "description": "Render EPL/EPL2 label code and return a PNG preview. The preview assumes 203 dpi and is an interpretation of the EPL2 manual covering a core command subset — no physical printer validation. `labels` in the response is the TOTAL number of labels the stream prints (a stream may contain several, each ended by `P`); pass `index` to render a different one.",
            "inputSchema": {
              "properties": {
                "epl": {
                  "description": "Raw EPL/EPL2 code",
                  "type": "string"
                },
                "index": {
                  "default": 0,
                  "description": "Label index in the stream",
                  "type": "integer"
                }
              },
              "required": [
                "epl"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Render EPL label"
            }
          },
          {
            "name": "tspl_preview",
            "title": "Render TSPL label",
            "description": "Render TSPL/TSPL2 label code and return a PNG preview. The preview assumes 203 dpi and is an interpretation of the TSPL manual covering a core command subset — no physical printer validation. `labels` in the response is the TOTAL number of labels the stream prints (a stream may contain several, each ended by `PRINT`); pass `index` to render a different one.",
            "inputSchema": {
              "properties": {
                "index": {
                  "default": 0,
                  "description": "Label index in the stream",
                  "type": "integer"
                },
                "tspl": {
                  "description": "Raw TSPL/TSPL2 code",
                  "type": "string"
                }
              },
              "required": [
                "tspl"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Render TSPL label"
            }
          },
          {
            "name": "cpcl_preview",
            "title": "Render CPCL label",
            "description": "Render CPCL label code and return a PNG preview. The preview assumes 203 dpi and is an interpretation of the CPCL manual covering a core command subset — no physical printer validation. `labels` in the response is the TOTAL number of labels the stream prints (a stream may contain several, each ended by `PRINT`); pass `index` to render a different one.",
            "inputSchema": {
              "properties": {
                "cpcl": {
                  "description": "Raw CPCL code",
                  "type": "string"
                },
                "index": {
                  "default": 0,
                  "description": "Label index in the stream",
                  "type": "integer"
                }
              },
              "required": [
                "cpcl"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Render CPCL label"
            }
          },
          {
            "name": "image_to_zpl",
            "title": "Convert image to ZPL",
            "description": "Convert an image (PNG, JPEG, BMP or GIF, max 200 KB) to a ZPL ^GF graphic command. Returns the ZPL plus measured dimensions and the physical print size at the chosen density. PDF input is REST-only (/v1/graphics).",
            "inputSchema": {
              "properties": {
                "dither": {
                  "default": false,
                  "description": "Dither instead of hard threshold (photos)",
                  "type": "boolean"
                },
                "dpmm": {
                  "default": 8,
                  "description": "Target printer density",
                  "enum": [
                    6,
                    8,
                    12,
                    24
                  ],
                  "type": "integer"
                },
                "image_base64": {
                  "description": "Base64-encoded image bytes",
                  "type": "string"
                },
                "wrap": {
                  "default": false,
                  "description": "Wrap the ^GF in a printable ^XA...^XZ label with ^PW/^LL",
                  "type": "boolean"
                }
              },
              "required": [
                "image_base64"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Convert image to ZPL"
            }
          },
          {
            "name": "barcode_verify",
            "title": "Read back barcodes from an image",
            "description": "Decode barcodes from a photo or scan of a PRINTED label (PNG, JPEG, BMP or GIF) and report what a software decoder reads back. Honest by design: 'read' does not guarantee every handheld scanner will read it, and 'not read' does not condemn the label (photo angle/focus matter) — the response says so.",
            "inputSchema": {
              "properties": {
                "image_base64": {
                  "description": "Base64-encoded image bytes",
                  "type": "string"
                }
              },
              "required": [
                "image_base64"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Read back barcodes from an image"
            }
          },
          {
            "name": "zpl_compatibility",
            "title": "Check printer compatibility",
            "description": "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 and size-rule findings.",
            "inputSchema": {
              "properties": {
                "model": {
                  "description": "Printer model slug, manufacturer/model, e.g. zebra/zd421",
                  "type": "string"
                },
                "zpl": {
                  "description": "Raw ZPL code",
                  "type": "string"
                }
              },
              "required": [
                "zpl",
                "model"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Check printer compatibility"
            }
          },
          {
            "name": "bulk_submit",
            "title": "Submit bulk label job",
            "description": "Submit a bulk label production job: one ZPL template with {{variable}} placeholders plus data rows (one object per label). Requires an API key whose plan includes bulk jobs. Quota is charged UPFRONT, one operation per row, and failed rows are not refunded; rows per job are capped by plan. Returns the job id — check bulk_status (small jobs usually finish within seconds).",
            "inputSchema": {
              "properties": {
                "dpmm": {
                  "description": "Print density (default 8)",
                  "enum": [
                    6,
                    8,
                    12,
                    24
                  ],
                  "type": "integer"
                },
                "height_in": {
                  "description": "Label height, inches",
                  "type": "number"
                },
                "output": {
                  "description": "Output format (default zpl)",
                  "enum": [
                    "zpl",
                    "png",
                    "pdf"
                  ],
                  "type": "string"
                },
                "rows": {
                  "description": "One object per label: placeholder name -\u003e value",
                  "items": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "width_in": {
                  "description": "Label width, inches",
                  "type": "number"
                },
                "zpl": {
                  "description": "ZPL template with {{name}} placeholders",
                  "type": "string"
                }
              },
              "required": [
                "zpl",
                "rows"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Submit bulk label job"
            }
          },
          {
            "name": "bulk_status",
            "title": "Bulk job status",
            "description": "Status of one bulk job you own: state, attempt count and — when finished — the summary with produced count and per-row failures (row number + reason; failed rows never block the rest). Finished outputs stay downloadable for 7 days via the REST endpoint the response names.",
            "inputSchema": {
              "properties": {
                "job_id": {
                  "description": "Job id from bulk_submit",
                  "type": "string"
                }
              },
              "required": [
                "job_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Bulk job status"
            }
          },
          {
            "name": "bulk_list",
            "title": "List bulk jobs",
            "description": "List your recent bulk jobs (id, state, error class, timestamps), newest first. Useful to recover a lost job id; details via bulk_status.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Max jobs to return (default 50)",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "List bulk jobs"
            }
          }
        ]
      },
      "name": "Labelixa",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": [
        {
          "registryType": "npm",
          "identifier": "labelixa-mcp",
          "version": "0.4.1",
          "transport": "stdio"
        }
      ],
      "pageJsonUrl": "https://www.anchorterminal.com/tools/labelixa-zpl.json",
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 250
      },
      "registryName": "com.labelixa/zpl",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://api.labelixa.com/mcp"
        }
      ],
      "repository": "https://github.com/Labelixa/labelixa-mcp",
      "reviewed": false,
      "slug": "labelixa-zpl",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.labelixa/zpl",
      "summary": "Thermal label MCP server: render, validate, debug and convert ZPL, EPL, TSPL and CPCL labels.",
      "updatedAt": "2026-09-28T11:32:58Z",
      "url": "https://www.anchorterminal.com/tools/labelixa-zpl",
      "vendor": "labelixa.com",
      "vendorUrl": "https://labelixa.com/mcp",
      "version": "0.4.1",
      "websiteUrl": "https://labelixa.com/mcp",
      "where": "both",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/labelixa-zpl",
    "json": "https://www.anchorterminal.com/tools/labelixa-zpl.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/labelixa-zpl.md",
    "slim": "https://www.anchorterminal.com/tools/labelixa-zpl.min.md"
  },
  "markdown": "# Labelixa\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by labelixa.com (https://labelixa.com/mcp)\n- Listed because: It's published in the registry under labelixa.com, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Thermal label MCP server: render, validate, debug and convert ZPL, EPL, TSPL and CPCL labels.\n\n## Facts\n\n- MCP registry: `com.labelixa/zpl` 0.4.1\n- Endpoint: https://api.labelixa.com/mcp (streamable HTTP)\n- Package: npm `labelixa-mcp` (stdio)\n- Source: https://github.com/Labelixa/labelixa-mcp\n- Website: https://labelixa.com/mcp\n- npm downloads a week: 250\n- GitHub stars: 0\n- Registry entry updated: 2026-09-28\n\n## Tools\n\n- Tools it lists (21, about 4,935 tokens of context, `tools/list` without credentials, checked 2026-10-04 22:23 UTC):\n  - `zpl_preview` (read-only): Render ZPL label code and return the label as a PNG image. Use this to SEE what ZPL output looks like — LLMs can write ZPL but cannot otherwise verify the…\n  - `zpl_validate` (read-only): Lint ZPL code and return structured diagnostics: unknown commands, missing ^FS, out-of-range parameters, fields outside the label boundary. Run this before…\n  - `zpl_command_help` (read-only): Explain a single ZPL command: syntax, parameters with types/ranges/options, a fragment example and whether the Labelixa renderer draws it. Data comes from the…\n  - `barcode_png` (read-only): Generate a single barcode as a PNG image (Code 128, QR, DataMatrix, EAN-13, UPC-A, PDF417 and more). For a full label with text and layout, write ZPL and use…\n  - `language_detect` (read-only): 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)…\n  - `epl_validate` (read-only): Lint EPL/EPL2 label code and return positioned findings with severity as JSON. Checks the command set Labelixa implements from the EPL2 manual — a clean result…\n  - `tspl_validate` (read-only): Lint TSPL/TSPL2 label code and return positioned findings with severity as JSON. Checks the command set Labelixa implements from the TSPL2 manual — a clean…\n  - `cpcl_validate` (read-only): Lint CPCL label code and return positioned findings with severity as JSON. Checks the command set Labelixa implements from the CPCL manual — a clean result is…\n  - `explain_zpl` (read-only): Full health report for a ZPL label: sectioned findings (syntax, size/DPI, orientation, barcodes, fonts, graphics memory, job behaviour) with an honest score —…\n  - `convert_zpl_dpi` (read-only): Rescale ZPL between printer resolutions (203/300/600 DPI): coordinates, fonts, barcode module width and label size are scaled. Embedded ^GF/~DG image data is…\n  - `template_list` (read-only): List Labelixa's first-party label template catalog: id, English name, category, size/density and tags. Read-only product content (no tenant data). Fetch one…\n  - `template_get` (read-only): Fetch one catalog template: metadata, preview image URL and — for non-premium templates — the ZPL source, ready for zpl_preview. Premium templates return…\n  - `epl_preview` (read-only): Render EPL/EPL2 label code and return a PNG preview. The preview assumes 203 dpi and is an interpretation of the EPL2 manual covering a core command subset —…\n  - `tspl_preview` (read-only): Render TSPL/TSPL2 label code and return a PNG preview. The preview assumes 203 dpi and is an interpretation of the TSPL manual covering a core command subset —…\n  - `cpcl_preview` (read-only): Render CPCL label code and return a PNG preview. The preview assumes 203 dpi and is an interpretation of the CPCL manual covering a core command subset — no…\n  - `image_to_zpl` (read-only): Convert an image (PNG, JPEG, BMP or GIF, max 200 KB) to a ZPL ^GF graphic command. Returns the ZPL plus measured dimensions and the physical print size at the…\n  - `barcode_verify` (read-only): Decode barcodes from a photo or scan of a PRINTED label (PNG, JPEG, BMP or GIF) and report what a software decoder reads back. Honest by design: 'read' does…\n  - `zpl_compatibility` (read-only): 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…\n  - `bulk_submit` (writes): Submit a bulk label production job: one ZPL template with {{variable}} placeholders plus data rows (one object per label). Requires an API key whose plan…\n  - `bulk_status` (read-only): Status of one bulk job you own: state, attempt count and — when finished — the summary with produced count and per-row failures (row number + reason; failed…\n  - `bulk_list` (read-only): List your recent bulk jobs (id, state, error class, timestamps), newest first. Useful to recover a lost job id; details via bulk_status.\n- How its tools read to an agent (0 errors, 6 warnings, 1 note, about 4,935 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC21 epl_preview: described almost the same as tspl_preview (86% of the same words)\n  - warn TC21 epl_preview: described almost the same as cpcl_preview (89% of the same words)\n  - warn TC21 epl_validate: described almost the same as tspl_validate (88% of the same words)\n  - warn TC21 epl_validate: described almost the same as cpcl_validate (91% of the same words)\n  - warn TC21 tspl_preview: described almost the same as cpcl_preview (92% of the same words)\n  - warn TC21 tspl_validate: described almost the same as cpcl_validate (91% of the same words)\n  - note TC24 server: 16 of 21 tools have no outputSchema\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/labelixa-zpl.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "Labelixa",
        "url": ""
      }
    ],
    "description": "Labelixa, an MCP server by labelixa.com, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Thermal label MCP server: render, validate, debug and convert ZPL, EPL, TSPL and CPCL labels.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "Labelixa",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/labelixa-zpl",
    "published": "",
    "section": "indexed",
    "title": "Labelixa: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/labelixa-zpl"
  },
  "tokens": {
    "markdown": 1700,
    "slim": 1630
  },
  "version": 1
}
