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

A
Description quality
97%
Schema completeness
96%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~988Tokens (tool definitions)
~855 BTypical response size
Moderate attention impact (0.77% of 128k context)

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-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools