Skip to main content
Glama
printshop-mcp

printshop-mcp

by ildargiv

printshop-mcp

CI License: MIT

English · Русский · 简体中文 · Español · Português · Deutsch · Français · 日本語 · 한국어 · Italiano · Türkçe · Polski · Українська · العربية · हिन्दी

🌐 ildargiv.github.io/printshop-mcp

The print shop inside your AI agent. Ask for "badges for these 40 guests, business cards and a flyer" and the agent designs them, packs them onto sheets, shows you an exact proof and prints them on your real printer - millimetre-accurate. And it remembers all your print profiles: printer, paper, tray, media type, quality, colour profile, calibration, even vendor-only driver options. Explain your printer once, never again.

A mixed sheet (1 flyer + 3 badges + 4 business cards) as the agent sees it before printing: crop marks only where you cut, long names shrunk to fit, grey border = what your printer can't print.

Status: v0.2, Windows. New: print any PDF (e.g. from other design skills) and automatic layout of many items. Next: self-learning from print defects, macOS/Linux.

Printer compatibility

For paper printers: inkjet, laser, photo, sublimation (souvenir transfer printing) and label printers. Not for 3D printers.

Works with any printer that has a Windows driver, whatever the brand: printing goes through the standard Windows print system, and vendor-only options (paper types, borderless, print quality) are kept in profiles through the driver's own settings window.

Printer type

Brands

Inkjet

Epson · Canon · HP · Brother

Laser and MFP

HP · Brother · Canon · Kyocera · Xerox · Ricoh · Konica Minolta · Sharp · Lexmark · OKI · Pantum · Samsung

Photo (inkjet and dye-sub photo)

Epson · Canon · HP · DNP · Mitsubishi · Citizen · Canon Selphy

Sublimation (souvenirs: mugs, T-shirts, puzzles)

Epson EcoTank / SureColor F (with sublimation ink) · Sawgrass · Ricoh

Label / thermal

Zebra · TSC · Brother QL · Dymo · Xprinter

Verified so far:

Printer

Type

Status

Microsoft Print to PDF

virtual

✅ full test suite

Epson L8050

inkjet, photo

✅ trays, media types, margins detected · test print pending

Printed with another model? Report it and it gets added here. macOS and Linux (CUPS) are planned.

Related MCP server: printbridge

Install

Claude Code (skill + MCP server in one plugin):

/plugin marketplace add ildargiv/printshop-mcp
/plugin install printshop@printshop-mcp

Any MCP client (Claude Desktop, Cursor, Codex, ...):

{ "mcpServers": { "printshop": { "command": "uvx",
    "args": ["--from", "git+https://github.com/ildargiv/printshop-mcp", "printshop-mcp"] } } }

Pin a release instead of the latest code: git+https://github.com/ildargiv/printshop-mcp@v0.3.0 (see Releases; each release also has a wheel for pip install).

Needs uv and Edge or Chrome (used for rendering).

Why not just Ctrl+P?

Ctrl+P

printshop-mcp

"Fit to page" silently scales: 90 mm becomes 88.7 mm

Rendered straight to device pixels: 1 mm in CSS = 1 mm on paper

Content falls into the unprintable margin

Proof shows the printer's real unprintable zone; preflight warns

The agent can't see the result

Proof images + JSON report: clipped text, low-dpi images, wrong paper

Settings forgotten every time

Named profiles with the full driver state, calibration and ICC

One kind of item per print

Badges, cards and flyers packed on shared sheets with crop marks

What the agent gets

Skill (skills/printshop): the workflow (profiles -> design -> proof -> print -> fix the profile), HTML rules, a layout reference (what fits on A4/Letter) and templates:

Template

badges-a4.html

Event badges 90x55, 10 per A4

business-cards-a4.html

Business cards 90x50, 10 per A4

flyers-a6.html

A6 flyers, 4 per A4

table-tent-a4.html

Folded table tent / name card

event-kit-a4.html

Mixed: flyer + badges + business cards on one sheet

mug-wrap-a4.html

Sublimation mug wraps 200x95 (11 oz), printed mirrored

MCP tools:

Tool

list_printers, describe_printer

Printers, papers, trays, media types, printable area, saved profiles

list_profiles, save_profile, set_default_profile, delete_profile

Remembered print setups; open_driver_dialog=true lets you set vendor options once in the driver window; mirror=true for sublimation transfer paper

layout

Pack many items (HTML designs, PDFs, images) onto sheets, grouped by paper, with crop marks

proof

Render + preflight an HTML file or any PDF: proof images, a job id and a cost estimate (sheets, ink coverage measured on the pixels, money if the profile has prices)

print_job

Print a proofed job (warnings need explicit confirmation)

printer_status

Offline / out of paper / jammed, and the queue

HTML conventions: each sheet is <section class="ps-sheet" style="width:210mm;height:297mm">, layout in mm. data-fit="9pt" shrinks text to fit its box; data-cut adds crop marks.

Safety

  • Printing only after proof (the job id is the token); jobs expire after 1 hour and print once.

  • PRINTSHOP_MAX_SHEETS (default 50) caps paper use; PRINTSHOP_DRYRUN=1 never touches the printer.

  • HTML can only load local files from its own folder.

CLI

printshop-mcp printers
printshop-mcp proof badges.html --printer "My Printer"
printshop-mcp print <job_id> [--accept-warnings]

License

MIT

Available Tools

10 tools
delete_profileC

Forget a print profile.

NameRequiredDescriptionDefault
nameYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. "Forget" hints at irreversible removal but says nothing about whether deletion is permanent, whether dependent settings (e.g., a default profile pointer) are affected, what errors occur if the name is unknown, or what the response looks like.

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

Conciseness3/5

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

It is a single short sentence with no waste, but the brevity comes at the cost of substance; the front-loaded verb is ambiguous rather than informative. Concision here is under-specification rather than efficiency.

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

Completeness2/5

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

With no annotations, no output schema, and an undocumented parameter, a destructive tool should disclose irreversibility, error behavior, and argument meaning. The description supplies none of that, leaving the agent unable to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter "name" has 0% schema description coverage, and the description adds no meaning: it does not state that it is the exact profile name, whether matching is case-sensitive, or what happens on a miss. The one-parameter baseline does not apply because nothing is explained anywhere.

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

Purpose3/5

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

"Forget a print profile" implies removal of a print profile, and the name plus the sibling set (save_profile, list_profiles) make the intended operation inferable. However, the verb is metaphorical rather than a specific operation like "delete", so what actually happens to the profile is left to inference.

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?

There is no guidance on when to delete versus save or set as default, no prerequisites, no mention of what happens if the profile is currently the default, and no reference to any sibling tool. The agent must guess the usage context entirely.

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

describe_printerC

Papers, trays, media types, resolutions and printable area (A4) of a printer, plus its saved profiles.

NameRequiredDescriptionDefault
printerYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and it says nothing about read-only safety, authentication, or error behavior for an unknown printer name. The list of returned attributes weakly implies a non-mutating lookup, but that is inference rather than disclosure.

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?

A single compact clause with no filler, and the most important content (what you get back) is front-loaded. It is a noun fragment rather than a complete sentence, which slightly weakens the lead.

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 one-parameter read tool with no output schema and no annotations, the description adequately covers the return contents but leaves the input contract and behavioral profile unaddressed. It is close to sufficient but has a clear gap on how to specify the printer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required 'printer' parameter, and the description does not say how a printer is identified (name, queue, ID, IP). The one parameter the agent must supply is left completely unexplained by both schema and prose.

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 enumerates the exact data the tool surfaces (papers, trays, media types, resolutions, printable area, saved profiles), which makes it clear this is a capability/configuration lookup for a single printer. It lacks an explicit verb and does not distinguish itself from siblings like printer_status or list_printers, so an agent must infer the distinction.

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?

There is no guidance on when to use this versus printer_status, list_printers, or list_profiles, nor any prerequisites (does the printer need to be online? registered?). The implied use case is recoverable from the content list, but nothing is stated.

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

layoutA

Automatically pack many items onto sheets (imposition) and write printable HTML, one file per paper group.

items: [{"name": "badge", "width_mm": 90, "height_mm": 55, "copies": 1, "group": "plain", "html": "<div ...>..." OR "src": "card.pdf" | "photo.jpg", "page": 1, "rotate": true, "fit": "fill"|"contain"}]

  • html: the item's design, filling its box (use position:absolute children, mm units, data-fit). Shared styles go into css. One entry per distinct item (e.g. one per guest), copies for identical ones.

  • src: a PDF page or image (e.g. a business card PDF from another tool), path relative to out's folder.

  • group: items that need different paper (cardstock vs plain) must have different groups; each group becomes its own file to proof and print with its own profile. sheet: A4, A3, A5, Letter, Legal, Tabloid or [width_mm, height_mm]. margin_mm: keep >= printer margin (~4). gap_mm: space between items (0 = shared cut lines). Items rotate automatically when that saves paper. out: .html path (or folder) for the result; must contain any src files. Returns files, sheet counts, paper use.

NameRequiredDescriptionDefault
cssNo
outNo
itemsYes
sheetNoA4
titleNolayout
gap_mmNo
landscapeNo
margin_mmNo
crop_marksNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden well: it discloses the file-writing side effect, one-file-per-group behavior, automatic rotation when it saves paper, gap semantics for shared cut lines, and return values. It does not state whether existing output files are overwritten or what failure modes look like, so it is strong but not complete.

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?

The purpose is front-loaded and the description uses a compact item example to convey nested semantics efficiently. It is dense but mostly earns its length because the schema itself provides no parameter descriptions; structure could be slightly cleaner, but there is little filler.

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?

There is no output schema, and the description compensates by summarizing returns as files, sheet counts, and paper use. It covers enough workflow and parameter context to invoke the tool correctly, though it leaves some optional parameters and overwrite/error behavior unstated.

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 0%, so the description must supply parameter meaning, and it does so for the critical parameters: items and its subfields, sheet, margin_mm, gap_mm, out, and css. It omits top-level title, landscape, and crop_marks, but those gaps are relatively minor compared with the detailed item guidance it provides.

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: it packs items onto sheets for imposition and writes printable HTML, one file per paper group. This clearly distinguishes layout from sibling printer/proofing tools because it generates print-ready files rather than sending or previewing jobs.

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 through the paper-group workflow and the note that each group becomes its own file to proof and print with its own profile. However, the description does not explicitly name proof or print_job as alternatives or state when not to use this tool.

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

list_printersA

Installed printers with their saved profiles. The first printer is the Windows default.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/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 behavioral burden. It does earn credit for disclosing ordering semantics (the first entry is the Windows default), which the schema cannot convey. However, it says nothing about whether this is a read-only local call, whether it fails when no print spooler is available, or what each printer entry contains.

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 filler, and the useful ordering fact is included rather than buried. Every sentence earns its place.

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 zero-argument enumerator with no output schema, the description covers what the list is and the one non-obvious property (default-first ordering). A brief note on what fields each printer exposes would close the remaining gap.

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 tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline of 4 applies; no parameter claims are made or needed.

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 names the resource (installed printers) and adds the payload (saved profiles), so an agent knows what the call returns. It does not explicitly contrast with close siblings like list_profiles or describe_printer, which is the one thing separating it from 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 Guidelines2/5

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

There is no statement of when to call this versus list_profiles, describe_printer, or printer_status. The agent must infer from the name alone that this is the enumerator and describe_printer is the detail view.

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

list_profilesB

All remembered print profiles (optionally for one printer) and the default profile of each printer.

NameRequiredDescriptionDefault
printerNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It usefully discloses that the result includes each printer's default profile alongside the saved profiles, which is non-obvious return-shape information, but it says nothing about ordering, pagination, or completeness of the list.

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?

A single, front-loaded clause with no filler. It is a noun phrase rather than a full statement, so it reads slightly terse, but nothing is wasted.

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 one-parameter read-only list tool with no output schema and no annotations, the description conveys the result contents but leaves the filter value format and any result ordering unspecified. It is adequate, but an agent could still call it with the wrong kind of printer identifier.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single 'Printer' parameter, so the schema only gives a nullable string with no hint of whether it is a name or an ID. The description adds only that the parameter is optional and acts as a filter — useful but insufficient for the agent to construct a valid value.

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 names the resource precisely ('all remembered print profiles', 'the default profile of each printer'), which is far more specific than the bare name. It does not, however, explicitly distinguish itself from siblings such as list_printers or describe_printer, leaving the agent to infer the boundary.

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 parenthetical '(optionally for one printer)' implies the filter use case, so partial guidance exists. There is no statement of when to prefer list_printers or describe_printer, and no exclusions or prerequisites are given.

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

printer_statusC

Printer state (offline, out of paper, jammed...) and its print queue.

NameRequiredDescriptionDefault
printerYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says what information is returned but does not disclose whether this is a safe read-only call, how offline or error states are represented, whether queue data is paginated, or what permissions are needed.

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?

It is a single front-loaded sentence fragment with no wasted words. The brevity is appropriate, though the fragment style leaves it under-specified rather than genuinely concise.

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

Completeness2/5

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

For a simple status tool this covers the high-level return content, but with no annotations, no output schema, and an undocumented required parameter, the definition is not complete enough. It should at least clarify the printer identifier format and any important failure or offline behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the single required 'printer' parameter. The description does not explain whether 'printer' should be a name, ID, network address, or other identifier, so an agent must guess the accepted value format.

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 resource: printer runtime state (with examples like offline, out of paper, jammed) and its print queue. It is clear what information the tool retrieves, but it does not explicitly differentiate itself from the sibling describe_printer or list_printers.

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 gives no guidance on when to use printer_status versus alternatives such as describe_printer, list_printers, or print_job. It also does not mention prerequisites, exclusions, or typical invocation contexts.

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

proofA

Render printable HTML exactly as it will print and check it. Returns a job (job_id, errors, warnings, per-sheet geometry, estimate: sheets, ink coverage measured on the pixels, cost if the profile has prices) and proof images: grey = area the printer cannot print, red/orange frames = problems. Give either html (a string) or path: an .html file (images resolve relative to it) or a .pdf (every page becomes a sheet of the page's size - use this to print PDFs made by other tools). Without printer/profile the default profile of the last used printer is taken.

NameRequiredDescriptionDefault
dpiNo
htmlNo
pathNo
copiesNo
printerNo
profileNo

TDQS

A4.7/5.0
Behavior5/5

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

Since there are no annotations, the description carries the full burden of behavioral disclosure. It describes the complex return value structure (job_id, errors, geometry, ink coverage, cost) and provides crucial context on the meaning of visual proof elements (grey vs. red/orange frames).

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?

The description is dense and long, but every sentence provides a necessary piece of information regarding input, output, or behavior, preventing it from becoming redundant.

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 complex tool lacking annotations and an output schema, the description is highly complete, covering input formats, default behaviors, and the detailed nature of the results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description adds extreme value. It clarifies that 'html' can be either a string or a file path, and it defines the intended use case for different input formats (.html vs .pdf).

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 clearly states the tool's purpose: to render and check printable HTML/PDF. It goes beyond a simple rename to define the entire scope of the operation, including generating a proof.

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?

It provides good usage guidelines by specifying the input types (string vs. path) for HTML and offering advice on using PDF input for pages created by other tools. It also defines default behavior when printer/profile parameters are omitted.

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

save_profileA

Create or update a remembered print profile. Only the given fields change.

paper: "sheet" (paper size follows the HTML sheet, default) or "driver" (keep the paper set in the driver). tray / media: name (or part of it) or code from describe_printer. quality: draft|low|medium|high. color: color|mono. duplex: simplex|long_edge|short_edge. icc: path to a printer ICC profile, intent: perceptual|relative|saturation|absolute. dpi: render resolution (default 300). scale_x/scale_y (0.97-1.03) and offset_x_mm/offset_y_mm (-5..5): calibration applied to every job. mirror: print every sheet mirrored (sublimation / heat-transfer paper for mugs, T-shirts). Proofs stay readable. paper_price: cost of one sheet; ink_price_5pct: ink cost of one A4 page at 5% coverage of one colour (bottle or cartridge price / ISO page yield printed on the box); currency: e.g. "RUB", "USD". With these, every proof includes a cost estimate. tags/notes: what this profile is for ("business cards", "cardstock 300g") so it can be found later. open_driver_dialog: shows the printer driver's own settings window to the user; everything they choose there, including vendor-only options, is stored in the profile.

NameRequiredDescriptionDefault
dpiNo
iccNo
nameYes
tagsNo
trayNo
colorNo
mediaNo
notesNo
paperNo
duplexNo
intentNo
mirrorNo
printerNo
qualityNo
scale_xNo
scale_yNo
currencyNo
offset_x_mmNo
offset_y_mmNo
paper_priceNo
make_defaultNo
ink_price_5pctNo
open_driver_dialogNo

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 load and does well: it discloses merge semantics ('only the given fields change'), that scale/offset calibration applies to every job, that mirroring keeps proofs readable (sublimation use case), that cost fields make proofs include a cost estimate, and that open_driver_dialog captures vendor-only options into the profile. It omits persistence/overwrite risk for existing profile names and what happens when printer is omitted.

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?

The core statement is front-loaded in one sentence, followed by a compact, scannable parameter reference where nearly every line adds distinct information. Some lines are terse to the point of being cryptic (paper/tray phrasing) and the list lacks grouping, but there is little outright waste.

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 23-parameter mutation tool with no annotations, no output schema, and zero schema descriptions, the description is unusually complete, covering most parameters with values and side effects. It is still missing the required name's role, which printer the profile binds to, and make_default, so an agent can call it but not with full confidence on identity-binding fields.

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 0% across 23 parameters, so the description must compensate and largely does: it supplies accepted enum values (quality, color, duplex, intent, paper), numeric ranges for scale and offset, the default for dpi, and the formula behind ink_price_5pct. Gaps remain for the required 'name', 'printer', and 'make_default', which are not explained at all.

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 pair and resource ('Create or update a remembered print profile') plus the important upsert nuance that 'only the given fields change', which tells an agent this is a partial-merge write rather than a replace. It is clearly distinct from list/delete/set_default siblings by name and effect, though it never explicitly routes away from them.

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 context is implied rather than stated: the tags/notes line ('so it can be found later') and the tray/media note ('code from describe_printer') give indirect routing to describe_printer, but there is no explicit when-to-use/when-not guidance, no mention of set_default_profile versus the make_default parameter, and no prerequisites.

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

set_default_profileB

Make a profile the default for its printer (and that printer the default for printing).

NameRequiredDescriptionDefault
nameYes

TDQS

B3.3/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 usefully discloses a non-obvious side effect: the profile becomes default AND its printer becomes the printing default. However, it says nothing about prior defaults being overwritten, permission requirements, or error behavior for a mutation tool.

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 primary effect and parenthetically noting the secondary effect. No filler.

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 one-parameter mutation tool with no annotations and no output schema, the description explains the behavior but leaves the parameter's identity, the fate of the previous default, and failure modes unaddressed. Adequate but with clear 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 0% and the sole parameter 'name' is undocumented. The description partially compensates by framing it as 'a profile', implying name refers to the profile rather than the printer, but it does not clarify the accepted identifier format or whether printer names are accepted.

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 ('Make a profile the default') and even names the cascading effect on the printer's default. It is easily distinguished from siblings like save_profile and delete_profile, though it never explicitly contrasts with them.

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?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as save_profile for creating a profile first. The action itself implies intent, but nothing tells an agent under which conditions to pick this tool.

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. 10 tool updatesv0.3.0
    • First observeddelete_profile
    • First observeddescribe_printer
    • First observedlayout
    • First observedlist_printers
    • First observedlist_profiles
    • First observedprint_job
    • First observedprinter_status
    • First observedproof
    • First observedsave_profile
    • First observedset_default_profile

TDQS

A3.5/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target clearly distinct actions (save/delete/set-default profile, proof, layout, print_job, printer_status). The only soft overlap is the trio list_printers, list_profiles, and describe_printer, which all return profile information, though the descriptions differentiate them (installed printers vs. profiles vs. detailed capabilities).

Naming Consistency4/5

The set mostly follows a verb_noun convention (list_profiles, describe_printer, save_profile, set_default_profile, print_job, printer_status). The bare names proof and layout break the pattern slightly but are still readable and unambiguous in context.

Tool Count5/5

Around 10 tools is well-scoped for a print workflow: discovery, profile management, proofing, imposition, printing, and status. Each tool earns its place with no redundant entries.

Completeness4/5

The surface covers the full lifecycle from printer inspection through profiling, proofing, layout, and printing, including cost estimation and driver access. Minor gaps remain: printer_status exposes the queue but there is no tool to cancel or pause a job, and no job history listing beyond the current queue.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to drive CorelDRAW via COM API, creating and editing documents, replacing text, manipulating shapes, running preflight checks, and batch-exporting production files from natural language instructions.
    3
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to print documents directly on your own printer over a private network, without cloud services or open ports. Supports printing text, URLs, and files with per-person access keys, usage limits, and detailed job control.
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Enables AI agents to autonomously create and edit graphic designs, multi-page PDF catalogs, brochures, social media assets, and slide decks on a local browser canvas. It provides vision-in-the-loop feedback, layout audits, and export capabilities for print-ready or web-ready outputs.
    53
    121 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to print HTML, web pages, PDFs, and images to local printers by bridging to an existing client over WebSocket, including previews, printer discovery, batch jobs, and customizable PDF/print settings.
    16
    184 npm
    MIT