Search the wines of NEVINI, a Dutch wine importer, and build Shopify carts with a checkout link.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Wines to add. Duplicate variant ids are merged; a cart holds at most 25 different variants.
cart_id exactly as returned by create_cart, including its ?key= part.
Language of item names and of the checkout: "nl" (default) or "en".
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Tool list last changed Oct 26, 2026.
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.
| Argument | Type | Description |
|---|---|---|
| items* | array | Wines to add. Duplicate variant ids are merged; a cart holds at most 25 different variants. |
| cart_id* | string | cart_id exactly as returned by create_cart, including its ?key= part. |
| language | string | Language of item names and of the checkout: "nl" (default) or "en". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"cart_id",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"variant_id",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 24,
"minimum": 1,
"description": "Number of bottles, 1-24."
},
"variant_id": {
"type": "string",
"pattern": "^gid:\\/\\/shopify\\/ProductVariant\\/\\d+$",
"maxLength": 80,
"description": "Shopify variant id from search_wines (default_variant_id) or get_wine (variants[].variant_id)."
}
},
"additionalProperties": false
},
"maxItems": 25,
"minItems": 1,
"description": "Wines to add. Duplicate variant ids are merged; a cart holds at most 25 different variants."
},
"cart_id": {
"type": "string",
"maxLength": 1024,
"minLength": 1,
"description": "cart_id exactly as returned by create_cart, including its ?key= part."
},
"language": {
"enum": [
"nl",
"en"
],
"type": "string",
"description": "Language of item names and of the checkout: \"nl\" (default) or \"en\"."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| items* | array | Wines to add. Duplicate variant ids are merged; a cart holds at most 25 different variants. |
| language | string | Language of item names and of the checkout: "nl" (default) or "en". |
| buyer_is_18_or_older* | boolean | Confirms that the buyer is 18 or older and that the order is not for anyone under 18. Set it to true only after the user has said so in this conversation; if they have not, ask them first. The cart is only created when this is true. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"items",
"buyer_is_18_or_older"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"variant_id",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 24,
"minimum": 1,
"description": "Number of bottles, 1-24."
},
"variant_id": {
"type": "string",
"pattern": "^gid:\\/\\/shopify\\/ProductVariant\\/\\d+$",
"maxLength": 80,
"description": "Shopify variant id from search_wines (default_variant_id) or get_wine (variants[].variant_id)."
}
},
"additionalProperties": false
},
"maxItems": 25,
"minItems": 1,
"description": "Wines to add. Duplicate variant ids are merged; a cart holds at most 25 different variants."
},
"language": {
"enum": [
"nl",
"en"
],
"type": "string",
"description": "Language of item names and of the checkout: \"nl\" (default) or \"en\"."
},
"buyer_is_18_or_older": {
"type": "boolean",
"description": "Confirms that the buyer is 18 or older and that the order is not for anyone under 18. Set it to true only after the user has said so in this conversation; if they have not, ask them first. The cart is only created when this is true."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| cart_id* | string | cart_id exactly as returned by create_cart, including its ?key= part. |
| language | string | Language of item names and of the checkout: "nl" (default) or "en". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"cart_id"
],
"properties": {
"cart_id": {
"type": "string",
"maxLength": 1024,
"minLength": 1,
"description": "cart_id exactly as returned by create_cart, including its ?key= part."
},
"language": {
"enum": [
"nl",
"en"
],
"type": "string",
"description": "Language of item names and of the checkout: \"nl\" (default) or \"en\"."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| language | string | Response language: "nl" (Dutch, default) or "en" (English). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"language": {
"enum": [
"nl",
"en"
],
"type": "string",
"description": "Response language: \"nl\" (Dutch, default) or \"en\" (English)."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| language | string | Response language: "nl" (Dutch, default) or "en" (English). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"language": {
"enum": [
"nl",
"en"
],
"type": "string",
"description": "Response language: \"nl\" (Dutch, default) or \"en\" (English)."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| wine* | string | Wine slug (e.g. "guerriero-della-terra"), numeric id, wine name or nevini.wine wine URL. |
| language | string | Response language: "nl" (Dutch, default) or "en" (English). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"wine"
],
"properties": {
"wine": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Wine slug (e.g. \"guerriero-della-terra\"), numeric id, wine name or nevini.wine wine URL."
},
"language": {
"enum": [
"nl",
"en"
],
"type": "string",
"description": "Response language: \"nl\" (Dutch, default) or \"en\" (English)."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| food | string | Dish or food in Dutch or English, e.g. "seafood", "oysters", "lamb", "cheese", "pasta" or "aperitif". Matches whole words and word prefixes in food_pairing, the pairing sentence quoted from each wine description, with a few synonyms (fish/vis, seafood/zeevruchten, meat/vlees, cheese/kaas). Wines whose description names no dish are left out. |
| sort | string | Sort order. Default "relevance"; without a query, editorial picks come first. |
| type | string | Wine type. "sparkling" includes Champagne. |
| grape | string | Grape variety, e.g. "Nebbiolo". |
| limit | integer | Maximum number of results, 1-20. Default 8. |
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.
| Argument | Type | Description |
|---|---|---|
| lines* | array | |
| cart_id* | string | cart_id exactly as returned by create_cart, including its ?key= part. |
| language | string | Language of item names and of the checkout: "nl" (default) or "en". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"cart_id",
"lines"
],
"properties": {
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"line_id",
"quantity"
],
"properties": {
"line_id": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "line_id of an item in the latest cart result."
},
"quantity": {
"type": "integer",
"maximum": 24,
"minimum": 0,
"description": "New number of bottles, 0-24; 0 removes the line."
}
},
"additionalProperties": false
},
"maxItems": 25,
"minItems": 1
},
"cart_id": {
"type": "string",
"maxLength": 1024,
"minLength": 1,
"description": "cart_id exactly as returned by create_cart, including its ?key= part."
},
"language": {
"enum": [
"nl",
"en"
],
"type": "string",
"description": "Language of item names and of the checkout: \"nl\" (default) or \"en\"."
}
},
"additionalProperties": false
}| query | string | Free text in Dutch or English, matched against wine name, winery, grape, region, country, type and vintage, e.g. "amarone" or "red wine tuscany". Taste, food and budget words are not matched; use the filters, food and sort for those. |
| region | string | Region, e.g. "Toscane", "Tuscany" or "Bordeaux". |
| country | string | Country name in Dutch or English, or ISO code, e.g. "IT". |
| language | string | Response language: "nl" (Dutch, default) or "en" (English). |
| max_price_eur | number | Highest verified bottle price in EUR. Wines without a verified current price are left out when a price filter is set. |
| min_price_eur | number | Lowest verified bottle price in EUR. Wines without a verified current price are left out when a price filter is set. |
| available_only | boolean | Only wines that can be ordered online now. Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"food": {
"type": "string",
"maxLength": 100,
"description": "Dish or food in Dutch or English, e.g. \"seafood\", \"oysters\", \"lamb\", \"cheese\", \"pasta\" or \"aperitif\". Matches whole words and word prefixes in food_pairing, the pairing sentence quoted from each wine description, with a few synonyms (fish/vis, seafood/zeevruchten, meat/vlees, cheese/kaas). Wines whose description names no dish are left out."
},
"sort": {
"enum": [
"relevance",
"price_asc",
"price_desc",
"rating"
],
"type": "string",
"description": "Sort order. Default \"relevance\"; without a query, editorial picks come first."
},
"type": {
"enum": [
"red",
"white",
"rose",
"sparkling",
"champagne",
"dessert"
],
"type": "string",
"description": "Wine type. \"sparkling\" includes Champagne."
},
"grape": {
"type": "string",
"maxLength": 60,
"description": "Grape variety, e.g. \"Nebbiolo\"."
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum number of results, 1-20. Default 8."
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Free text in Dutch or English, matched against wine name, winery, grape, region, country, type and vintage, e.g. \"amarone\" or \"red wine tuscany\". Taste, food and budget words are not matched; use the filters, food and sort for those."
},
"region": {
"type": "string",
"maxLength": 100,
"description": "Region, e.g. \"Toscane\", \"Tuscany\" or \"Bordeaux\"."
},
"country": {
"type": "string",
"maxLength": 60,
"description": "Country name in Dutch or English, or ISO code, e.g. \"IT\"."
},
"language": {
"enum": [
"nl",
"en"
],
"type": "string",
"description": "Response language: \"nl\" (Dutch, default) or \"en\" (English)."
},
"max_price_eur": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Highest verified bottle price in EUR. Wines without a verified current price are left out when a price filter is set."
},
"min_price_eur": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Lowest verified bottle price in EUR. Wines without a verified current price are left out when a price filter is set."
},
"available_only": {
"type": "boolean",
"description": "Only wines that can be ordered online now. Default false."
}
},
"additionalProperties": false
}