Design a laser engraving for a WELANDA snus case, preview it and hand the user a checkout link.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
A DesignDocumentV3 (mm-native). templateId/templateVersion are set by the service.
A productRef from list_personalizable_products (e.g. "welanda-can-60-black").
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| design* | any | A DesignDocumentV3 (mm-native). templateId/templateVersion are set by the service. |
| productRef* | string | A productRef from list_personalizable_products (e.g. "welanda-can-60-black"). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"productRef",
"design"
],
"properties": {
"design": {
"description": "A DesignDocumentV3 (mm-native). templateId/templateVersion are set by the service."
},
"productRef": {
"type": "string",
"description": "A productRef from list_personalizable_products (e.g. \"welanda-can-60-black\")."
}
}
}Fetch a draft's current document, status, version, claimed flag, handoff link and previews by its designId.
| Argument | Type | Description |
|---|---|---|
| designId* | string | The dsg_… id. Knowing the id grants access (128-bit + TTL). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"designId"
],
"properties": {
"designId": {
"type": "string",
"description": "The dsg_… id. Knowing the id grants access (128-bit + TTL)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| locale | string | Editor locale for the deeplink (de, en, sv, nb, da, fr, es, it). Default de. |
| designId* | string | The dsg_… id to hand off to the customer. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"designId"
],
"properties": {
"locale": {
"type": "string",
"description": "Editor locale for the deeplink (de, en, sv, nb, da, fr, es, it). Default de."
},
"designId": {
"type": "string",
"description": "The dsg_… id to hand off to the customer."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| locale | string | BCP-47 locale (de, en, sv, nb, da, fr, es, it). Default de. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"locale": {
"type": "string",
"description": "BCP-47 locale (de, en, sv, nb, da, fr, es, it). Default de."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| zoneId | string | Render a single zone; omit to render all zones. |
| designId* | string | The dsg_… id to render. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"designId"
],
"properties": {
"zoneId": {
"type": "string",
"description": "Render a single zone; omit to render all zones."
},
"designId": {
"type": "string",
"description": "The dsg_… id to render."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| design* | any | A full replacement DesignDocumentV3 (no partial patches). |
| designId* | string | The dsg_… id returned by create_design. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"designId",
"design"
],
"properties": {
"design": {
"description": "A full replacement DesignDocumentV3 (no partial patches)."
},
"designId": {
"type": "string",
"description": "The dsg_… id returned by create_design."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| filename* | string | Original file name (label only; format is detected from bytes). |
| dataBase64* | string | Base64-encoded image bytes (PNG/JPEG/WebP/SVG). No URLs. Max 5 MB decoded. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"filename",
"dataBase64"
],
"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."
}
}
}