// illustratif · standard WebMCP (Chrome 146 beta, Cloudflare Browser Run)
navigator.modelContext?.registerTool({
name: 'rechercherHebergement',
description: "Trouver un hébergement disponible sur la commune",
inputSchema: {
type: 'object',
properties: {
dateArrivee: { type: 'string', format: 'date' },
dateDepart: { type: 'string', format: 'date' },
nbPersonnes: { type: 'integer' },
budgetMax: { type: 'number' }
}
},
invoke: async ({ dateArrivee, dateDepart, nbPersonnes, budgetMax }) => {
const res = await fetch(`/api/hebergement?from=${dateArrivee}&to=${dateDepart}`);
return res.json();
}
});
navigator.modelContext?.registerTool({
name: 'programmeEvenements',
description: "Lister les événements d'un mois donné",
inputSchema: {
type: 'object',
properties: { mois: { type: 'string', format: 'month' } }
},
invoke: async ({ mois }) => { /* … */ }
});
navigator.modelContext?.registerTool({
name: 'reserverActivite',
description: "Réserver une place sur une activité identifiée",
inputSchema: {
type: 'object',
properties: { id: { type: 'string' }, nbPlaces: { type: 'integer' } }
},
invoke: async ({ id, nbPlaces }) => { /* … */ }
});
// Un assistant peut répondre à « que faire à Beuil ce week-end ? »
// et RÉSERVER. Sans appeler de plateforme tierce.