Skip to main content
Glama
Nightious-Tools

NiimBlue Labels MCP

Official

Render NiimBlue label

render_label
Idempotent

Design NIIMBOT labels and preview exact 1-bit printhead output before printing; returns layout warnings and a NiimBlue open link.

Instructions

Design a NIIMBOT label for NiimBlue and see exactly what the printhead burns. Returns the 1-bit PNG NiimBlue prints (threshold 140; each dot drawn zoom×zoom px), each object's rendered box, warnings that end with their fix, and a niim.blue #load= link that opens the label in NiimBlue for printing. Units are printer dots: 8 per mm at 203 dpi, 11.81 at 300 dpi; origin top-left; objects paint in array order and use NiimBlue/fabric property names. Floors at 203 dpi (×dpmm/8 at 300 dpi): text ≥16 px; weight ≥500 under 24 px; strokes ≥2 px; QR modules ≥3 px with 4 clear modules; Code 128 scaleFactor ≥2 with 10 clear modules; text and codes ≥1 mm from the edges. Colours: black, white, transparent. Only Noto Sans Variable (Latin, Cyrillic) + Material Icons survive the link. Fix every warning and render again. Final call: include_json, for the .json export. The link replaces the label open in NiimBlue after a confirm: tell the user to save it first. {key} fields fill from rows (preview: row 1; more than 1 row travels as NiimBlue's CSV, one label per row). save_as writes the args and an importable .niimblue.json to the templates folder; template starts from saved args.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
rowsNoValues for {key} fields, one object per label. The preview shows row 1. 1 row: the link carries the filled text. More: the link carries them as NiimBlue's CSV (it replaces the user's open CSV) and prints one label per row
splitNoSplit the label into parts (cable flags)
titleNoLabel name in NiimBlue's saved labels; travels only in the .json export (include_json, save_as), so after opening the link the user types it when saving
mirrorNoRepeat the design into the other split part, optionally rotated
objectsNoObjects in paint order: the first is the bottom layer
printerNoPrinter model, e.g. D110, B1, D11_H: sets dpi, print direction and printable width
save_asNoSave these args as a template under this name: writes <name>.args.json and an importable <name>.niimblue.json
tail_posNoSide of the cable-flag tail
templateNoSaved template name (list_templates): its args are the base, the args given here override them, objects and rows replace wholesale
width_mmNoLabel width as set in NiimBlue. B-series (top): runs across the head
height_mmNoLabel height as set in NiimBlue. D-series (left): the tape width across the head
overwriteNoReplace an existing save_as template (default false: refuse)
split_partsNoNumber of split parts
include_jsonNoAlso return the NiimBlue .json export; set it on the final call
tail_length_mmNoTail length in mm

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
linkYesOpens the label in NiimBlue (after a confirm that replaces the open label)
toolYes
zoomYesEach printer dot is zoom×zoom PNG pixels
boxesYesRendered bounding boxes in dots, after auto-size
labelYes
savedNosave_as: the template files written
warningsYes
link_charsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the safety profile (readOnly=false, idempotent, non-destructive); the description adds substantial context beyond that: the returned artifact is a 1-bit PNG thresholded at 140, per-object rendered boxes, warnings with fixes, and a #load= link. It also discloses a side effect the annotations miss — the link replaces the user's currently open label after a confirm — and that save_as writes two files into the templates folder. This is exactly what annotations cannot convey.

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?

Effectively sized for a 15-parameter rendering tool with many hard constraints, and it front-loads purpose and returns before the rule list. It reads as a dense wall of text rather than grouped bullets, and the dpi floors duplicate enum/schema notes, so it is slightly more repetitive than needed.

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?

Given the printer-model enum, nested object union, and an existing output schema, the description still covers the pieces an agent needs to succeed: units and dpi, interpolation and row/CSV semantics, template and save_as lifecycle, and the iterate-until-warning-free loop. Nothing material is left for the agent to guess.

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 baseline is 3 and the schema already documents all 15 parameters thoroughly. The description still adds meaning beyond it: dpi-to-dot conversion (8/mm at 203 dpi, 11.81 at 300), top-left origin, paint order as array order, NiimBlue/fabric property naming, and the {key}/rows interpolation contract. That said, it partly repeats schema-stated floors (e.g. font ≥16 px).

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 ('Design a NIIMBOT label for NiimBlue') and immediately scopes the output ('see exactly what the printhead burns'). The render step is clearly distinguished from the sibling list_templates/get_template tools, which only manage saved args. An agent can tell what this does 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 Guidelines4/5

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

Gives concrete operational flow: fix every warning then re-render, and 'final call: include_json' for the .json export, plus the ordering caution that the link replaces the label currently open in NiimBlue and the user must save first. It does not explicitly say when to prefer this tool over list_templates/get_template, but the workflow guidance is otherwise clear.

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

Deploy Server

Other Tools