Instant prices, mockups and quote requests for custom UV-printed and laser-engraved drinkware.
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.
Put the customer's logo (and up to 2 text lines) on a cup. Returns design_id, design_version, an artwork check (preflight) and a mockup_url. Upload the customer's own file as base64 (PNG, JPG, SVG or PDF, up to 25 MB). Partner agent keys may pass an idempotency_key so a retry does not make a second design.
A colour slug from list_cups for that cup
Print coverage offered on that cup (list_cups)
From list_cups
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http karved-quotes https://karved-designs.alfredai2026.workers.dev/api/v2/mcp
Put the customer's logo (and up to 2 text lines) on a cup. Returns design_id, design_version, an artwork check (preflight) and a mockup_url. Upload the customer's own file as base64 (PNG, JPG, SVG or PDF, up to 25 MB). Partner agent keys may pass an idempotency_key so a retry does not make a second design.
| Argument | Type | Description |
|---|---|---|
| colour* | string | A colour slug from list_cups for that cup |
| artwork* | object | |
| coverage* | string | Print coverage offered on that cup (list_cups) |
| text_lines | array | |
| blank_shape_id* | string | From list_cups |
| idempotency_key | string |
{
"type": "object",
"required": [
"blank_shape_id",
"colour",
"coverage",
"artwork"
],
"properties": {
"colour": {
"type": "string",
"description": "A colour slug from list_cups for that cup"
},
"artwork": {
"type": "object",
"required": [
"filename",
"content_type",
"data_base64"
],
"properties": {
"filename": {
"type": "string"
},
"data_base64": {
"type": "string"
},
"content_type": {
"type": "string",
"description": "e.g. image/png, image/svg+xml, application/pdf"
}
}
},
"coverage": {
"enum": [
"logo_front",
"front_back",
"full_wrap",
"name_monogram"
],
"type": "string",
"description": "Print coverage offered on that cup (list_cups)"
},
"text_lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"content",
"font_id"
],
"properties": {
"content": {
"type": "string"
},
"font_id": {
"type": "string"
}
}
},
"maxItems": 2
},
"blank_shape_id": {
"type": "string",
"description": "From list_cups"
},
"idempotency_key": {
"type": "string",
"maxLength": 128
}
}
}A mockup image URL of the design on the cup, optionally in another colour of the same cup. A preview, not a proof.
| Argument | Type | Description |
|---|---|---|
| colour | string | Colour slug from list_cups |
| design_id* | string | The dsn_ id create_design returned |
| design_version* | integer | The design version create_design returned |
{
"type": "object",
"required": [
"design_id",
"design_version"
],
"properties": {
"colour": {
"type": "string",
"description": "Colour slug from list_cups"
},
"design_id": {
"type": "string",
"description": "The dsn_ id create_design returned"
},
"design_version": {
"type": "integer",
"minimum": 1,
"description": "The design version create_design returned"
}
}
}The posted price for a quantity of this design (cups + art prep fee, no shipping). For 50 or more, full wraps not sold online, or business accounts it returns quote_required: then use request_quote.
| Argument | Type | Description |
|---|---|---|
| qty* | integer | |
| design_id* | string | The dsn_ id create_design returned |
| design_version* | integer | The design version create_design returned |
{
"type": "object",
"required": [
"design_id",
"design_version",
"qty"
],
"properties": {
"qty": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"design_id": {
"type": "string",
"description": "The dsn_ id create_design returned"
},
"design_version": {
"type": "integer",
"minimum": 1,
"description": "The design version create_design returned"
}
}
}The cups you can design on: blank_shape_id, name, colours, print coverages and fonts. Call this first.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Send this design, quantity and the customer's contact to Karved for a quote and proof. Only call it after the customer agreed. Our team replies by email within one business day. Nothing is charged or ordered.
| Argument | Type | Description |
|---|---|---|
| qty* | integer | |
| note | string | |
| company | string | |
| design_id* | string | The dsn_ id create_design returned |
| needed_by | string | The date or event, in the customer's words |
| customer_name* | string | |
| customer_email* | string | |
| design_version* | integer | The design version create_design returned |
{
"type": "object",
"required": [
"design_id",
"design_version",
"qty",
"customer_name",
"customer_email"
],
"properties": {
"qty": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"note": {
"type": "string",
"maxLength": 1000
},
"company": {
"type": "string",
"maxLength": 160
},
"design_id": {
"type": "string",
"description": "The dsn_ id create_design returned"
},
"needed_by": {
"type": "string",
"maxLength": 120,
"description": "The date or event, in the customer's words"
},
"customer_name": {
"type": "string",
"maxLength": 120
},
"customer_email": {
"type": "string",
"maxLength": 254
},
"design_version": {
"type": "integer",
"minimum": 1,
"description": "The design version create_design returned"
}
}
}Karved's own ready-made cup designs (gifts, hobbies, jobs, holidays, full wraps) matching the words given. Returns title, product page url, price per cup, image and a short description. The art is fixed; many designs take an optional name ($3 once per name and cup colour) on the product page. No art fee; ships in 5 business days. Send the customer the url to buy.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 8 |
| query* | string | What the customer wants, e.g. "nurse gift", "camo", "funny golf" |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Default 8"
},
"query": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "What the customer wants, e.g. \"nurse gift\", \"camo\", \"funny golf\""
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.