Dati del negozio per il bot
Il bot dell'IA nella chat può rispondere non solo in base alla base di conoscenza, ma anche con i dati del negozio in tempo reale: a che punto è l'ordine, qual è il numero di tracciamento, se un prodotto è disponibile, quanto costa la consegna, come restituire un acquisto. E, se lo consente, può annullare un ordine non pagato o inoltrare al negozio una richiesta di reso o di modifica della consegna. Per farlo, il negozio si collega al bot tramite il protocollo MCP (Model Context Protocol): il bot richiama gli strumenti del negozio e il negozio risponde con i dati.
Il negozio si può collegare con qualsiasi piano, mentre il bot, come tutta l'IA nella chat, funziona con un piano a pagamento: le risposte con i dati del negozio si pagano come le normali risposte dell'IA, dal saldo del progetto, vedi Pagamento.
Collegamento
Il modo più semplice è usare il nostro modulo per il negozio. Il modulo avvia da solo il server e lo collega al progetto quando si salvano le impostazioni:
| Piattaforma | Dove attivarlo |
|---|---|
| WooCommerce | WooCommerce → Settings → OneTrace.ru → AI chat bot: store MCP |
| Magento 2 | Stores → Configuration → OneTrace.ru → AI chat bot: store MCP → Connect to the chat bot |
| 1C-Bitrix | Impostazioni del modulo → scheda del sito → blocco AI chat bot: store MCP → Connect to the chat bot |
La chiave segreta del modulo deve avere il permesso «Collegamento del server MCP del negozio al bot IA» (chats.manage). I permessi di una chiave non si possono modificare dopo la creazione: se la chiave del modulo non lo ha, crei nella sezione Chiavi API una nuova chiave con gli stessi permessi più questo e la indichi nelle impostazioni del modulo. I siti di uno stesso progetto si collegano una sola volta.
Un negozio proprio in PHP o Laravel si collega con il server pronto della libreria PHP e del pacchetto Laravel: allo sviluppatore resta solo da scrivere i gestori degli strumenti. Qualsiasi altro server che rispetta il contratto MCP del negozio si collega manualmente: in Chat → Impostazioni chat → Bot → Negozio (MCP) indichi l'indirizzo https://…, la chiave di accesso emessa dal negozio e un nome. Il contratto, con la descrizione di strumenti, errori e verifica del cliente, è nella sezione Per gli sviluppatori.

Nella sezione Negozio (MCP) si vede se il server funziona e quali strumenti il negozio ha consentito al bot. L'interruttore disattiva temporaneamente il server, il pulsante di aggiornamento lo verifica di nuovo e rilegge gli strumenti (la piattaforma lo fa anche da sola una volta al giorno).
Cosa può fare il bot
Cosa è consentito al bot lo decide il negozio, nelle impostazioni del modulo. Per impostazione predefinita è attiva solo la lettura:
| Strumento | Cosa fa il bot |
|---|---|
| Ordini del cliente, ordine | trova gli ordini del cliente e descrive l'ordine: articoli, importo, pagamento, metodo di consegna, indirizzo |
| Tracciamento | indica il corriere e il numero di tracciamento, fornisce il link per seguire la spedizione |
| Disponibilità e prezzi | cerca un prodotto per nome o codice articolo, dice se è disponibile e in quali varianti |
| Consegna | elenca i metodi di consegna con il prezzo e la soglia per la consegna gratuita |
| Condizioni di reso | riassume le condizioni di reso del negozio |
Le azioni restano disattivate finché il negozio non le consente:
| Azione | Cosa succede |
|---|---|
| Annullamento dell’ordine | il bot annulla un ordine per cui non è stato pagato né spedito nulla |
| Richiesta di reso | la richiesta arriva al negozio, come commento all'ordine e come email al personale |
| Modifica della consegna | la richiesta di un nuovo indirizzo, data o orario arriva al negozio allo stesso modo |
Le descrizioni degli strumenti per il modello le stabilisce la piattaforma, non il negozio, e il bot tratta le risposte del negozio come dati, non come istruzioni. Se la risposta del bot contiene prezzi, tempi o promesse che non compaiono nei dati del negozio, il controllo della risposta non la lascia arrivare al cliente.
Verifica del cliente
Gli ordini e le azioni su di essi sono disponibili solo per un cliente verificato: il bot non mostrerà l'ordine di un altro e non confermerà nemmeno che esiste. Il cliente si può verificare in due modi:
- Accesso al sito. Se il cliente ha effettuato l'accesso al proprio account del negozio, il modulo passa al widget della chat un token firmato: il bot sa subito chi sta scrivendo.
- Codice. Nelle app di messaggistica e per gli ospiti il bot chiede l'email indicata nel negozio, il negozio vi invia un codice di 6 cifre e il cliente lo scrive in chat. Il codice vale 10 minuti, con al massimo 5 codici all'ora per lo stesso indirizzo.
La verifica vale 24 ore. L'operatore la vede nella finestra della conversazione: «cliente confermato: ha effettuato l’accesso al sito» oppure «cliente confermato con un codice». Il token del cliente è conservato cifrato nella conversazione: né il modello né gli operatori lo vedono.
Azioni nel negozio
Il bot esegue un'azione solo dopo il consenso esplicito del cliente:
- Il bot descrive cosa farà (numero dell'ordine, articoli) e chiede conferma.
- Il cliente acconsente in chat, ad esempio «sì, annulli pure».
- Un modello di valutazione a parte verifica che il cliente abbia acconsentito proprio a quell'azione. Una domanda, un dubbio o un'altra richiesta non sono un consenso.
- Il negozio esegue l'azione; una nuova chiamata della stessa azione non la ripete.
Nei messaggi compare la riga «Il bot ha eseguito nel negozio: …» con il risultato e, nel registro attività del progetto, la voce «Azione del bot nel negozio». La bozza dell'operatore usa i dati del negozio solo in lettura: le azioni le esegue l'operatore stesso, nel negozio.

Per gli sviluppatori
Si può collegare un server proprio, se rispetta la versione 1 del contratto MCP del negozio. Per PHP e Laravel il contratto è già implementato: la classe StoreMcp\Server della libreria PHP e la rotta POST /onetrace/mcp del pacchetto Laravel; resta solo da scrivere i gestori degli strumenti.
Trasporto. MCP Streamable HTTP, versione del protocollo 2025-06-18: un solo indirizzo, richieste POST con JSON-RPC 2.0, risposta in JSON oppure come flusso text/event-stream con una sola risposta. L'indirizzo è solo https:// su un IP pubblico, senza reindirizzamenti. La risposta deve arrivare entro 10 secondi e non superare 256 KB. La piattaforma chiama initialize, notifications/initialized, tools/list e tools/call; l'intestazione Mcp-Session-Id è supportata, ma non obbligatoria.
Accesso. Ogni richiesta contiene Authorization: Bearer <chiave>; la chiave la crea il negozio ed è lunga almeno 32 caratteri casuali. A una richiesta senza chiave o con una chiave diversa si risponde 401.
Contrassegno del contratto. Nella risposta a initialize il server dichiara capabilities.experimental["onetrace/store"] = { "version": 1 }: senza questo contrassegno il server non viene collegato.
Strumenti. I nomi sono esattamente quelli della tabella; tools/list restituisce solo quelli consentiti dal titolare. Ognuno ha l'annotazione readOnlyHint: true (lettura) o destructiveHint: true (azione) e _meta["onetrace/auth"]: customer richiede un cliente verificato, none no. Il risultato è structuredContent, con lo stesso JSON come testo in content[0].text. Gli importi hanno la forma { "amount": 1250.5, "currency": "RUB" }, le date sono in ISO 8601.
| Strumento | Accesso | Input | Risultato |
|---|---|---|---|
store_start_verification |
none | contact, order |
sent, channel, destination |
store_verify |
none | contact, code |
customer_token, expires_at |
store_get_customer |
customer | — | id, email, phone, first_name |
store_find_orders |
customer | status, limit (fino a 20) |
orders: order, created_at, status, status_label, total, items_count |
store_get_order |
customer | order |
ordine con items, total, payment, shipping, can_cancel, can_return |
store_get_tracking |
customer | order |
carrier, tracking_number, tracking_url, status, events |
store_check_availability |
none | query, sku o product_id |
products (fino a 10) con in_stock, quantity, variants |
store_get_delivery_options |
none | country, city, postcode, total |
methods: name, price, free_from, min_days, max_days |
store_get_return_policy |
none | — | days, conditions, text, url |
store_cancel_order |
customer | order, reason |
order, status, message |
store_create_return |
customer | order, items, reason |
return_id, status, instructions |
store_change_delivery |
customer | order, address, date, time_window |
order, message |
Lo stato dell'ordine è uno tra pending, processing, on_hold, shipped, delivered, completed, cancelled, refunded, failed. Per l'ordine di un altro cliente la risposta è not_found, come se non esistesse.
Cliente. Il token customer_token lo emette e lo verifica il negozio, con una durata massima di 24 ore. Il codice di conferma lo invia il negozio stesso, che risponde allo stesso modo sia che il cliente esista sia che non esista; il codice ha 6 cifre, vale 10 minuti, con al massimo 5 tentativi e 5 codici all'ora per indirizzo. Per un cliente che ha effettuato l'accesso, la pagina passa il token al tracker: cdp.chatCustomer('…').
Contesto della chiamata in params._meta: onetrace/customer_token, onetrace/language (lingua della conversazione), onetrace/conversation e, per le azioni, onetrace/confirmed: true e onetrace/idempotency_key. Il server rifiuta un'azione senza onetrace/confirmed; una ripetizione con la stessa chiave di idempotenza restituisce lo stesso risultato senza ripetere l'azione.
Errori: isError: true e structuredContent: { "error": "<codice>", "message": "<testo per il cliente>" }:
| Codice | Quando |
|---|---|
auth_required |
serve un cliente verificato |
invalid_code |
codice errato o scaduto |
not_found |
l'ordine o il prodotto non esiste |
not_allowed |
l'azione non è disponibile in questo stato o è stata disattivata dal titolare |
invalid_input |
argomenti non validi |
rate_limited |
troppe richieste o troppi codici |
unavailable |
guasto temporaneo del negozio |
Collegamento dal modulo. Il modulo registra il proprio server con una chiave segreta con il permesso chats.manage: PUT /api/v1/chat/store-mcp con url, key, name, platform collega o aggiorna il server, DELETE /api/v1/chat/store-mcp con url lo scollega.