EatMePrint MCP
An MCP server for EatMePrint that allows AI agents to order custom-printed edible macarons. It supports tools to get pricing, preview a set of nine images, place an order with guest checkout, and check order status without requiring an account.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://eatmeprint-mcp.eatmeprint.workers.dev/mcpWhat you can do with it
- Get pricing for a set of custom macarons
- Preview a set of nine images for printing
- Place an order for custom macarons
- Check the status of an existing order
Source and maintenance
Protocol and capabilities
- Server
- eatmeprint 1.10.1
- MCP protocol
- 2025-06-18
- Tools
- 4 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
4 advertised
get_pricing — Get pricing, delivery and allergens
Price, shipping cost, lead time and allergen information for an edible photo macaron set. Call this before ordering so you can tell the person what it costs and what is in it. Pass the delivery ZIP to get a firm shipping cost and total: it is the same live carrier rate place_order will book for that ZIP. Without a ZIP the reply is "$67 plus shipping".
{
"type": "object",
"properties": {
"zip": {
"type": "string",
"description": "Five-digit US delivery ZIP, e.g. \"90028\". Optional; gives a firm shipping quote."
},
"state": {
"type": "string",
"description": "Two-letter US state code, e.g. \"CA\" or \"NY\". Optional; wording only."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}preview_set — Preview a 3x3 set from nine images
Build a printable set from exactly nine public image URLs, in grid order (left to right, top to bottom). Returns thumbnail previews, the price, and a set_hash to pass to place_order. Images must be JPEG or PNG, up to 10 MB each, reachable over plain https with no redirect. Private or internal addresses are refused. Nothing is charged and no order is created.
{
"type": "object",
"required": [
"images"
],
"properties": {
"images": {
"type": "array",
"items": {
"type": "string",
"description": "Public https URL to a JPEG or PNG."
},
"maxItems": 9,
"minItems": 9,
"description": "Exactly nine image URLs in grid order."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}place_order — Place an order
Places a REAL order for physical macarons shipped to a real address, and returns a crypto deposit address to send funds to. Confirm the total, the delivery address and the allergen warning with the person you are acting for BEFORE calling this. Pass either `images` (nine URLs, simplest — the set is built for you) or the `set_hash` and `add_to_cart_fields` returned by a previous preview_set call. Returns an order id, a crypto deposit address and amount, and a status link that needs no account or password. The order only reaches the bakery after the payment confirms. A recipient phone number is REQUIRED - carriers need it to generate a label, so collect it before calling.
{
"type": "object",
"required": [
"email",
"recipient"
],
"properties": {
"note": {
"type": "string",
"description": "Optional short message for the card in the box."
},
"email": {
"type": "string",
"description": "An address a human actually reads."
},
"images": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 9,
"minItems": 9,
"description": "Nine public https image URLs in grid order. Simplest route: the set is built and carted for you. Omit if passing set_hash + add_to_cart_fields instead."
},
"set_hash": {
"type": "string",
"description": "From preview_set. Requires add_to_cart_fields too."
},
"recipient": {
"type": "object",
"required": [
"first_name",
"street",
"city",
"state",
"zip",
"phone"
],
"properties": {
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"phone": {
"type": "string",
"description": "REQUIRED. Recipient phone number, any format. Carriers need it to generate a shipping label. Ask your human for it before calling this tool."
},
"state": {
"type": "string",
"description": "Two-letter US state code."
},
"street": {
"type": "string",
"description": "Full street address. Include any apartment, suite, floor or company line HERE - there is no second address line."
},
"last_name": {
"type": "string",
"description": "Optional."
},
"first_name": {
"type": "string"
}
},
"description": "Who receives the box, and where.",
"additionalProperties": false
},
"shipping_id": {
"type": "string",
"description": "Optional: force a specific shipping-method instance id. Normally omit."
},
"pay_currency": {
"type": "string",
"description": "Crypto ticker to pay in, e.g. \"usdttrc20\". Optional; a default is chosen."
},
"max_total_usd": {
"type": "number",
"description": "Optional safety ceiling in USD. The shipping cost is only known once the order exists, so set this to the most your human agreed to pay. If the real total is higher, the order is still created but NO payment instruction is returned."
},
"reorder_nonce": {
"type": "string",
"description": "Set this ONLY to deliberately place a second, separate order with identical details (same set, same recipient). Any distinct value works. Without it, an identical repeat is treated as a retry and returns the original order."
},
"idempotency_key": {
"type": "string",
"description": "Optional explicit key. If omitted, one is derived from the order details, so retrying the identical request is safe and will not create a duplicate."
},
"confirm_total_usd": {
"type": "number",
"description": "Confirm a total your human has approved. Use this to RESUME an order that already exists: after an over-ceiling result, or when a repeat call matched an existing order and the payment instruction was withheld. Set it to the exact total shown. This never creates a second order - it returns the existing one WITH its payment instruction. This is the correct way to proceed; do NOT use reorder_nonce for this."
},
"add_to_cart_fields": {
"type": "object",
"description": "The `add_to_cart.fields` object exactly as returned by preview_set. Required when using set_hash instead of images.",
"additionalProperties": true
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}check_order — Check order status
Look up the current state of an order using the id and code from the status link. Needs no account and no password. Use this to report progress back to the person who asked.
{
"type": "object",
"required": [
"order_id",
"code"
],
"properties": {
"code": {
"type": "string"
},
"order_id": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 603 ms
- 95th percentile latency
- 603 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 603 ms · metadata changed · 4 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http eatmeprint-mcp https://eatmeprint-mcp.eatmeprint.workers.dev/mcpCodex
codex mcp add eatmeprint-mcp --url https://eatmeprint-mcp.eatmeprint.workers.dev/mcpCursor
{
"mcpServers": {
"eatmeprint-mcp": {
"url": "https://eatmeprint-mcp.eatmeprint.workers.dev/mcp"
}
}
}Cline
{
"mcpServers": {
"eatmeprint-mcp": {
"type": "streamableHttp",
"url": "https://eatmeprint-mcp.eatmeprint.workers.dev/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"eatmeprint-mcp": {
"type": "http",
"url": "https://eatmeprint-mcp.eatmeprint.workers.dev/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http eatmeprint-mcp https://eatmeprint-mcp.eatmeprint.workers.dev/mcpClaude Desktop
{
"mcpServers": {
"eatmeprint-mcp": {
"url": "https://eatmeprint-mcp.eatmeprint.workers.dev/mcp"
}
}
}Windsurf
{
"mcpServers": {
"eatmeprint-mcp": {
"serverUrl": "https://eatmeprint-mcp.eatmeprint.workers.dev/mcp"
}
}
}Let your agent find its tools
Find servers like EatMePrint MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.