Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add EthanPany/thermal-mcp --skill thermal-printgit clone --depth 1 https://github.com/EthanPany/thermal-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ethanpany/thermal-mcp/thermal-print)<a href="https://agentmods.dev/skills/ethanpany/thermal-mcp/thermal-print"><img src="https://agentmods.dev/badge/skills/ethanpany/thermal-mcp/thermal-print/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ethanpany/thermal-mcp/thermal-print"><img src="https://agentmods.dev/badge/skills/ethanpany/thermal-mcp/thermal-print.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00060 | $0.02431 |
| Opus 5.5 | $0.00024 | $0.00972 |
| Sonnet 5.5 | $0.00012 | $0.00486 |
| Haiku 4.5 | $0.00006 | $0.00243 |
Grade A, and why
thermal-print scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 142 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Designing for the 58mm thermal printer
You are designing on a strip of paper: 384px wide (1 CSS px = 1 printer dot = 0.125mm), unlimited height, printed at 203dpi in pure 1-bit black & white.
Two paths — pick the right one
- Quick print (notes, lists, todos, plain receipts): call
print_markdown. GFM + syntax-highlighted code fences,mermaiddiagrams, LaTeX math ($...$/$$...$$), task lists, tables, remote images — all supported. Three type-size tiers viasize(see "Type size" below); default tomedium. - Custom design: write an HTML body fragment (no
<html>/<head>), bring your own<style>, iterate withpreview_html→print_html. HTML gives you full control of every font-size — setfont-sizein your own CSS (respect the ≥18px body / ≥20px CJK floors below). - Continuous / log mode (typewriter-style: hourly logs, streaming notes):
print_markdownwithflow: "continuous". Zero top/bottom margins and no trailing feed, so chunks from separate calls join seamlessly into one strip. Rules: send one complete markdown block per call (a fenced code block, a list, a paragraph — never split mid-construct; incomplete chunks are rejected with an error instead of printed). Keep chunks short (1–5 lines), prefix log lines with a mono timestamp;size: "small"is acceptable here since logs are intentionally dense (otherwise prefermedium). The human presses the printer's FEED button after tearing — that IS the margin; no begin/end calls needed.
Workflow (always)
- Write the content.
- Preview — the returned image is the exact 1-bit output that will print. Check: nothing clipped at 384px, text legible, no accidental gray speckle.
- Iterate, then print. Paper is physical — never print unpreviewed content.
Hard physical constraints
- 1-bit output. Photos/gradients are auto-detected and dithered (Atkinson
default;
algorithm: "jarvis"for smoother gradients,"bayer"for a halftone newspaper look). Text must be pure#000on#fff— gray or colored text prints as speckle. Override detection withmode: "text"|"photo". - Type size (
print_markdown): three tiers —large(24px, headlines / very short notes),medium(19px) — the recommended default, use it for almost everything,small(14px, the minimum — ONLY for genuinely dense or long content; it's noticeably harder to read, so never default to it). When in doubt, medium. - Floors: body ≥ 18px, fine print ≥ 16px absolute floor, CJK ≥ 20px (hardware cell is 24×24 dots). Line-height 1.3–1.4 body, 1.1–1.2 headings.
- Rules/borders ≥ 2px — 1px hairlines drop out. Dashed 2px = classic receipt.
- Give rows breathing room. Thermal dot-gain fattens everything ~1px, so
tight vertical stacks bleed into each other. For icon/checkbox + text rows use
display:flex; align-items:center; gap:8px; line-height:1.4and ≥6px between rows — never absolutely-position a checkbox/icon column over the text column. - Network works (remote images load) but every bundled font/icon below is local — prefer them.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 142 lines · 60 tokens per session scan A b2debb66fccb
thermal-print is a skill published in the GitHub repository EthanPany/thermal-mcp (0 stars, last pushed 3mo ago), licensed MIT. It adds 60 tokens to every session and 2,431 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
thermal-print compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| thermal-printEthanPany/thermal-mcp | Skill | 0 | 3mo ago | MIT | A | 60 | Claude Code, Codex |
| solidworks-vibecadwzyn20051216/solidworks-automation-skill | Skill | 1.8k | 3d ago | MIT | A | 96 | Claude Code, Codex |
| bdf_font_converterespressif/esp-claw | Skill | 2.4k | 5d ago | Apache-2.0 | A | 27 | Claude Code, Codex |
| fluidcad-assemblyFluid-CAD/FluidCAD | Skill | 693 | yesterday | MIT | A | 154 | Claude Code, Codex |
| gen-assemblypartcad/partcad | Skill | 515 | yesterday | Apache-2.0 | A | 111 | Claude Code |
| gen-partpartcad/partcad | Skill | 515 | yesterday | Apache-2.0 | A | 114 | Claude Code |
| gen-sketchpartcad/partcad | Skill | 515 | yesterday | Apache-2.0 | A | 201 | Claude Code |