# 3D Printer on Demand (remote · 3dprinterondemand.com)

Quote, check and order 3D prints of STL, 3MF, STEP or OBJ files. Made in the USA, shipped in the US.

- Trust score: 86/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `3dprinterondemand.com`: 86/100 (this document), [markdown](https://verifymcp.io/servers/afontana77-3d-printer-on-demand/api-mcp.md), [page](https://verifymcp.io/servers/afontana77-3d-printer-on-demand/api-mcp)

## Channel facts

- Endpoint: `https://3dprinterondemand.com/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 82/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2230 tokens (~159/item across 14 items; 13 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 80/100
  - Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### How do I install the 3D Printer on Demand MCP server?

3D Printer on Demand is a hosted endpoint at https://3dprinterondemand.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http afontana77-3d-printer-on-demand 'https://3dprinterondemand.com/api/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "afontana77-3d-printer-on-demand": {
      "url": "https://3dprinterondemand.com/api/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "afontana77-3d-printer-on-demand": {
      "type": "http",
      "url": "https://3dprinterondemand.com/api/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.afontana77-3d-printer-on-demand]
url = "https://3dprinterondemand.com/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "afontana77-3d-printer-on-demand": {
      "type": "remote",
      "url": "https://3dprinterondemand.com/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add afontana77-3d-printer-on-demand --url 'https://3dprinterondemand.com/api/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  afontana77-3d-printer-on-demand:
    url: "https://3dprinterondemand.com/api/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "afontana77-3d-printer-on-demand": {
      "Transport": "http",
      "Url": "https://3dprinterondemand.com/api/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add afontana77-3d-printer-on-demand -t streamable-http -u 'https://3dprinterondemand.com/api/mcp'
```

### Other

```json
{
  "mcpServers": {
    "afontana77-3d-printer-on-demand": {
      "type": "http",
      "url": "https://3dprinterondemand.com/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 82, 0)

- [functional] New tool “combine_quotes”

### 2026-10-27 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-23 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (13)

### `get_print_quote` (~240 tokens)

Get a 3D print quote

Use this when someone asks how much it costs to 3D print a part, or wants a quote to have a 3D model (an STL, 3MF, STEP or OBJ file) printed and shipped by 3D Printer on Demand. It reads the attached file, checks that it can be printed, saves the quote, and returns the estimate with a private link that opens the saved quote on our website. When no file is attached, or the file type cannot be read, it returns a link to upload the file on our website. It does not cover drawings or photos.

Input parameters:

- `color` (string): Color name for the chosen material. Default is the material's first color.
- `material` (string): Material id, one of the listed values. Default petg.
- `model_file` (object): The STL, 3MF, STEP or OBJ file the user attached.
- `part_description` (string): What the user says this part is or what it is for, in their own words, if they said. Leave out if they did not.
- `quantity` (integer): How many copies of the part.

Output parameters:

- `color` (string)
- `currency` (string)
- `file_name` (string)
- `material` (string)
- `message` (string)
- `multi_color` (boolean)
- `next_step` (string)
- `order_fee_usd` (number)
- `outcome` (string)
- `price_held_days` (number)
- `price_per_part_usd` (number)
- `print_fit_notes` (array)
- `quantity` (number)
- `quote_url` (string)
- `review_url` (string)
- `shipping_usd` (number)
- `size_mm` (object)
- `subtotal_usd` (number)
- `total_usd` (number)
- `upload_url` (string)
- `valid_colors` (array)
- `valid_materials` (array)

### `update_print_quote` (~160 tokens)

Update a 3D print quote

Use this when someone wants a different quantity or color on a quote 3D Printer on Demand already gave them. It takes that quote's private link and the new quantity, works out the estimate again from the file saved with the quote, saves it, and returns the new estimate with a new private link. The earlier link keeps the earlier quote. It does not take a new file, a different material, or a link that did not come from one of our quotes.

Input parameters:

- `color` (string): A new color for the same material. Leave out to keep the saved color.
- `quantity` (integer, required): The new number of copies of the part.
- `quote_url` (string, required): The private quote link from an earlier quote in this chat.

Output parameters:

- `color` (string)
- `currency` (string)
- `file_name` (string)
- `material` (string)
- `message` (string)
- `multi_color` (boolean)
- `next_step` (string)
- `order_fee_usd` (number)
- `outcome` (string)
- `price_held_days` (number)
- `price_per_part_usd` (number)
- `print_fit_notes` (array)
- `quantity` (number)
- `quote_url` (string)
- `review_url` (string)
- `shipping_usd` (number)
- `size_mm` (object)
- `subtotal_usd` (number)
- `total_usd` (number)
- `upload_url` (string)
- `valid_colors` (array)
- `valid_materials` (array)

### `list_materials` (~83 tokens)

List print materials

Use this when someone asks which plastics 3D Printer on Demand prints, which colors each comes in, which material suits a job, or which materials are quoted by a person. It returns each material with what it is for, what it is not advised for, its colors and how it is quoted, plus plain guidance on comparing them. It returns no engineering figures.

Output parameters:

- `guidance` (array)
- `heat_rank_note` (string)
- `materials` (array)
- `materials_url` (string)
- `review_url` (string)
- `strength_note` (string)

### `get_service_details` (~75 tokens)

Get service details

Use this when someone asks how 3D Printer on Demand works: lead time, shipping, how long a quote is held, accepted file types, the largest part, the items we refuse to print, or where to upload a file, request a review or get in touch. It returns these facts as our website publishes them.

Output parameters:

- `brand` (string)
- `contact_email` (string)
- `expedite` (string)
- `file_types` (string)
- `file_types_in_chat` (array)
- `file_types_instant` (array)
- `file_types_review` (array)
- `freight_quote_over` (string)
- `largest_instant_part_mm` (number)
- `lead_time` (string)
- `lead_time_reviewed` (string)
- `made_in` (string)
- `materials` (string)
- `not_printed` (array)
- `part_size` (string)
- `quote_hold` (string)
- `quote_hold_days` (number)
- `review_follow_up` (string)
- `shipping` (string)
- `shipping_flat_usd` (number)
- `ships_to` (string)
- `urls` (object)

### `check_printability` (~176 tokens)

Check a 3D model for printing

Use this when someone attaches an STL, 3MF, STEP or OBJ file and wants to know whether it will 3D print well: size, walls, mesh problems and what to change. It reads the file, runs the same automatic design checks as our website, and stores nothing. It gives no quote. When no file is attached, it returns a link to upload the file on our website.

Input parameters:

- `material` (string): Material id the part would be printed in, if the user named one, one of the listed values.
- `model_file` (object): The STL, 3MF, STEP or OBJ file the user attached.
- `part_description` (string): What the user says this part is or what it is for, in their own words, if they said. Leave out if they did not.

Output parameters:

- `design_check_url` (string)
- `file_name` (string)
- `findings` (array)
- `fits_instant_size_limit` (boolean)
- `material` (string)
- `material_pricing_mode` (string)
- `message` (string)
- `multi_color` (boolean)
- `needs_person` (boolean)
- `notes` (array)
- `outcome` (string)
- `person_reasons` (array)
- `review_url` (string)
- `size_limit` (string)
- `size_mm` (object)
- `upload_url` (string)
- `volume_cm3` (number)

### `get_design_guidance` (~151 tokens)

Get 3D print design guidance

Use this when someone asks how to design a part for FDM 3D printing: wall thickness, tolerances, hole clearances, overhangs and supports, orientation, infill, bosses, ribs, snap fits, threaded inserts, dimensional accuracy, published material figures, or printing compared with molding or machining. It takes a topic or the question and returns short answers with their published sources and a link to the full page. It does not check a specific file.

Input parameters:

- `question` (string): The user's question in their own words. Used only to pick the topic and the most relevant answers.
- `topic` (string): The engineering topic, when it is clear which one the user means.

Output parameters:

- `available_topics` (array)
- `citation_rule` (string)
- `claim_classes` (array)
- `engineering_url` (string)
- `message` (string)
- `outcome` (string)
- `sources` (array)
- `topics` (array)

### `recommend_material` (~219 tokens)

Recommend a print material

Use this when someone wants help choosing which of our plastics suits a part, from where it will be used: indoor or outdoor, heat, impact, flexing, chemicals, looks and material cost. It returns the materials we offer that fit, best match first, the reasons in plain words, and the ones ruled out and why. It does not rank materials by strength or stiffness, and it sends safety-critical parts to a person.

Input parameters:

- `appearance` (string): high when looks and color choice matter.
- `chemical_exposure` (string): Contact with oils, fuels, cleaners or solvents. Default none.
- `cost_sensitivity` (string): high when keeping material cost low matters most.
- `environment` (string): Where the part lives. Default indoor.
- `flexibility` (string): flexible for parts that must bend and spring back, rigid for parts that must not.
- `heat_exposure` (string): How much heat the part sees in use. Default none.
- `impact` (string): high when the part takes knocks or drops.

Output parameters:

- `guidance` (array)
- `heat_rank_note` (string)
- `materials_url` (string)
- `message` (string)
- `outcome` (string)
- `properties_url` (string)
- `recommendations` (array)
- `review_url` (string)
- `ruled_out` (array)
- `selector_url` (string)
- `strength_note` (string)

### `compare_print_vs_molding` (~222 tokens)

Compare 3D printing with molding

Use this when someone wants to compare 3D printing with injection molding for a quantity, using their own numbers: quantity, printed unit cost, tooling cost and molded unit cost. It returns the totals for each, the crossover quantity on those numbers, and the published range with sources. It makes up no cost, and when a number is missing it says which.

Input parameters:

- `molded_unit_cost` (number): The user's cost per molded part once the tool exists, in US dollars.
- `printed_unit_cost` (number): The user's cost per printed part, in US dollars.
- `quantity` (integer): The total or yearly quantity to compare.
- `revision_cost` (number): Cost per tool revision, in US dollars.
- `setup_cost` (number): Setup or secondary cost per printed order, in US dollars. Default 0.
- `tool_revisions` (integer): Expected tool revisions. Default 0.
- `tooling_cost` (number): What the mold costs, in US dollars. 0 if the user has no tooling quote yet.

Output parameters:

- `assumptions` (array)
- `message` (string)
- `missing` (array)
- `notes` (array)
- `outcome` (string)
- `problems` (array)
- `published_range` (object)
- `reading` (array)
- `result` (object)
- `sources` (array)
- `table` (array)
- `tool_url` (string)

### `size_hole_or_tolerance` (~180 tokens)

Size a printed hole or fit

Use this when someone asks what clearance or hole size to draw for a printed fit: a sliding part, a bolt or pin through a hole, two printed parts that mate, a press fit, or a snap fit. It returns published starting clearances and hole guidance, each with its source, and how to test the fit. It gives no single universal hole offset, because none is published.

Input parameters:

- `fit_type` (string): What the fit is for: sliding-moving, bolt-clearance, pin-in-hole, mating-fdm-parts, press-interference or snap-fit.
- `hole_axis` (string): vertical-z when the hole goes through a top or bottom face, horizontal-xy when it goes through a side wall.
- `hole_diameter_mm` (number): The hole diameter the user plans to draw, in mm.

Output parameters:

- `citation_rule` (string)
- `fit` (object)
- `fit_types` (array)
- `guidance` (array)
- `hole` (object)
- `message` (string)
- `outcome` (string)
- `sources` (array)
- `tolerance_posture` (string)
- `urls` (object)

### `quote_from_link` (~317 tokens)

Quote a 3D print from a link

Use this when someone shares a link to a 3D model, such as a model page on Thingiverse or Printables or a direct link to an STL, 3MF, STEP or OBJ file, and wants a quote to have it printed and shipped by 3D Printer on Demand. It reads the model's licence where the site publishes one, gets the file, checks that it can be printed, saves the quote, and returns the estimate with a private link that opens the saved quote on our website. When the link offers several files, it lists them to pick from. Links that are not model pages with a licence need the person to confirm they have the right to print the file.

Input parameters:

- `color` (string): Color name for the chosen material. Default is the material's first color.
- `file_key` (string): The file_key of one file from an earlier answer that listed several files for this link.
- `link` (string, required): The link to the model page or to the file, starting with https.
- `material` (string): Material id, one of the listed values. Default petg.
- `part_description` (string): What the user says this part is or what it is for, in their own words, if they said. Leave out if they did not.
- `quantity` (integer): How many copies of the part.
- `rights_confirmed` (boolean): True only when the person has said they own this file or have the right to have it printed. Leave out otherwise.

Output parameters:

- `color` (string)
- `currency` (string)
- `file_name` (string)
- `files` (array)
- `material` (string)
- `message` (string)
- `multi_color` (boolean)
- `next_step` (string)
- `order_fee_usd` (number)
- `outcome` (string)
- `price_held_days` (number)
- `price_per_part_usd` (number)
- `print_fit_notes` (array)
- `quantity` (number)
- `quote_url` (string)
- `review_url` (string)
- `shipping_usd` (number)
- `size_mm` (object)
- `source` (object)
- `subtotal_usd` (number)
- `total_usd` (number)
- `upload_url` (string)
- `valid_colors` (array)
- `valid_materials` (array)

### `get_order_status` (~98 tokens)

Check an order's status

Use this when someone who ordered from 3D Printer on Demand asks where their order is or what state it is in. It takes the private order link from their order email and returns the order's status, its parts, how many have shipped, and any tracking numbers. It does not show the shipping address and it does not change the order.

Input parameters:

- `order_link` (string, required): The private order link from the order confirmation or shipping email.

Output parameters:

- `expedited` (boolean)
- `message` (string)
- `need_by` (string)
- `order_number` (string)
- `outcome` (string)
- `packages` (array)
- `paid` (boolean)
- `parts` (array)
- `placed_on` (string)
- `status` (string)
- `status_detail` (string)
- `totals` (object)

### `reorder_from_order` (~103 tokens)

Reorder parts from an earlier order

Use this when someone wants the same parts again from an earlier 3D Printer on Demand order. It takes the private order link from their order email, works out a new estimate for each part from the files saved with that order, and returns a private link to review the parts and order them on our website. It takes no payment and does not change the earlier order.

Input parameters:

- `order_link` (string, required): The private order link from the order confirmation or shipping email.

Output parameters:

- `message` (string)
- `needs_review` (array)
- `next_step` (string)
- `order_number` (string)
- `outcome` (string)
- `parts` (array)
- `reorder_url` (string)
- `review_url` (string)

### `combine_quotes` (~126 tokens)

Combine quotes into one order

Use this when someone has two or more quotes from 3D Printer on Demand in this chat and wants to order the parts together. It takes the private quote links, saves one quote that holds all the parts, and returns its private link with one combined total and one shipping charge, next to what the quotes cost ordered one by one. It does not change the earlier quotes, and it does not take a quote made outside this chat or a part still waiting for a person.

Input parameters:

- `quote_urls` (array, required): The private quote links from earlier quotes in this chat, one per part.

Output parameters:

- `currency` (string)
- `link_number` (number)
- `message` (string)
- `next_step` (string)
- `outcome` (string)
- `parts` (array)
- `price_held_days` (number)
- `quote_url` (string)
- `saved_usd` (number)
- `separate_total_usd` (number)
- `shipping_usd` (number)
- `total_usd` (number)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/afontana77-3d-printer-on-demand/api-mcp#diagnostics

## Score history

- 2026-11-05: 86
- 2026-11-04: 86
- 2026-11-03: 85
- 2026-11-02: 85
- 2026-11-01: 84
- 2026-10-31: 84
- 2026-10-30: 83
- 2026-10-29: 83
- 2026-10-28: 82
- 2026-10-27: 82
- 2026-10-26: 81
- 2026-10-25: 81
- 2026-10-24: 80
- 2026-10-23: 80
- 2026-10-22: 79
- 2026-10-21: 79
- 2026-10-20: 79
- 2026-10-19: 78
- 2026-10-18: 78
- 2026-10-17: 77
- 2026-10-16: 77
- 2026-10-15: 76
- 2026-10-14: 76
- 2026-10-13: 75
- 2026-10-12: 75

## Common questions

### What is the 3D Printer on Demand MCP server?

3D Printer on Demand is an MCP server listed in the public MCP registry as io.github.AFontana77/3d-printer-on-demand. Quote, check and order 3D prints of STL, 3MF, STEP or OBJ files. Made in the USA, shipped in the US. This page covers its hosted endpoint (https://3dprinterondemand.com/api/mcp).

### Is the 3D Printer on Demand MCP server safe to use?

3D Printer on Demand scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the 3D Printer on Demand MCP server expose?

3D Printer on Demand exposes 13 tools: get_print_quote, update_print_quote, list_materials, get_service_details, check_printability, and 8 more. Their descriptions and schemas cost roughly 2,150 tokens of context every time the server is loaded.

### Does the 3D Printer on Demand MCP server require authentication?

No. We connected to 3D Printer on Demand without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the 3D Printer on Demand MCP server still maintained?

3D Printer on Demand is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://3dprinterondemand.com/api/mcp
- Website: https://3dprinterondemand.com/ai-assistants
- Changelog RSS feed: https://verifymcp.io/servers/afontana77-3d-printer-on-demand/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/afontana77-3d-printer-on-demand/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/afontana77-3d-printer-on-demand/api-mcp
