# Standard Blanks

> Search blank apparel, check availability, price orders and build a cart on standardblanks.com.

- name: com.standardblanks/shop
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 96/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.standardblanks%2Fshop
- tools: https://api.protogrid.dev/v1/servers/com.standardblanks%2Fshop/tools

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

## Connection (mcpServers)

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


## Trust

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

## Quality 96/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### 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: 100 (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`: 5 of 5 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,856 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 100 (weight 15)

- pass `stability.changes`: 3 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

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

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

- tools: 5, about 1,856 tokens to load them all
- tool set hash: 9901eefe0708726ac282914b11cdda77
- tools last changed: 2026-11-12T02:45:17.393Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.standardblanks/shop.svg)](https://protogrid.dev/servers/com.standardblanks/shop)
- 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-12 `quote` changed (description, inputSchema)
  - before: Exact prices for a set of SKUs and quantities, as the Standard Blanks cart would charge them: each line's unit price (set by its style's total units), the merchandise subtotal, shipping, and the total before tax. Pass ship_to_zip for that ZIP's shipping and estimated delivery dates (estimates, not guarantees); without it, shipping assumes a contiguous-US address and no dates are given. Sales tax is calculated at checkout. Creates nothing.
  - after: Exact prices for a set of SKUs and quantities, as the Standard Blanks cart would charge them: each line's unit price (set by its style's total units), the merchandise subtotal, shipping, and the total before tax. Pass ship_to_zip for that ZIP's shipping and estimated delivery dates (estimates, not guarantees); add need_by (YYYY-MM-DD) with it to learn whether the order is estimated to arrive by that date, and which lines would miss it; without a ZIP, shipping assumes a contiguous-US address and no dates are given. Sales tax is calculated at checkout. Creates nothing.
- 2026-10-26 `search_catalog` changed (inputSchema)
- 2026-10-25 `search_catalog` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/com.standardblanks%2Fshop/changes

## Remotes

- https://standardblanks.com/mcp/shop (streamable-http, auth none, reachable true, uptime30d 0.9220779)

## Packages

_none_

## Tools (5)

- `build_cart`: Create a cart of SKUs and quantities and return a link (claimUrl) that opens it in the shopper's cart on standardblanks.com, where they review it and check out. It does not take payment or place an order. Give the shopper the link. Limits: 40 lines, $5,000 of merchandise; the link works for 7 days.
- `get_inventory`: Whether one variant is available now: in_stock, low (a dozen or fewer), out_of_stock, or unknown. Pass its SKU, or the product slug with color and size.
- `get_product`: Details for one product, by slug (from search_catalog) or by any of its variant SKUs: description, colors with images and availability, sizes, the size chart (garment measurements), fabric specs, and how well it takes each decoration method (screen print, DTG, embroidery, sublimation, heat-transfer vinyl, discharge, DTF). Pass `color` to also get that color's sizes, each with its SKU and availability.
- `quote`: Exact prices for a set of SKUs and quantities, as the Standard Blanks cart would charge them: each line's unit price (set by its style's total units), the merchandise subtotal, shipping, and the total before tax. Pass ship_to_zip for that ZIP's shipping and estimated delivery dates (estimates, not guarantees); add need_by (YYYY-MM-DD) with it to learn whether the order is estimated to arrive by that date, and which lines would miss it; without a ZIP, shipping assumes a contiguous-US address and no dates are given. Sales tax is calculated at checkout. Creates nothing.
- `search_catalog`: Search Standard Blanks' blank apparel by keywords and filters. Returns up to 20 products with name, brand, slug, the lowest single-unit price ("from" price, in cents), availability, image and product page URL. When the query names a color or size, matchedColors lists the colors of that style that match (best first) and url opens the page on that color; an empty matchedColors for a query that named a color means that style is not sold in it. signal reports typo corrections and any words the search had to drop. Use the slug with get_product.
