Print shop for AI agents: business cards, flyers, posters. Returns a proof, a price and a pay 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.
Check the state of an order from the link returned by create_business_card, update_business_card or print_design. Use it after the user says they have paid, or when they ask whether their order went through. The result's state is one of: none (the user has not started checkout), started (checkout was opened but nothing is paid yet), paid (paid and in production), refunded (paid and later refunded), canceled (canceled before it was paid), failed (the payment did not go through), or unknown (the link does not match any proof). The order is complete only when the state is paid. Once an order exists the result also gives statusUrl, the user's own page for following that order, which you can pass on to them.
The order link returned by create_business_card, update_business_card or print_design, or the id inside it.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http designprint https://thedesignprint.com/mcp
Check the state of an order from the link returned by create_business_card, update_business_card or print_design. Use it after the user says they have paid, or when they ask whether their order went through. The result's state is one of: none (the user has not started checkout), started (checkout was opened but nothing is paid yet), paid (paid and in production), refunded (paid and later refunded), canceled (canceled before it was paid), failed (the payment did not go through), or unknown (the link does not match any proof). The order is complete only when the state is paid. Once an order exists the result also gives statusUrl, the user's own page for following that order, which you can pass on to them.
| Argument | Type | Description |
|---|---|---|
| order* | string | The order link returned by create_business_card, update_business_card or print_design, or the id inside it. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"order"
],
"properties": {
"order": {
"type": "string",
"maxLength": 400,
"minLength": 8,
"description": "The order link returned by create_business_card, update_business_card or print_design, or the id inside it."
}
},
"additionalProperties": false
}Make print-ready business cards from a person's details and get a link to order them. Designprint fills one of its own card designs (front and back, 3.5 x 2 in), so you do not design anything yourself. Before calling, ask the user for their name and how to reach them (phone, email or website); title, company, tagline, address and a logo are optional. Returns a preview of both sides, the price (with shipping options and an estimated total when you pass a quantity) and one link where the user approves the card, picks a quantity and pays as a guest (no account). Call it once per card. To change a detail, the design or the color afterwards, call update_business_card with the link: the card keeps its link. Calling create_business_card again makes a second card with a different link. The job is finished only when the user has paid: after they say they have, call check_order to confirm. Use this whenever the user wants business cards made or printed and has not already designed them.
| Argument | Type | Description |
|---|---|---|
| name* | string | Full name as it should appear on the card. |
| string | Email address. | |
| phone | string | Phone number, written the way it should print. |
| style | string | Card design. Defaults to classic. classic: White card, dark ink, a thin color rule. Clean and safe for any business. noir: Near-black card with warm gold details and a serif name. Formal, premium. warm: Cream card, espresso ink, terracotta accent and a serif name. Friendly, crafted. bold: Big name over a solid color band that holds the contact details. Modern, confident. |
| title | string | Job title or role, e.g. 'Owner'. |
| address | string | Street address on one line. |
| channel | string | Where the request comes from, e.g. 'claude', 'chatgpt', 'cursor', 'terminal'. |
| company | string | Business or organization name. |
| tagline | string | Short line shown under the company name on the back of the card. |
| website | string | Website address. |
| logo_url | string | https link to a logo image (PNG, JPG or SVG). Shown on the back and small on the front. If it cannot be loaded the card is made without it and the warnings say so. |
Look at a business card as it is right now: its details, both sides as pictures, a description of each side in words, whether it can still be changed, and its order link. Use it before answering a question about a card you made earlier, because the user can change the card themselves on the site before paying. It changes nothing. Pass the order link returned by create_business_card, or the id in it.
| Argument | Type | Description |
|---|---|---|
| order* | string | The order link returned by create_business_card, or the id inside it. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"order"
],
"properties": {
"order": {
"type": "string",
"maxLength": 400,
"minLength": 8,
"description": "The order link returned by create_business_card, or the id inside it."
}
},
"additionalProperties": false
}Print something the user already designed in this chat as a flat, single-sided print: a poster, flyer, sign, invitation, menu or similar. Send exactly one of design_html (the design as a complete HTML document) or image_url (a public link to an image); a call with neither is refused. Give the finished size with width_in and height_in, each from 1 to 60 inches. The design is printed edge to edge at exactly that size: no bleed or margin is added, so author it at the true print size and keep text away from the edges. Only the first page is printed, and anything that does not fit on it is left off. An image is fitted inside the size without stretching or cropping, and any space left over stays white. If the size is left out, an image is sized from its pixels at 300 per inch and HTML is sized from how it lays out in a desktop browser window (at least 13.3 x 7.5 in), so always give the size for HTML. It is priced by printed area. The result states the size it will print at, the price per print at that size, a link to a preview image and one order link; on the order page the user picks a quantity and shipping, sees the final amount and pays as a guest (no account). Nothing is printed until they pay: after they say they have, call check_order to confirm. For business cards made from a person's name and contact details use create_business_card instead, which also prints both sides.
| Argument | Type | Description |
|---|---|---|
| title | string | A short name for the order, shown on the order page, e.g. 'Baby shower invite'. |
| channel | string | Where the request comes from, e.g. 'claude', 'chatgpt', 'cursor'. Defaults to 'claude'. |
| width_in | number | Finished width in inches, 1 to 60. Give it together with height_in. A value outside the range is moved to the nearest limit and the result says so. |
| height_in |
Change a business card that create_business_card already made: a detail, the design, the color or the quantity. Pass the order link (or the id in it) as order, plus only the fields that change. A field you leave out keeps its current value; a field sent as an empty string is taken off the card. The card keeps the same order link, so the user does not need a new one. Returns the new preview of both sides, the price and the same link, exactly like create_business_card. It works until the card is paid for; after that the card is fixed, and a different card needs a new create_business_card call. Use this for every change the user asks for after the first proof.
| Argument | Type | Description |
|---|---|---|
| name | string | New name. Leave it out to keep the current one. |
| string | New email address. Leave it out to keep the current one; send an empty string to take it off the card. | |
| order* | string | The order link returned by create_business_card, or the id inside it. |
| phone | string | New phone number. Leave it out to keep the current one; send an empty string to take it off the card. |
| style | string | New card design. Leave it out to keep the current one. classic: White card, dark ink, a thin color rule. Clean and safe for any business. noir: Near-black card with warm gold details and a serif name. Formal, premium. warm: Cream card, espresso ink, terracotta accent and a serif name. Friendly, crafted. bold: Big name over a solid color band that holds the contact details. Modern, confident. |
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 15, 2026.
| quantity | integer | How many cards the user wants, if they said. There is a minimum order; a smaller number is raised to the minimum and the change is reported in the warnings. With a quantity, the result also gives the shipping options and an estimated total. It is preselected on the order page. |
| accent_color | string | Hex color that replaces the design's accent, e.g. '#0E7C66'. Use the brand color if the user has one. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Full name as it should appear on the card."
},
"email": {
"type": "string",
"maxLength": 80,
"description": "Email address."
},
"phone": {
"type": "string",
"maxLength": 40,
"description": "Phone number, written the way it should print."
},
"style": {
"enum": [
"classic",
"noir",
"warm",
"bold"
],
"type": "string",
"description": "Card design. Defaults to classic. classic: White card, dark ink, a thin color rule. Clean and safe for any business. noir: Near-black card with warm gold details and a serif name. Formal, premium. warm: Cream card, espresso ink, terracotta accent and a serif name. Friendly, crafted. bold: Big name over a solid color band that holds the contact details. Modern, confident."
},
"title": {
"type": "string",
"maxLength": 80,
"description": "Job title or role, e.g. 'Owner'."
},
"address": {
"type": "string",
"maxLength": 120,
"description": "Street address on one line."
},
"channel": {
"type": "string",
"maxLength": 40,
"description": "Where the request comes from, e.g. 'claude', 'chatgpt', 'cursor', 'terminal'."
},
"company": {
"type": "string",
"maxLength": 80,
"description": "Business or organization name."
},
"tagline": {
"type": "string",
"maxLength": 100,
"description": "Short line shown under the company name on the back of the card."
},
"website": {
"type": "string",
"maxLength": 80,
"description": "Website address."
},
"logo_url": {
"type": "string",
"format": "uri",
"description": "https link to a logo image (PNG, JPG or SVG). Shown on the back and small on the front. If it cannot be loaded the card is made without it and the warnings say so."
},
"quantity": {
"type": "integer",
"maximum": 100000,
"description": "How many cards the user wants, if they said. There is a minimum order; a smaller number is raised to the minimum and the change is reported in the warnings. With a quantity, the result also gives the shipping options and an estimated total. It is preselected on the order page.",
"exclusiveMinimum": 0
},
"accent_color": {
"type": "string",
"pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
"description": "Hex color that replaces the design's accent, e.g. '#0E7C66'. Use the brand color if the user has one."
}
},
"additionalProperties": false
}| number |
| Finished height in inches, 1 to 60. Give it together with width_in. |
| image_url | string | Public web address of the image to print (PNG, JPG, WebP or SVG), when there is no HTML. |
| design_html | string | The design as one complete HTML document, with its styles inside it. Send this or image_url, not both. Fonts and images it links to must be public web addresses; they are loaded when the proof is made. Up to about 10 MB. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"title": {
"type": "string",
"description": "A short name for the order, shown on the order page, e.g. 'Baby shower invite'."
},
"channel": {
"type": "string",
"description": "Where the request comes from, e.g. 'claude', 'chatgpt', 'cursor'. Defaults to 'claude'."
},
"width_in": {
"type": "number",
"description": "Finished width in inches, 1 to 60. Give it together with height_in. A value outside the range is moved to the nearest limit and the result says so.",
"exclusiveMinimum": 0
},
"height_in": {
"type": "number",
"description": "Finished height in inches, 1 to 60. Give it together with width_in.",
"exclusiveMinimum": 0
},
"image_url": {
"type": "string",
"format": "uri",
"description": "Public web address of the image to print (PNG, JPG, WebP or SVG), when there is no HTML."
},
"design_html": {
"type": "string",
"description": "The design as one complete HTML document, with its styles inside it. Send this or image_url, not both. Fonts and images it links to must be public web addresses; they are loaded when the proof is made. Up to about 10 MB."
}
},
"additionalProperties": false
}| title |
| string |
| New job title. Leave it out to keep the current one; send an empty string to take it off the card. |
| address | string | New address. Leave it out to keep the current one; send an empty string to take it off the card. |
| company | string | New company name. Leave it out to keep the current one; send an empty string to take it off the card. |
| tagline | string | New line for the back of the card. Leave it out to keep the current one; send an empty string to take it off. |
| website | string | New website. Leave it out to keep the current one; send an empty string to take it off the card. |
| logo_url | string | New https link to a logo image. Leave it out to keep the current one; send an empty string to remove the logo. |
| quantity | integer | New quantity. Leave it out to keep the one already asked for. How many cards the user wants, if they said. There is a minimum order; a smaller number is raised to the minimum and the change is reported in the warnings. With a quantity, the result also gives the shipping options and an estimated total. It is preselected on the order page. |
| accent_color | string | New hex accent color, e.g. '#0E7C66'. Leave it out to keep the current one; send an empty string to go back to the design's own color. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"order"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "New name. Leave it out to keep the current one."
},
"email": {
"type": "string",
"maxLength": 80,
"description": "New email address. Leave it out to keep the current one; send an empty string to take it off the card."
},
"order": {
"type": "string",
"maxLength": 400,
"minLength": 8,
"description": "The order link returned by create_business_card, or the id inside it."
},
"phone": {
"type": "string",
"maxLength": 40,
"description": "New phone number. Leave it out to keep the current one; send an empty string to take it off the card."
},
"style": {
"enum": [
"classic",
"noir",
"warm",
"bold"
],
"type": "string",
"description": "New card design. Leave it out to keep the current one. classic: White card, dark ink, a thin color rule. Clean and safe for any business. noir: Near-black card with warm gold details and a serif name. Formal, premium. warm: Cream card, espresso ink, terracotta accent and a serif name. Friendly, crafted. bold: Big name over a solid color band that holds the contact details. Modern, confident."
},
"title": {
"type": "string",
"maxLength": 80,
"description": "New job title. Leave it out to keep the current one; send an empty string to take it off the card."
},
"address": {
"type": "string",
"maxLength": 120,
"description": "New address. Leave it out to keep the current one; send an empty string to take it off the card."
},
"company": {
"type": "string",
"maxLength": 80,
"description": "New company name. Leave it out to keep the current one; send an empty string to take it off the card."
},
"tagline": {
"type": "string",
"maxLength": 100,
"description": "New line for the back of the card. Leave it out to keep the current one; send an empty string to take it off."
},
"website": {
"type": "string",
"maxLength": 80,
"description": "New website. Leave it out to keep the current one; send an empty string to take it off the card."
},
"logo_url": {
"type": "string",
"pattern": "^(?:https?:\\/\\/\\S+)?$",
"maxLength": 2000,
"description": "New https link to a logo image. Leave it out to keep the current one; send an empty string to remove the logo."
},
"quantity": {
"type": "integer",
"maximum": 100000,
"description": "New quantity. Leave it out to keep the one already asked for. How many cards the user wants, if they said. There is a minimum order; a smaller number is raised to the minimum and the change is reported in the warnings. With a quantity, the result also gives the shipping options and an estimated total. It is preselected on the order page.",
"exclusiveMinimum": 0
},
"accent_color": {
"type": "string",
"pattern": "^(?:#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}))?$",
"description": "New hex accent color, e.g. '#0E7C66'. Leave it out to keep the current one; send an empty string to go back to the design's own color."
}
},
"additionalProperties": false
}