WELANDA Engraving Designer
Design a laser engraving for a WELANDA snus case, preview it and hand the user a checkout link.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"public-editor": {
"url": "https://mcp.welanda.com/mcp"
}
}
}Remote endpoints
https://mcp.welanda.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (7)
🟢list_personalizable_products(locale)
List WELANDA products that can be personalized, with live pricing and the full engraving template (zones + constraints). Call this FIRST so you know each zone's size, allowed fonts, character limits and minimum text size before building a design.
Input Schema
{
"type": "object",
"properties": {
"locale": {
"description": "BCP-47 locale (de, en, sv, nb, da, fr, es, it). Default de.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡upload_asset(filename, dataBase64)
Upload a logo/image (base64, PNG/JPEG/WebP/SVG, max 5 MB) for use in a design. Returns an assetId; reference it in an image object as { origin:"minio", bucket:"draft", key:"<assetId>" }. Images are re-encoded to PNG server-side (metadata stripped). No URLs — base64 only.
Input Schema
{
"type": "object",
"properties": {
"filename": {
"type": "string",
"maxLength": 256,
"description": "Original file name (label only; format is detected from bytes)."
},
"dataBase64": {
"type": "string",
"description": "Base64-encoded image bytes (PNG/JPEG/WebP/SVG). No URLs. Max 5 MB decoded."
}
},
"required": [
"filename",
"dataBase64"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_design(productRef, design)
Create a design draft for a product from a DesignDocumentV3. Returns status "valid" with a signed handoffUrl, or status "invalid" with a list of {path, code, message} errors you can fix and resubmit via update_design. Invalid drafts are still saved so you can iterate.
Input Schema
{
"type": "object",
"properties": {
"productRef": {
"type": "string",
"description": "A productRef from list_personalizable_products (e.g. \"welanda-can-60-black\")."
},
"design": {
"description": "A DesignDocumentV3 (mm-native). templateId/templateVersion are set by the service."
}
},
"required": [
"productRef",
"design"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢render_preview(designId, zoneId)
Render watermarked PNG preview(s) of a VALID design (all zones, or one via zoneId). Returns preview image URLs plus the watermarked preview as inline image content (one per zone) - show it to the user. If the render queue is busy it returns {status:"pending", retryAfterSec} - retry after that delay.
Input Schema
{
"type": "object",
"properties": {
"designId": {
"type": "string",
"description": "The dsg_… id to render."
},
"zoneId": {
"description": "Render a single zone; omit to render all zones.",
"type": "string"
}
},
"required": [
"designId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_design(designId)
Fetch a draft's current document, status, version, claimed flag, handoff link and previews by its designId.
Input Schema
{
"type": "object",
"properties": {
"designId": {
"type": "string",
"description": "The dsg_… id. Knowing the id grants access (128-bit + TTL)."
}
},
"required": [
"designId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡update_design(designId, design)
Replace a draft's design with a new full DesignDocumentV3 (version increments, previews invalidated). Same validation as create_design. Fails with CLAIMED once the customer has opened and claimed the draft in the editor.
Input Schema
{
"type": "object",
"properties": {
"designId": {
"type": "string",
"description": "The dsg_… id returned by create_design."
},
"design": {
"description": "A full replacement DesignDocumentV3 (no partial patches)."
}
},
"required": [
"designId",
"design"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_handoff_link(designId, locale)
Get the signed handoff deeplink plus a short English summary to present to the customer ("Engraving … on … Personalization +…€"). The customer fine-tunes and checks out themselves.
Input Schema
{
"type": "object",
"properties": {
"designId": {
"type": "string",
"description": "The dsg_… id to hand off to the customer."
},
"locale": {
"description": "Editor locale for the deeplink (de, en, sv, nb, da, fr, es, it). Default de.",
"type": "string"
}
},
"required": [
"designId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence