
Italy only: current offers and weekly price trends from the flyers of Italian store chains.
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.
Use this to read one of the documents returned by search, given its id. Returns the full text and the URL to cite. For an offer: price, previous price, pack size, price per kg or litre, chain, validity, and the same product in the other chains' current flyers. For a flyer: validity, number of offers and biggest discounts. For a product: this week's typical and lowest flyer price, the trend and each chain. Ids come only from search. Covers Italy only.
The id of a document returned by search.
Use this to read one of the documents returned by search, given its id. Returns the full text and the URL to cite. For an offer: price, previous price, pack size, price per kg or litre, chain, validity, and the same product in the other chains' current flyers. For a flyer: validity, number of offers and biggest discounts. For a product: this week's typical and lowest flyer price, the trend and each chain. Ids come only from search. Covers Italy only.
| Argument | Type | Description |
|---|---|---|
| id* | string | The id of a document returned by search. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 400,
"description": "The id of a document returned by search."
}
},
"additionalProperties": false
}Use this when the user asks how much a common grocery or household product costs in Italy this week, whether it is getting cheaper or more expensive, or which chain has it cheapest: e.g. "how much does pasta cost this week", "is coffee more expensive than last week". Returns the typical (median) and lowest flyer price this week, the previous weeks and each chain this week, with the link to the product page on prezzinvista.it. Covers Italy only, and about two hundred staple products (pasta, caffè, olio di oliva, latte, detersivo, pannolini, …), named in Italian; specific brands and models are what search_flyer_offers looks up. In hosts that support MCP Apps the results are also shown to the user as a card with the weekly trend.
| Argument | Type | Description |
|---|---|---|
| product* | string | The product, in Italian: e.g. "pasta", "caffè", "olio di oliva", "detersivo lavatrice". |
{
"type": "object",
"required": [
"product"
],
"properties": {
"product": {
"type": "string",
"maxLength": 60,
"description": "The product, in Italian: e.g. \"pasta\", \"caffè\", \"olio di oliva\", \"detersivo lavatrice\"."
}
},
"additionalProperties": false
}Use this when the user asks which store flyers (volantini) are valid right now in Italy, whether a chain has a flyer this week, or until when a flyer is valid, optionally only for chains with a store near a city or near the position of the user. Returns chain, validity dates, number of offers, distance and address of the nearest store and the link to the flyer on prezzinvista.it. Covers Italy only. Products inside the flyers are what search_flyer_offers looks up. In hosts that support MCP Apps the results are also shown to the user as cards with logo, validity and link.
| Argument | Type | Description |
|---|---|---|
| city | string | Italian municipality (comune) to search around: where the user is, or the place they ask about, e.g. "Milano", "Reggio Emilia", "Sesto San Giovanni". Only flyers valid in stores within radius_km of its centre are returned. Without a place the search covers all of Italy. |
| limit | integer | Flyers to return (default 30). Nearest first with a city or coordinates, largest first otherwise. |
| store | string | Only the flyers of this chain, by name: e.g. "Lidl". |
| near_me | boolean | Whether to search around the approximate position of the user that some clients share with the call (ChatGPT does). When omitted, that position is used if the call names no city and no coordinates. true: the same, and the answer is an error when no position came with the call. false: all of Italy. |
| latitude | number | Latitude of the position of the user (WGS84, decimal degrees), together with longitude. Distances are then measured from this point, and only flyers valid in stores within radius_km of it are returned. Takes precedence over city. Used for this answer only, never stored. |
Use this when you need citable sources for a free-text question about what is on offer in Italian store flyers (volantini) right now, and no filters or sorting are needed. Covers Italy only. Takes one query in Italian that may name a product, a chain and a city ("caffè Lavazza a Milano", "volantino Lidl", "prezzo pasta"). Returns matching documents — current offers, store flyers and weekly product price pages — each with an id, a title stating price, chain and validity, and its URL on prezzinvista.it. The full text of a document is what fetch returns for its id. Sorting by price, a price cap and a choice of chains belong to search_flyer_offers.
| Argument | Type | Description |
|---|---|---|
| query* | string | What to look for, in Italian: a product, optionally with a chain and "a <city>". |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"description": "What to look for, in Italian: a product, optionally with a chain and \"a <city>\"."
}
},
"additionalProperties": false
}Use this when the user wants to know where a product is on offer in Italy this week, at what price, at which chain and until when, and you need filters or sorting: a city or the position of the user, specific chains, a price cap, lowest price, lowest price per kg or nearest store first. Searches the offers currently valid in the flyers (volantini) of Italian supermarkets, discount stores and electronics chains. Flyers are local: with the city or the coordinates of the user the answer keeps the chains with a store near them; without a place it covers the whole country. Product names are in Italian: pass Italian words in `query` ("caffè", "pasta barilla", "lavatrice"). Returns price, previous price, the conditions printed with it (loyalty card, minimum purchase), brand, pack size, price per kg or litre, department, chain, validity dates, the page of the flyer and the link to the offer on prezzinvista.it; with a city or coordinates, also the distance, address and opening hours of the nearest store of each chain. Covers Italy only: not for other countries, not for online-shop prices. Flyer prices are indicative; the price displayed in store prevails. In hosts that support MCP Apps the results are also shown to the user as cards with photo, price and link.
| Argument | Type | Description |
|---|---|---|
| city | string | Italian municipality (comune) to search around: where the user is, or the place they ask about, e.g. "Milano", "Reggio Emilia", "Sesto San Giovanni". Only flyers valid in stores within radius_km of its centre are returned. Without a place the search covers all of Italy. |
| page | integer | Page of results (default 1). |
| sort | string | relevance (default with a query), price (lowest first), unit_price (lowest price per kg or litre first; only offers that state it), discount (biggest first; default without a query), nearest (closest chain first; needs a city or coordinates). |
| longitude | number | Longitude of the position of the user, together with latitude. |
| radius_km | number | How far to look around the city centre or the coordinates, in km (default 15). |
{
"type": "object",
"properties": {
"city": {
"type": "string",
"maxLength": 60,
"description": "Italian municipality (comune) to search around: where the user is, or the place they ask about, e.g. \"Milano\", \"Reggio Emilia\", \"Sesto San Giovanni\". Only flyers valid in stores within radius_km of its centre are returned. Without a place the search covers all of Italy."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Flyers to return (default 30). Nearest first with a city or coordinates, largest first otherwise."
},
"store": {
"type": "string",
"maxLength": 40,
"description": "Only the flyers of this chain, by name: e.g. \"Lidl\"."
},
"near_me": {
"type": "boolean",
"description": "Whether to search around the approximate position of the user that some clients share with the call (ChatGPT does). When omitted, that position is used if the call names no city and no coordinates. true: the same, and the answer is an error when no position came with the call. false: all of Italy."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude of the position of the user (WGS84, decimal degrees), together with longitude. Distances are then measured from this point, and only flyers valid in stores within radius_km of it are returned. Takes precedence over city. Used for this answer only, never stored."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude of the position of the user, together with latitude."
},
"radius_km": {
"type": "number",
"maximum": 50,
"minimum": 1,
"description": "How far to look around the city centre or the coordinates, in km (default 15)."
}
},
"additionalProperties": false
}| limit | integer | Offers per page (default 10). |
| query | string | Product to look for, in Italian. Brand and product words are combined ("olio extravergine monini"). Omit to browse the biggest discounts. |
| stores | array | Only these chains, by name: e.g. ["Lidl", "Esselunga"]. |
| near_me | boolean | Whether to search around the approximate position of the user that some clients share with the call (ChatGPT does). When omitted, that position is used if the call names no city and no coordinates. true: the same, and the answer is an error when no position came with the call. false: all of Italy. |
| latitude | number | Latitude of the position of the user (WGS84, decimal degrees), together with longitude. Distances are then measured from this point, and only flyers valid in stores within radius_km of it are returned. Takes precedence over city. Used for this answer only, never stored. |
| longitude | number | Longitude of the position of the user, together with latitude. |
| radius_km | number | How far to look around the city centre or the coordinates, in km (default 15). |
| max_price_eur | number | Only offers at or below this price. |
| discounted_only | boolean | Only offers whose flyer states a higher previous price. |
{
"type": "object",
"properties": {
"city": {
"type": "string",
"maxLength": 60,
"description": "Italian municipality (comune) to search around: where the user is, or the place they ask about, e.g. \"Milano\", \"Reggio Emilia\", \"Sesto San Giovanni\". Only flyers valid in stores within radius_km of its centre are returned. Without a place the search covers all of Italy."
},
"page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page of results (default 1)."
},
"sort": {
"enum": [
"relevance",
"price",
"unit_price",
"discount",
"nearest"
],
"type": "string",
"description": "relevance (default with a query), price (lowest first), unit_price (lowest price per kg or litre first; only offers that state it), discount (biggest first; default without a query), nearest (closest chain first; needs a city or coordinates)."
},
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Offers per page (default 10)."
},
"query": {
"type": "string",
"maxLength": 80,
"description": "Product to look for, in Italian. Brand and product words are combined (\"olio extravergine monini\"). Omit to browse the biggest discounts."
},
"stores": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "Only these chains, by name: e.g. [\"Lidl\", \"Esselunga\"]."
},
"near_me": {
"type": "boolean",
"description": "Whether to search around the approximate position of the user that some clients share with the call (ChatGPT does). When omitted, that position is used if the call names no city and no coordinates. true: the same, and the answer is an error when no position came with the call. false: all of Italy."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude of the position of the user (WGS84, decimal degrees), together with longitude. Distances are then measured from this point, and only flyers valid in stores within radius_km of it are returned. Takes precedence over city. Used for this answer only, never stored."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude of the position of the user, together with latitude."
},
"radius_km": {
"type": "number",
"maximum": 50,
"minimum": 1,
"description": "How far to look around the city centre or the coordinates, in km (default 15)."
},
"max_price_eur": {
"type": "number",
"minimum": 0,
"description": "Only offers at or below this price."
},
"discounted_only": {
"type": "boolean",
"description": "Only offers whose flyer states a higher previous price."
}
},
"additionalProperties": false
}