Un solo ponte, per tutti
I custom tool che parlano con Kross o Stripe non chiamano quei sistemi direttamente: passano tutti per lo stesso indirizzo,mcp.mattone.co (l’MCP Gateway, multi-tenant). Non esiste un dominio per cliente e non esiste un ponte “tutto suo” per nessuno studente: il cliente si riconosce dal token dentro il codice del tool, non dall’URL che chiama. Quel token lo scrive la piattaforma quando crea o allinea i tool — non è un secret che si crea o si sposta a mano nel workspace.
Per Kross, il ponte serve due modelli diversi dietro lo stesso indirizzo — nuovo studente (chiave generica nostra) o cliente con una sua chiave già esistente. Come riconoscerli e cosa cambia: Kross → Prima di iniziare: partner o own?.
Regola d’oro: tool + skill sempre insieme
Aggiungere un tool senza la skill che spiega all’agente quando e come usarlo è equivalente a non aggiungerlo. L’agente Conduit non “scopre” autonomamente i tool disponibili: deve ricevere istruzioni esplicite tramite la skill su quale trigger usare il tool, quali parametri passare e come interpretare la risposta.🔴 L’agente legge la description del TUO workspace, non quella del gateway
È la trappola che ci è costata una giornata l’08/09/2026, e ricapiterà a chiunque non la conosca. Il pontemcp.mattone.co ha imparato a cercare la prenotazione anche per codice di canale (quello che l’ospite cita davvero: Airbnb, Booking, Vrbo) e a mostrare le cancellate. Mergiato, deployato, provato in produzione con un codice Booking vero: funziona.
Sul campo non è cambiato niente, perché l’agente non legge mai la description scritta nel gateway: legge quella del custom tool montato sul suo workspace, che diceva ancora «codice prenotazione Kross (es. 375/2026)» e basta.
Ma non propagare a mano su tutta la flotta
Sembra ovvio dire «allora copiamo la description canonica ovunque». È sbagliato, ed è pericoloso. Censimento dell’08/09 sui sei workspace che montano i tool Kross:Il ponte non restituisce mai un errore di trasporto
Verificato in esecuzione su sei classi di guasto (errore del server Kross persistente e passeggero, limite di frequenza superato, timeout, risposta malformata, credenziali rifiutate): la risposta è sempre un esito buono con un messaggio parlante dentro, mai un errore di trasporto.Il canale che invece funziona già, gratis
Quando il ponte non trova la prenotazione non risponde «non c’è»: risponde dicendo dove ha cercato e chiedendo all’ospite il codice, sia quello Kross sia quello del canale. Quel testo arriva all’agente di tutti i workspace senza toccare nessuna configurazione. Quindi la capacità nuova, al secondo giro, è già disponibile ovunque. Quello che manca è che l’agente la chieda al primo, ed è esattamente ciò che una riga di description in più otterrebbe.Catalogo tool disponibili
Kross (prenotazioni e check-in)
Smart Lock (serrature)
Stripe (pagamenti)
Chi li monta
I custom tool sono provisionati esclusivamente dal team Mattone durante l’onboarding o su richiesta successiva. Lo studente non ha accesso alla configurazione dei tool. Il catalogo completo dei tool disponibili e i loro parametri sono documentati nel catalogo MCP.Due errori di provisioning da non ripetere
Tutti e due sono successi davvero, e tutti e due li avevamo messi noi, montando i tool. Lo studente non c’entra: non ha nemmeno accesso alla configurazione.1. Mai un dato vero come esempio in una description
Le description dei tool e dei loro parametri entrano nel contesto del modello a ogni turno di conversazione. Un nome, un telefono o un’email scritti lì come «esempio di formato» vengono ripresentati all’AI a ogni messaggio di qualunque ospite, su qualunque appartamento. Il 10/09/2026, su un workspace studente, la description di un parametro portava come esempio nome, cognome e cellulare di un ospite reale, preso da una conversazione. È stato corretto; gli altri workspace controllati erano puliti.2. Mai il token in chiaro dentro il codice
Il token del gateway è l’identità del cliente: chi ce l’ha, per il gateway, è quel cliente. Scritto come stringa letterale nel campocode del tool, viene restituito da list_custom_tools a chiunque abbia un token API di Conduit.
Dall’ottobre 2026 il codice canonico dei tool legge il token da una Variable di workspace di Conduit (Settings → Variables), e usa il token scritto nel codice solo come ripiego finché la Variable non è impostata. Le Variables non si impostano da programma: è un passo manuale, da dashboard, ed è obbligatorio nel provisioning di ogni studente.
Crea o allinea i tool dalla piattaforma
Imposta la Variable nel workspace dello studente
Verifica
no-pii-descriptions) impedisce che le sue description contengano email, telefoni o nomi tra virgolette. Protegge la sorgente centrale; le copie dentro i workspace restano responsabilità di chi le monta.
Una versione sola per tutti gli studenti
Tutti i workspace hanno la stessa versione di ogni tool. Stessa descrizione, stessi parametri, stesso codice. L’unica cosa che cambia da uno studente all’altro è il suo token. Il perché è misurato, non teorico: a un censimento, su trenta descrizioni montate nei workspace degli studenti nessuna era uguale a quella del gateway, e c’erano tre riscritture diverse. Un miglioramento fatto sul gateway non era arrivato a nessuno. In due workspace un parametro dichiarava un valore di default diverso da quello che il gateway usa davvero: l’agente riceveva un’informazione falsa.Cosa può essere diverso da uno studente all’altro, e dove sta
Dopo ogni modifica, si rilegge
Ogni modifica a un tool, a una skill o a un agente si chiude rileggendo e confrontando: quello che si voleva cambiare è cambiato, e tutto il resto è rimasto identico — gli altri guardrail, le skill agganciate, la modalità, i trigger. Alcune API di Conduit non dichiarano di preservare i campi che non mandi: il controllo si fa, non si presume.Quando esce una versione nuova dei tool
Una versione nuova arriva a tutti gli studenti, ma un workspace alla volta, e senza toccare quello che di ogni studente è davvero suo. Chi fa cosa: il team tecnico rilascia e allinea; il delivery controlla le personalizzazioni con chi segue lo studente e legge le conversazioni del giorno dopo.Cosa si aggiorna e cosa no
Prima di scrivere
1. Il rilascio ha un nome (team tecnico)
2. Copia di sicurezza di ogni workspace (team tecnico)
3. Confronto a secco (team tecnico)
- un tool mancante lo segnala e basta: lo script allinea, non crea;
- un gruppo di tool con il token non univoco, o con lo stesso token di un altro gruppo, non lo tocca: è montato male e va sistemato a parte.
4. Controllo delle personalizzazioni (team tecnico + delivery)
- È soltanto la versione precedente → si va avanti.
- C’è qualcosa che non viene da nessuna nostra versione, ed è specifico di quello studente (una frase aggiunta alla descrizione, un parametro in più) → ci si ferma e il delivery chiede a chi segue lo studente perché c’è. Due uscite:
- era una deriva → si allinea;
- rispondeva a un bisogno vero di quello studente → il bisogno si sposta dove deve stare (skill, KB, istruzioni dell’agente o guardrail), si scrive nel registro dello studente con il motivo, e solo dopo si allinea.
- C’è un miglioramento nel codice del tool presente su più workspace e non nel generatore (un bug del wrapper corretto a mano, non una richiesta di un cliente) → non è una personalizzazione da spostare, e non si allinea alla versione vecchia. Prima si aggiorna il generatore (
codiceTool()inconduit-tool-canonici.ts) perché produca quel codice, poi si allinea la flotta alla versione nuova — quella con il fix.
Il rilascio, un workspace alla volta
5. Si parte da un workspace pilota in copilot (team tecnico)
6. Si rilegge campo per campo (team tecnico)
7. Si prova un tool in sola lettura (team tecnico o delivery)
8. Si guardano le conversazioni del giorno dopo (delivery)
9. Gli altri workspace, uno per volta (team tecnico)
Ogni rilascio lascia traccia
10. Si scrive nella PR del rilascio (team tecnico, poi delivery)
Come si torna indietro
- Un solo workspace: si riscrivono dalla copia del passo 2 i campi che il rilascio aveva toccato (descrizione, parametri, codice, linguaggio, messaggio di esecuzione), e si rilegge come al passo 6.
- Tutti: si annulla la PR della versione (e la modifica al gateway, se era lì), poi si rilancia lo script: allinea alla versione di prima, con gli stessi passi, a secco, pilota, uno alla volta.
- Anche il ritorno indietro lascia traccia nella stessa PR, con il motivo.
Come verificare che un tool funzioni
Dopo aver montato un tool, esegui sempre questa verifica prima di dichiarare l’onboarding completato.Verifica che il tool appaia nell'elenco del workspace
Verifica che la skill abbinata esista e sia attiva
Testa con un messaggio ospite realistico
open-door invia “Puoi aprire la porta?”; per stripe-payment-link invia “Vorrei fare il late check-out, quanto costa?”. Usa un linguaggio naturale, non comandi tecnici, così validi che la skill funziona nelle condizioni reali.Controlla i log per confermare che il tool sia stato chiamato