# 3D Print Everything

> Get 3D printing and manufacturing quoted by a person, shipped anywhere in the US.

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

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "print-shop": {
      "type": "http",
      "url": "https://3dprinteverything.org/mcp"
    }
  }
}
```


## Trust

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

## Quality 79/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: 71 (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
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_capabilities (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); check_order (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); escalate_to_human (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,464 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no 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: 6, about 1,464 tokens to load them all
- tool set hash: dc16beb2987329ef594c9234a363c058
- badge: [![protogrid quality](https://protogrid.dev/badge/org.3dprinteverything/print-shop.svg)](https://protogrid.dev/servers/org.3dprinteverything/print-shop)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://3dprinteverything.org/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (6)

- `attach_files`: Send the geometry as base64 bytes. Quotes need it — a job with no file waits for one. Accepts STL, 3MF, OBJ, STEP, IGES, PLY, DXF, SVG, images and PDF. Up to 10 files, 50MB each. We will not fetch a URL for you; send the bytes.
- `check_geometry`: Send an STL, 3MF or OBJ and get back its real size, volume, roughly how much plastic it needs, and whether it fits on one plate. Instant, no human involved, nothing is ordered.

Use this BEFORE submit_job whenever your human has a file. It catches the things that waste everyone's day — a part that is 340mm tall and has to be split, a file exported in inches so it arrives 25x too small, a mesh with no solid volume.

It does NOT return a price and never will. Orientation, supports and finishing decide the price and a person here decides those. Do not infer a price from the grams.
- `check_order`: Where the job has got to. Once a person has priced it this returns the quote, what is outstanding, and links for your HUMAN to approve and pay. Relay those links to them — tapping them is their job, not yours. Poll this when your human asks rather than on a timer; nothing here changes faster than a person works.
- `escalate_to_human`: Hand a question to a human at the shop. Use it the moment you are asked something you cannot actually know — whether a material is food safe or dishwasher safe, whether a colour can be matched, whether a part will hold a given load, anything about tolerances, or any request to change a price or a deadline.

Guessing is the thing to avoid here. Your human will believe an answer that came through the shop's own tool, and a wrong one costs them money and costs the shop a customer. Calling this is free and always the better move: it flags the job and messages the owner directly.

Say nothing definite while you wait.
- `get_capabilities`: Services, materials, turnaround, limits, and exactly what you as an assistant can and cannot do here. Read this first if you have not worked with this shop before.
- `submit_job`: Opens a request with the shop. A person reviews it and sends a quote, usually within one business day. The customer is emailed immediately telling them you did this for them. Nothing is charged and no price is agreed. Returns an order id and a token — keep both, they are how you attach files and check back.
