# NEVINI Wines

> Search the wines of NEVINI, a Dutch wine importer, and build Shopify carts with a checkout link.

- name: wine.nevini/shop
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 89/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/wine.nevini%2Fshop
- tools: https://api.protogrid.dev/v1/servers/wine.nevini%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://nevini.wine/api/mcp/"
    }
  }
}
```


## Trust

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

## Quality 89/100 (good)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 600000)

### 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`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,761 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: 50 (weight 15)

- warn `stability.changes`: 9 tool changes in 30 days
- fail `stability.rug_pull`: 3 tools kept their name but changed most of their description in 30 days; review before trusting them
- 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: 8, about 2,761 tokens to load them all
- tool set hash: f489959a7e0c1afbc86ce56437e841e5
- tools last changed: 2026-10-26T11:24:22.768Z
- badge: [![protogrid quality](https://protogrid.dev/badge/wine.nevini/shop.svg)](https://protogrid.dev/servers/wine.nevini/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-10-26 `get_cart` changed (description, outputSchema) **meaning changed**
  - before: Returns the current lines, live prices, subtotal and checkout_url of a cart. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. NEVINI sells alcohol. The buyer and the recipient must be 18 or older (Dutch Alcohol Act); orders for anyone under 18 are not allowed. The order is only placed once the customer opens the checkout and completes the order. The recipient's age may be checked on delivery; have a valid ID ready.
  - after: Returns the current lines, live prices, subtotal and checkout_url of a cart. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. It changes nothing; use it to show the cart again or to look up line_id for update_cart.
- 2026-10-26 `update_cart` changed (description, outputSchema) **meaning changed**
  - before: Sets the quantity of existing cart lines by line_id; quantity 0 removes a line. Returns the updated cart and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. NEVINI sells alcohol. The buyer and the recipient must be 18 or older (Dutch Alcohol Act); orders for anyone under 18 are not allowed. The order is only placed once the customer opens the checkout and completes the order. The recipient's age may be checked on delivery; have a valid ID ready.
  - after: Sets the quantity of existing cart lines by line_id; quantity 0 removes a line. Returns the updated cart and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. line_id comes from create_cart, add_to_cart or get_cart; use add_to_cart for wines that are not in the cart yet.
- 2026-10-26 `add_to_cart` changed (description, outputSchema) **meaning changed**
  - before: Adds wine variants to an existing cart; quantities add up with lines already in the cart. Returns the updated cart and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. NEVINI sells alcohol. The buyer and the recipient must be 18 or older (Dutch Alcohol Act); orders for anyone under 18 are not allowed. The order is only placed once the customer opens the checkout and completes the order. The recipient's age may be checked on delivery; have a valid ID ready.
  - after: Adds wine variants to an existing cart; quantities add up with lines already in the cart. Returns the updated cart and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. Use create_cart when there is no cart yet and update_cart to change or remove lines already in the cart.
- 2026-10-26 `create_cart` changed (description, outputSchema)
  - before: Creates a new Shopify cart with wine variants (variant_id from search_wines or get_wine) and returns cart_id, the items with live prices, the subtotal and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. NEVINI sells alcohol. The buyer and the recipient must be 18 or older (Dutch Alcohol Act); orders for anyone under 18 are not allowed. The order is only placed once the customer opens the checkout and completes the order. The recipient's age may be checked on delivery; have a valid ID ready. Requires buyer_is_18_or_older: true, set only after the user has confirmed being 18 or older.
  - after: Creates a new Shopify cart with wine variants (variant_id from search_wines or get_wine) and returns cart_id, the items with live prices, the subtotal and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. Requires buyer_is_18_or_older: true, set only after the user has confirmed being 18 or older. To add wines to a cart the user already has, use add_to_cart instead.
- 2026-10-26 `get_store_info` changed (description)
  - before: Returns NEVINI store facts: company and contact details, contact availability, pickup in Maastricht, shipping rates, countries and delivery times, returns, age policy, payment, hospitality services, policy URLs and how ordering through this server works.
  - after: Returns NEVINI store facts: company and contact details, contact availability, pickup in Maastricht, shipping rates, countries and delivery times, returns, age policy, payment, hospitality services, policy URLs and how ordering through this server works. Use it for questions about delivery, pickup, returns, payment or contact; for wines use search_wines.
- 2026-10-26 `get_catalog_overview` changed (description)
  - before: Returns an overview of the NEVINI range: wine counts per type, country and category page, the most common grapes, the top selection and the verified price range.
  - after: Returns an overview of the NEVINI range: wine counts per type, country and category page, the most common grapes, the top selection and the verified price range. Use it to see what the range covers; use search_wines to find wines and get_wine for one wine.
- 2026-10-26 `get_wine` changed (description)
  - before: Returns one wine by slug, numeric id, name or wine URL: description, grapes, taste notes, serving temperature, rating, every bottle size with its variant_id, live price and availability, and related wines. taste lists every taste note; food_pairing is the pairing sentence quoted from the description, or null when it names no dish. default_variant_id is the standard bottle of the wine (0.75 L for most wines) and is null unless that bottle is purchasable; default_size is its size. Sizes marked on_request cannot be ordered online.
  - after: Returns one wine by slug, numeric id, name or wine URL: description, grapes, taste notes, serving temperature, rating, every bottle size with its variant_id, live price and availability, and related wines. taste lists every taste note; food_pairing is the pairing sentence quoted from the description, or null when it names no dish. default_variant_id is the standard bottle of the wine (0.75 L for most wines) and is null unless that bottle is purchasable; default_size is its size. Sizes marked on_request cannot be ordered online. Use search_wines first when the user describes a wine rather than naming it.
- 2026-10-26 `search_wines` changed (description)
  - before: Searches the NEVINI wine catalog by free text and filters (type, country, region, grape, verified price range, availability). query matches name, winery, grape, region, country, type and vintage; use type, country, region, grape, min_price_eur, max_price_eur and sort for style and budget, and food for dishes. Returns compact wine summaries with live Shopify price and availability, the first four taste notes and food_pairing (a sentence quoted from the wine description, or null). default_variant_id is the standard bottle of the wine (0.75 L for most wines) and is null unless that bottle is purchasable; default_size is its size, e.g. "0.75L" or "1.5L" for a magnum. Other bottle sizes, all taste notes and the full description are in get_wine. type "sparkling" includes Champagne.
  - after: Searches the NEVINI wine catalog by free text and filters (type, country, region, grape, verified price range, availability). query matches name, winery, grape, region, country, type and vintage; use type, country, region, grape, min_price_eur, max_price_eur and sort for style and budget, and food for dishes. Returns compact wine summaries with live Shopify price and availability, the first four taste notes and food_pairing (a sentence quoted from the wine description, or null). default_variant_id is the standard bottle of the wine (0.75 L for most wines) and is null unless that bottle is purchasable; default_size is its size, e.g. "0.75L" or "1.5L" for a magnum. type "sparkling" includes Champagne. Use get_wine for other bottle sizes, all taste notes and the full description, get_catalog_overview for what the range covers and get_store_info for delivery, pickup or contact.
- 2026-10-26 `create_cart` changed (description, inputSchema)
  - before: Creates a new Shopify cart with wine variants (variant_id from search_wines or get_wine) and returns cart_id, the items with live prices, the subtotal and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. NEVINI sells alcohol. The buyer and the recipient must be 18 or older (Dutch Alcohol Act); orders for anyone under 18 are not allowed. The order is only placed once the customer opens the checkout and completes the order. The recipient's age may be checked on delivery; have a valid ID ready. Requires buyer_is_18_or_older: true.
  - after: Creates a new Shopify cart with wine variants (variant_id from search_wines or get_wine) and returns cart_id, the items with live prices, the subtotal and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. NEVINI sells alcohol. The buyer and the recipient must be 18 or older (Dutch Alcohol Act); orders for anyone under 18 are not allowed. The order is only placed once the customer opens the checkout and completes the order. The recipient's age may be checked on delivery; have a valid ID ready. Requires buyer_is_18_or_older: true, set only after the user has confirmed being 18 or older.

Full history: https://api.protogrid.dev/v1/servers/wine.nevini%2Fshop/changes

## Remotes

- https://nevini.wine/api/mcp/ (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (8)

- `add_to_cart`: Adds wine variants to an existing cart; quantities add up with lines already in the cart. Returns the updated cart and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. Use create_cart when there is no cart yet and update_cart to change or remove lines already in the cart.
- `create_cart`: Creates a new Shopify cart with wine variants (variant_id from search_wines or get_wine) and returns cart_id, the items with live prices, the subtotal and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. Requires buyer_is_18_or_older: true, set only after the user has confirmed being 18 or older. To add wines to a cart the user already has, use add_to_cart instead.
- `get_cart`: Returns the current lines, live prices, subtotal and checkout_url of a cart. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. It changes nothing; use it to show the cart again or to look up line_id for update_cart.
- `get_catalog_overview`: Returns an overview of the NEVINI range: wine counts per type, country and category page, the most common grapes, the top selection and the verified price range. Use it to see what the range covers; use search_wines to find wines and get_wine for one wine.
- `get_store_info`: Returns NEVINI store facts: company and contact details, contact availability, pickup in Maastricht, shipping rates, countries and delivery times, returns, age policy, payment, hospitality services, policy URLs and how ordering through this server works. Use it for questions about delivery, pickup, returns, payment or contact; for wines use search_wines.
- `get_wine`: Returns one wine by slug, numeric id, name or wine URL: description, grapes, taste notes, serving temperature, rating, every bottle size with its variant_id, live price and availability, and related wines. taste lists every taste note; food_pairing is the pairing sentence quoted from the description, or null when it names no dish. default_variant_id is the standard bottle of the wine (0.75 L for most wines) and is null unless that bottle is purchasable; default_size is its size. Sizes marked on_request cannot be ordered online. Use search_wines first when the user describes a wine rather than naming it.
- `search_wines`: Searches the NEVINI wine catalog by free text and filters (type, country, region, grape, verified price range, availability). query matches name, winery, grape, region, country, type and vintage; use type, country, region, grape, min_price_eur, max_price_eur and sort for style and budget, and food for dishes. Returns compact wine summaries with live Shopify price and availability, the first four taste notes and food_pairing (a sentence quoted from the wine description, or null). default_variant_id is the standard bottle of the wine (0.75 L for most wines) and is null unless that bottle is purchasable; default_size is its size, e.g. "0.75L" or "1.5L" for a magnum. type "sparkling" includes Champagne. Use get_wine for other bottle sizes, all taste notes and the full description, get_catalog_overview for what the range covers and get_store_info for delivery, pickup or contact.
- `update_cart`: Sets the quantity of existing cart lines by line_id; quantity 0 removes a line. Returns the updated cart and checkout_url. No order is placed and no payment is taken here; checkout_url opens the checkout on shop.nevini.wine. line_id comes from create_cart, add_to_cart or get_cart; use add_to_cart for wines that are not in the cart yet.
