API & MCP
Everything a person can do on Label Sheet Maker with CSV Mail Merge, a program or AI agent can do with the same inputs and get the identical result.
HTTP API
POST https://printshoplabelsheet.usefulweb.app/api/v1/calculate– run Label Sheet Maker with CSV Mail MergeGET https://printshoplabelsheet.usefulweb.app/api/v1/tool– inputs, output schema, examples- OpenAPI 3.1: /openapi.json · /openapi.yaml
- Errors:
application/problem+json;422includes per-fielderrors.
Label Sheet Maker with CSV Mail Merge
Fill a sheet of labels from CSV rows with a {Column} template: address labels, name badges, jar and product labels. Use a generic sheet layout or enter your own geometry, skip labels already used, add a QR code or barcode per label and print a true-size PDF.
| Field | Type | Default | Description |
|---|---|---|---|
sheet | select (a4-3x8-70x37, a4-3x7-63x38, a4-2x7-99x38, a4-2x4-99x68, a4-4x10-48x25, a4-5x13-38x21, a4-2x5-90x54, a4-4x6-round40, letter-3x10, letter-2x10, letter-2x5, letter-4x20, letter-3x4-round2, custom | "a4-3x8-70x37" | Sheet layout |
paper | select (a3, a4, a5, a6, b5, letter, legal, tabloid, halfletter) | "a4" | Paper size (custom layout) |
cols | integer | 3 | Columns (custom) |
rows | integer | 8 | Rows (custom) |
labelW | number | 70 | Label width (mm, custom) |
labelH | number | 37 | Label height (mm, custom) |
top | number | 0.5 | Top margin (mm, custom) |
left | number | 0 | Left margin (mm, custom) |
pitchX | number | 70 | Horizontal pitch (mm, custom). Distance from the left edge of one label to the left edge of the next. |
pitchY | number | 37 | Vertical pitch (mm, custom) |
template | textarea | "{Name}\n{Street}\n{Postcode} {City}" | Label text. Use {Column} for values from the CSV header. |
csv | textarea | "Name,Street,Postcode,City\nAda Example,1 Sample Road,12345,Exampletown\nBo Samp | CSV data (first row = column names) |
code | select (none, qr, code128, ean13) | "none" | Code on each label |
codeTemplate | text | — | Code content. Template for the code, for example {SKU} or https://example.com/{Id}. |
fontSize | number | 3.6 | Font size (mm). The text shrinks automatically when it does not fit. |
align | select (start, middle, end) | "start" | Alignment |
startAt | integer | 1 | Start at label number. Skip labels already used on a partly used sheet (counted row by row). |
copies | integer | 1 | Copies of each label |
outlines | boolean | false | Draw label outlines. Useful for a test print on plain paper; usually off for real label sheets. |
Example request
Address labels on a 3 × 8 sheet
curl -X POST https://printshoplabelsheet.usefulweb.app/api/v1/calculate -H 'content-type: application/json' -d '{}'
Every result contains
inputs (normalised, defaults applied), summary, result (validated against the published schema), units, assumptions, sources, warnings, computedAt and links.
MCP (Model Context Protocol)
- Streamable HTTP endpoint:
https://printshoplabelsheet.usefulweb.app/mcp– protocol revisions 2026-07-28 (stateless) and 2025-11-25 / 2025-06-18 / 2025-03-26 (initialize handshake). - Tools:
printshop_label_sheet - Local stdio connector:
node src/mcp-stdio.ts --tool=printshop-label-sheet
{
"mcpServers": {
"printshop-label-sheet": { "type": "http", "url": "https://printshoplabelsheet.usefulweb.app/mcp" }
}
}