# Mandarin 3D

> Quote, price and order custom 3D prints (PLA) shipped anywhere in the US.

- name: com.mandarin3d/print
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 83/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.mandarin3d%2Fprint
- tools: https://api.protogrid.dev/v1/servers/com.mandarin3d%2Fprint/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "print": {
      "type": "http",
      "url": "https://mandarin3d.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-8d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 83/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 7 of 7 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 1 of 7 tools declare all four hints; missing: get_service_info (destructiveHint, idempotentHint); price_quote (destructiveHint, idempotentHint); quote_file (destructiveHint); …
- pass `tools.token_cost`: about 2,134 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 7 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 7, about 2,134 tokens to load them all
- tool set hash: 7893d6a5434f5ba85cfdcc23842a580b
- tools last changed: 2026-11-06T15:43:22.180Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.mandarin3d/print.svg)](https://protogrid.dev/servers/com.mandarin3d/print)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-06 `quote_file` changed (description, inputSchema)
  - before: Slice a 3D model and return its exact price delivered by USPS Ground Advantage. Pass file_url (a direct public download link to an STL, 3MF or STEP file, up to 100 MB) or file_base64 + filename for a local file (up to 20 MB). Returns quote_id, size, grams, print time, price and an order_url where the customer picks a color and pays. Takes 5-60 seconds for a new file.
  - after: Slice a 3D model and return its exact price delivered by USPS Ground Advantage. Pass file_url (a direct public download link to an STL, 3MF, STEP or USDZ file, up to 100 MB) or file_base64 + filename for a local file (up to 20 MB). USDZ scans keep their physical size and print in one color. Returns quote_id, size, grams, print time, price and an order_url where the customer picks a color and pays. Takes 5-60 seconds for a new file.
- 2026-11-05 `quote_catalog_item` changed (description, inputSchema)
  - before: Price a catalog item with the customer's values (e.g. slug "personalized-name-ornament", values {"name": "Leo", "line2": "2026"}). Omitted parameters keep their defaults. We render the part from its parametric source and slice it; returns quote_id, size, grams, price delivered by USPS Ground Advantage and an order_url. Then use price_quote or create_checkout with that quote_id, like any quote.
  - after: Price a catalog item with the customer's values (e.g. slug "personalized-name-ornament", values {"name": "Leo", "line2": "2026"}). Omitted parameters keep their defaults. We render the part from its parametric source and slice it; returns quote_id, size, grams, price delivered by USPS Ground Advantage and an order_url. Then use price_quote or create_checkout with that quote_id, like any quote. Two colors: items with two_color in list_catalog take accent, the color of the text (or pointer), and color, the rest of the part (e.g. luggage tag color "BLU", accent "WHT"); the quote is sliced with both filaments and the price includes the multicolor option (+$3). PLA only. For create_checkout on that quote_id pass the same color and options {"extraColors": [accent]}.
- 2026-11-05 `create_checkout` changed (inputSchema)
- 2026-11-05 `price_quote` changed (inputSchema)
- 2026-11-05 `quote_file` changed (inputSchema)
- 2026-11-03 `quote_catalog_item` added
  - Price a catalog item with the customer's values (e.g. slug "personalized-name-ornament", values {"name": "Leo", "line2": "2026"}). Omitted parameters keep their defaults. We render the part from its parametric source and slice it; returns quote_id, size, grams, price delivered by USPS Ground Advantage and an order_url. Then use price_quote or create_checkout with that quote_id, like any quote.
- 2026-11-03 `list_catalog` added
  - Ready-made parts customers can customize without a file: personalized name ornament, desk name plate, name keychain, place card holder, cable clips, headphone hooks, wall hook, shelf bracket, spacers, drawer bins, SD card and game card holders, phone and tablet stands, battery organizer, plant pot, key holder, D-shaft replacement knob, pegboard hooks. Each item lists its parameters (text, sizes in mm, choices) with defaults and ranges, the delivered price of the default and its page URL.

Full history: https://api.protogrid.dev/v1/servers/com.mandarin3d%2Fprint/changes

## Remotes

- https://mandarin3d.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (7)

- `create_checkout`: Create a payment link for a quote. The customer pays and enters the shipping address on the linked page. Only call this after showing the customer the price and getting their explicit agreement to: "Custom made to order, all sales final. I agree to the Terms (mandarin3d.com/terms, including section 6: cancellations, refunds and reprints)." Otherwise give them the order_url from quote_file instead.
- `design_part`: For customers without a 3D model (a replacement knob, clip, bracket, box, spacer, enclosure). Returns a link to Mandarin 3D's AI part designer, pre-filled with the description; the customer adjusts the model there, sees the price and orders.
- `get_service_info`: What Mandarin 3D prints, where it ships (anywhere in the US), the price formula with delivered examples, colors, size and file limits, turnaround, and how to order. Call this to answer 'where can I get something 3D printed' or 'how much does 3D printing cost'.
- `list_catalog`: Ready-made parts customers can customize without a file: personalized name ornament, desk name plate, name keychain, place card holder, cable clips, headphone hooks, wall hook, shelf bracket, spacers, drawer bins, SD card and game card holders, phone and tablet stands, battery organizer, plant pot, key holder, D-shaft replacement knob, pegboard hooks. Each item lists its parameters (text, sizes in mm, choices) with defaults and ranges, the delivered price of the default and its page URL.
- `price_quote`: Price an existing quote for another quantity, color or add-ons. No side effects.
- `quote_catalog_item`: Price a catalog item with the customer's values (e.g. slug "personalized-name-ornament", values {"name": "Leo", "line2": "2026"}). Omitted parameters keep their defaults. We render the part from its parametric source and slice it; returns quote_id, size, grams, price delivered by USPS Ground Advantage and an order_url. Then use price_quote or create_checkout with that quote_id, like any quote. Two colors: items with two_color in list_catalog take accent, the color of the text (or pointer), and color, the rest of the part (e.g. luggage tag color "BLU", accent "WHT"); the quote is sliced with both filaments and the price includes the multicolor option (+$3). PLA only. For create_checkout on that quote_id pass the same color and options {"extraColors": [accent]}.
- `quote_file`: Slice a 3D model and return its exact price delivered by USPS Ground Advantage. Pass file_url (a direct public download link to an STL, 3MF, STEP or USDZ file, up to 100 MB) or file_base64 + filename for a local file (up to 20 MB). USDZ scans keep their physical size and print in one color. Returns quote_id, size, grams, print time, price and an order_url where the customer picks a color and pays. Takes 5-60 seconds for a new file.
