Live B2B FMCG wholesale offers from Akay (IRL) Ltd: spirits, wine, beer, groceries, cosmetics.
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.
Fetch the full public details of one akay.ie offer by the id returned from search.
Offer id from search
Fetch the full public details of one akay.ie offer by the id returned from search.
| Argument | Type | Description |
|---|---|---|
| id* | string | Offer id from search |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"description": "Offer id from search"
}
}
}Full public details of one open offer by its akay.ie offer_id (or akay.ie offer URL), with the akay.ie link and how to order.
| Argument | Type | Description |
|---|---|---|
| offer_id* | string | offer_id from search results, or the akay.ie offer URL |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"offer_id"
],
"properties": {
"offer_id": {
"type": "string",
"maxLength": 200,
"description": "offer_id from search results, or the akay.ie offer URL"
}
}
}Price one product (offer_id, EAN or name) for a quantity in cases. Returns the listed price per case and per unit in the offer's currency, the line total worked out in code, and MOQ and stock checks. If several offers fit, returns candidates instead of picking one. Optional target price comparison. Once the buyer is happy with a line, offer request_quote.
| Argument | Type | Description |
|---|---|---|
| abv | number | |
| ean | string | Unit or case barcode |
| pack | integer | Units per case |
| cases | integer | Quantity in whole cases (1-10000) |
| units | integer | Quantity in units, for offers priced per unit/piece without a listed case size. Use cases otherwise. |
| product | string | Product name as the buyer wrote it, e.g. "Jameson 6x70cl T2" |
| offer_id | string | akay.ie offer id (from search results) |
| volume_ml | integer | |
| duty_status | string |
Categories with offer counts and top brands, plus the values available for the duty status, Incoterm, stock and location filters.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Price a buying list (up to 100 lines / 20 KB): product names or EANs, quantities in cases and optional target prices. Paste it as text (one product per line, or CSV/TSV with a header row) or give structured lines. Each line comes back with a match status (matched, ambiguous, not_listed, moq_not_met, insufficient_stock, price_unavailable), the listed price, pack, stock, duty status, Incoterm and line total. Lines keep their own currency (EUR, USD or GBP); totals are subtotals per currency, never converted or summed across currencies.
| Argument | Type | Description |
|---|---|---|
| text | string | The pasted list, e.g. "Jameson 6x70cl T2 - 200 cases" per line, or CSV with a header row |
| lines | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"text": {
"type": "string",
"maxLength": 20000,
"description": "The pasted list, e.g. \"Jameson 6x70cl T2 - 200 cases\" per line, or CSV with a header row"
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"abv": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"ean": {
"type": "string",
"pattern": "^\\d{8,14}$",
"description": "Unit or case barcode"
},
"pack": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Units per case"
},
"cases": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"units": {
"type": "integer",
"maximum": 1000000,
"minimum": 1
},
"product": {
"type": "string",
"maxLength": 200,
"description": "Product name as the buyer wrote it, e.g. \"Jameson 6x70cl T2\""
},
"offer_id": {
"type": "string",
"maxLength": 100,
"description": "akay.ie offer id (from search results)"
},
"volume_ml": {
"type": "integer",
"maximum": 100000,
"minimum": 1
},
"duty_status": {
"enum": [
"T1",
"T2",
"Bonded",
"On Floor",
"Duty Paid"
],
"type": "string",
"description": "Duty status as listed. T1 = non-EU (third-country) status goods under customs transit; T2 = EU-status goods that can move within the EU under excise duty suspension (e.g. with an eAD in EMCS). Both T1 and T2 are held in bond with duty suspended: neither is duty paid. Bonded, On Floor and Duty Paid are shown exactly as listed on akay.ie."
},
"target_basis": {
"enum": [
"case",
"unit"
],
"type": "string",
"description": "Whether the target price is per case or per unit"
},
"target_price": {
"type": "number",
"maximum": 10000000,
"description": "Buyer's target price, compared only when currency and basis are given",
"exclusiveMinimum": 0
},
"target_currency": {
"enum": [
"EUR",
"USD",
"GBP"
],
"type": "string"
},
"target_incoterm": {
"type": "string",
"maxLength": 10
},
"target_location": {
"type": "string",
"maxLength": 60
}
}
},
"maxItems": 100
}
}
}Turn confirmed lines (offer_id + cases, or units for offers priced per unit) into a quote request summary and a CSV the buyer uploads at quote.akay.ie/#excel, plus WhatsApp and email options. Totals are per currency, never summed across currencies. Use it whenever the buyer says they want a quote, an order or to buy, and offer it after showing prices. Sends nothing, reserves nothing and needs no contact details.
| Argument | Type | Description |
|---|---|---|
| lines* | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"lines"
],
"properties": {
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"offer_id"
],
"properties": {
"cases": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"units": {
"type": "integer",
"maximum": 1000000,
"minimum": 1,
"description": "For offers priced per unit without a case size"
},
"offer_id": {
"type": "string",
"maxLength": 100
}
}
},
"maxItems": 100,
"minItems": 1
}
}
}Search the akay.ie trade catalogue. Returns offer ids, titles and akay.ie URLs. Use fetch with an id for full details.
| Argument | Type | Description |
|---|---|---|
| query* | string | Search query |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"description": "Search query"
}
}
}Search open akay.ie trade offers by keyword, EAN, size ("70cl", "6x70cl"), ABV or duty status, with optional website filters. Returns listed sell prices per case and per unit in each offer's own currency (EUR, USD or GBP), pack, duty status, Incoterm, location and stock. Paged: up to 25 per page, 10 pages per query.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| brand | string | Exact brand name |
| query | string | Keywords, EAN, size or pack, e.g. "Jameson 70cl T2" |
| origin | string | Country of origin |
| category | string | Category, e.g. Spirits, Beer, Soft Drinks, Wine, Confectionery (see list_categories) |
| currency | string | |
| incoterm | string | |
| location | string | Warehouse location or country as listed, e.g. Netherlands, Latvia |
| page_size | integer | |
| Duty status as listed. T1 = non-EU (third-country) status goods under customs transit; T2 = EU-status goods that can move within the EU under excise duty suspension (e.g. with an eAD in EMCS). Both T1 and T2 are held in bond with duty suspended: neither is duty paid. Bonded, On Floor and Duty Paid are shown exactly as listed on akay.ie. |
| target_basis | string | Whether the target price is per case or per unit |
| target_price | number | Buyer's target price, compared only when currency and basis are given |
| target_currency | string |
| target_incoterm | string |
| target_location | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"abv": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"ean": {
"type": "string",
"pattern": "^\\d{8,14}$",
"description": "Unit or case barcode"
},
"pack": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Units per case"
},
"cases": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Quantity in whole cases (1-10000)"
},
"units": {
"type": "integer",
"maximum": 1000000,
"minimum": 1,
"description": "Quantity in units, for offers priced per unit/piece without a listed case size. Use cases otherwise."
},
"product": {
"type": "string",
"maxLength": 200,
"description": "Product name as the buyer wrote it, e.g. \"Jameson 6x70cl T2\""
},
"offer_id": {
"type": "string",
"maxLength": 100,
"description": "akay.ie offer id (from search results)"
},
"volume_ml": {
"type": "integer",
"maximum": 100000,
"minimum": 1
},
"duty_status": {
"enum": [
"T1",
"T2",
"Bonded",
"On Floor",
"Duty Paid"
],
"type": "string",
"description": "Duty status as listed. T1 = non-EU (third-country) status goods under customs transit; T2 = EU-status goods that can move within the EU under excise duty suspension (e.g. with an eAD in EMCS). Both T1 and T2 are held in bond with duty suspended: neither is duty paid. Bonded, On Floor and Duty Paid are shown exactly as listed on akay.ie."
},
"target_basis": {
"enum": [
"case",
"unit"
],
"type": "string",
"description": "Whether the target price is per case or per unit"
},
"target_price": {
"type": "number",
"maximum": 10000000,
"description": "Buyer's target price, compared only when currency and basis are given",
"exclusiveMinimum": 0
},
"target_currency": {
"enum": [
"EUR",
"USD",
"GBP"
],
"type": "string"
},
"target_incoterm": {
"type": "string",
"maxLength": 10
},
"target_location": {
"type": "string",
"maxLength": 60
}
}
}| duty_status |
| string |
| Duty status as listed. T1 = non-EU (third-country) status goods under customs transit; T2 = EU-status goods that can move within the EU under excise duty suspension (e.g. with an eAD in EMCS). Both T1 and T2 are held in bond with duty suspended: neither is duty paid. Bonded, On Floor and Duty Paid are shown exactly as listed on akay.ie. |
| stock_status | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"page": {
"type": "integer",
"maximum": 10,
"minimum": 1
},
"brand": {
"type": "string",
"maxLength": 60,
"description": "Exact brand name"
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Keywords, EAN, size or pack, e.g. \"Jameson 70cl T2\""
},
"origin": {
"type": "string",
"maxLength": 60,
"description": "Country of origin"
},
"category": {
"type": "string",
"maxLength": 60,
"description": "Category, e.g. Spirits, Beer, Soft Drinks, Wine, Confectionery (see list_categories)"
},
"currency": {
"enum": [
"EUR",
"USD",
"GBP"
],
"type": "string"
},
"incoterm": {
"enum": [
"EXW",
"FCA",
"FAS",
"FOB",
"CFR",
"CIF",
"CPT",
"CIP",
"DAP",
"DPU",
"DDP"
],
"type": "string"
},
"location": {
"type": "string",
"maxLength": 60,
"description": "Warehouse location or country as listed, e.g. Netherlands, Latvia"
},
"page_size": {
"type": "integer",
"maximum": 25,
"minimum": 1
},
"duty_status": {
"enum": [
"T1",
"T2",
"Bonded",
"On Floor",
"Duty Paid"
],
"type": "string",
"description": "Duty status as listed. T1 = non-EU (third-country) status goods under customs transit; T2 = EU-status goods that can move within the EU under excise duty suspension (e.g. with an eAD in EMCS). Both T1 and T2 are held in bond with duty suspended: neither is duty paid. Bonded, On Floor and Duty Paid are shown exactly as listed on akay.ie."
},
"stock_status": {
"enum": [
"In stock",
"Limited",
"Enquire"
],
"type": "string"
}
}
}