WELANDA Engraving Designer
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Design a laser engraving for a WELANDA snus case, preview it and hand the user a checkout link.
| Author | com.welanda |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 480 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"WELANDA Engraving Designer": {
"url": "https://mcp.welanda.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (7)
list_personalizable_productsList 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.
Parameters:
locale— string — BCP-47 locale (de, en, sv, nb, da, fr, es, it). Default de.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
upload_assetUpload 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.
Parameters:
filename(required) — string — Original file name (label only; format is detected from bytes).dataBase64(required) — string — Base64-encoded image bytes (PNG/JPEG/WebP/SVG). No URLs. Max 5 MB decoded.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_designCreate 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.
Parameters:
productRef(required) — string — A productRef from list_personalizable_products (e.g. "welanda-can-60-black").design(required) — A DesignDocumentV3 (mm-native). templateId/templateVersion are set by the service.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
render_previewRender 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.
Parameters:
designId(required) — string — The dsg_… id to render.zoneId— string — Render a single zone; omit to render all zones.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_designFetch a draft's current document, status, version, claimed flag, handoff link and previews by its designId.
Parameters:
designId(required) — string — The dsg_… id. Knowing the id grants access (128-bit + TTL).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
update_designReplace 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.
Parameters:
designId(required) — string — The dsg_… id returned by create_design.design(required) — A full replacement DesignDocumentV3 (no partial patches).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_handoff_linkGet 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.
Parameters:
designId(required) — string — The dsg_… id to hand off to the customer.locale— string — Editor locale for the deeplink (de, en, sv, nb, da, fr, es, it). Default de.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.