gradeNot graded
search_productsAnswer
Cerca prodotti nel catalogo (drink, food, beans, capsule). I prodotti di tipo milk_option sono esclusi di default — passa type:'milk_option' per includerli. Tutti i filtri sono in AND; tags/dietary/flavor_notes sono AND interno (il prodotto deve avere tutti i valori richiesti).
View tool JSON
{
"name": "search_products",
"kind": "answer",
"impl": "imperative",
"description": "Cerca prodotti nel catalogo (drink, food, beans, capsule). I prodotti di tipo milk_option sono esclusi di default — passa type:'milk_option' per includerli. Tutti i filtri sono in AND; tags/dietary/flavor_notes sono AND interno (il prodotto deve avere tutti i valori richiesti).",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Testo libero da cercare nel nome o nella descrizione"
},
"category": {
"type": "string",
"enum": [
"espresso",
"filtro",
"decaf",
"latte",
"cold",
"food",
"beans",
"capsule"
]
},
"type": {
"type": "string",
"enum": [
"drink",
"food",
"beans",
"capsule",
"milk_option"
]
},
"max_price": {
"type": "number",
"description": "Prezzo massimo in euro"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag richiesti (AND). Es: ['signature', 'best-seller']"
},
"dietary": {
"type": "array",
"items": {
"type": "string",
"enum": [
"vegan",
"lactose-free",
"gluten-free",
"no-caffeine"
]
},
"description": "Requisiti dietetici richiesti (AND)"
},
"flavor_notes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"floral",
"fruity",
"chocolate",
"caramel",
"nutty",
"citrus",
"spicy",
"honey",
"berry"
]
},
"description": "Note aromatiche richieste (AND)"
},
"origin": {
"type": "string",
"description": "Es: 'Etiopia', 'Colombia', 'Italia'"
},
"intensity_min": {
"type": "number",
"minimum": 1,
"maximum": 10
},
"intensity_max": {
"type": "number",
"minimum": 1,
"maximum": 10
},
"time_of_day": {
"type": "string",
"enum": [
"morning",
"afternoon",
"evening",
"anytime"
]
},
"in_stock_only": {
"type": "boolean",
"description": "Se true, esclude i prodotti non disponibili"
}
}
}
}get_productAnswer
Restituisce la scheda completa di un prodotto: attributi (intensità, origine, note aromatiche, dietary, tag, time_of_day), disponibilità, alternative se esaurito, pairing consigliati, prodotti correlati (es. chicchi da asporto della stessa bevanda) e opzioni di personalizzazione (size, milk, sweetness). Usalo per ragionare su un singolo prodotto in dettaglio.
View tool JSON
{
"name": "get_product",
"kind": "answer",
"impl": "imperative",
"description": "Restituisce la scheda completa di un prodotto: attributi (intensità, origine, note aromatiche, dietary, tag, time_of_day), disponibilità, alternative se esaurito, pairing consigliati, prodotti correlati (es. chicchi da asporto della stessa bevanda) e opzioni di personalizzazione (size, milk, sweetness). Usalo per ragionare su un singolo prodotto in dettaglio.",
"inputSchema": {
"type": "object",
"properties": {
"product_id": {
"type": "string",
"description": "L'id del prodotto"
}
},
"required": [
"product_id"
]
}
}add_to_cartAction
Aggiunge un prodotto al carrello in una certa quantità. Supporta options (size, milk, sweetness) se il prodotto le offre. Se il prodotto o l'opzione richiesta è ESAURITA, ritorna un errore strutturato con alternative coerenti che puoi proporre all'utente.
View tool JSON
{
"name": "add_to_cart",
"kind": "act",
"impl": "imperative",
"description": "Aggiunge un prodotto al carrello in una certa quantità. Supporta options (size, milk, sweetness) se il prodotto le offre. Se il prodotto o l'opzione richiesta è ESAURITA, ritorna un errore strutturato con alternative coerenti che puoi proporre all'utente.",
"inputSchema": {
"type": "object",
"properties": {
"product_id": {
"type": "string",
"description": "L'id del prodotto"
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 10
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "string",
"enum": [
"S",
"M",
"L"
]
},
"milk": {
"type": "string",
"description": "id di un milk_option (es. milk-oat, milk-almond)"
},
"sweetness": {
"type": "string",
"enum": [
"none",
"low",
"normal"
]
}
}
}
},
"required": [
"product_id",
"quantity"
]
}
}remove_from_cartAction
Rimuove una riga dal carrello. Passa anche 'options' (size/milk/sweetness) se il carrello contiene più righe dello stesso prodotto con opzioni diverse, altrimenti viene rimossa la prima riga che combacia con il product_id.
View tool JSON
{
"name": "remove_from_cart",
"kind": "act",
"impl": "imperative",
"description": "Rimuove una riga dal carrello. Passa anche 'options' (size/milk/sweetness) se il carrello contiene più righe dello stesso prodotto con opzioni diverse, altrimenti viene rimossa la prima riga che combacia con il product_id.",
"inputSchema": {
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"options": {
"type": "object",
"description": "Opzioni per disambiguare quale riga rimuovere (size/milk/sweetness).",
"properties": {
"size": {
"type": "string",
"enum": [
"S",
"M",
"L"
]
},
"milk": {
"type": "string"
},
"sweetness": {
"type": "string",
"enum": [
"none",
"low",
"normal"
]
}
}
}
},
"required": [
"product_id"
]
}
}apply_couponAction
Applica un codice sconto al carrello. Codici disponibili: BENVENUTO (10%), STUDENTI (20% max €5). Se un coupon era già attivo viene sovrascritto e segnalato nel messaggio.
View tool JSON
{
"name": "apply_coupon",
"kind": "act",
"impl": "imperative",
"description": "Applica un codice sconto al carrello. Codici disponibili: BENVENUTO (10%), STUDENTI (20% max €5). Se un coupon era già attivo viene sovrascritto e segnalato nel messaggio.",
"inputSchema": {
"type": "object",
"properties": {
"code": {
"type": "string"
}
},
"required": [
"code"
]
}
}remove_couponAction
Rimuove il coupon attualmente applicato al carrello. Non rimuove i prodotti.
View tool JSON
{
"name": "remove_coupon",
"kind": "act",
"impl": "imperative",
"description": "Rimuove il coupon attualmente applicato al carrello. Non rimuove i prodotti.",
"inputSchema": {
"type": "object",
"properties": {}
}
}clear_cartAction
Svuota completamente il carrello e rimuove il coupon. Usalo quando l'utente vuole ricominciare da zero.
View tool JSON
{
"name": "clear_cart",
"kind": "act",
"impl": "imperative",
"description": "Svuota completamente il carrello e rimuove il coupon. Usalo quando l'utente vuole ricominciare da zero.",
"inputSchema": {
"type": "object",
"properties": {}
}
}get_cartAnswer
Ritorna il contenuto corrente del carrello con totali.
View tool JSON
{
"name": "get_cart",
"kind": "answer",
"impl": "imperative",
"description": "Ritorna il contenuto corrente del carrello con totali.",
"inputSchema": {
"type": "object",
"properties": {}
}
}show_product_imageAnswer
Restituisce l'immagine editoriale del prodotto come MCP resource_link (URI pubblico HTTPS, WebP). Da usare quando l'utente chiede di 'vedere', 'mostrare', 'fammi vedere' un prodotto. Il client decide come renderizzare il link (inline preview vs widget). Non modifica lo stato.
View tool JSON
{
"name": "show_product_image",
"kind": "answer",
"impl": "imperative",
"description": "Restituisce l'immagine editoriale del prodotto come MCP resource_link (URI pubblico HTTPS, WebP). Da usare quando l'utente chiede di 'vedere', 'mostrare', 'fammi vedere' un prodotto. Il client decide come renderizzare il link (inline preview vs widget). Non modifica lo stato.",
"inputSchema": {
"type": "object",
"properties": {
"product_id": {
"type": "string",
"description": "L'id del prodotto"
}
},
"required": [
"product_id"
]
}
}checkoutSensitive Action
Conferma l'ordine e completa il pagamento. Richiede conferma esplicita dell'utente.
View tool JSON
{
"name": "checkout",
"kind": "transact",
"impl": "imperative",
"description": "Conferma l'ordine e completa il pagamento. Richiede conferma esplicita dell'utente.",
"inputSchema": {
"type": "object",
"properties": {}
}
}