Outils développeurActualité

Outils WebMCP : un exemple concret en lecture seule

Sur cette page
  1. Le périmètre documenté, vérifié le 8 septembre
  2. Un exemple complet sans modification de la page
  3. Une annotation décrit une intention, sans l’imposer
  4. Des vérifications d’intégration utiles

Les outils de site exposent des opérations à un agent travaillant dans la même session navigateur. OpenAI documente une partie du standard WebMCP proposé. Disponibilité et limites de cette implémentation comptent autant que l’appel d’enregistrement.

L’exemple enregistre un outil de plan, puis relit les titres à chaque appel. Modifier un titre change le résultat suivant. L’annotation readOnlyHint n’impose pas le comportement du gestionnaire.
L’exemple enregistre un outil de plan, puis relit les titres à chaque appel. Modifier un titre change le résultat suivant. L’annotation readOnlyHint n’impose pas le comportement du gestionnaire. Graphique : PeopleAreGeek. Source des données.
Agrandir l’image

Le périmètre documenté, vérifié le 8 septembre

La documentation OpenAI cite GPT-5.6 Sol et Terra, avec Luna désactivé, et exclut les espaces Enterprise et Edu. La disponibilité dépend aussi du déploiement et de la page. Le navigateur intégré ne découvre ni les outils déclaratifs de formulaires ni ceux enregistrés dans les iframes.

Ces restrictions décrivent cette implémentation, pas tous les navigateurs suivant la proposition WebMCP en évolution. L’interface habituelle de la page peut rester utilisable si les outils de site ne sont pas disponibles.

Un exemple complet sans modification de la page

Cet exemple original est destiné à un module JavaScript de la page. Il renvoie le texte actuel des titres placés dans un élément article :

if (typeof document.modelContext?.registerTool === "function") {
  await document.modelContext.registerTool({
    name: "read_article_outline",
    description: "Read this page's article headings without changing it.",
    inputSchema: {
      type: "object", properties: {}, additionalProperties: false
    },
    annotations: { readOnlyHint: true },
    execute: async () => ({
      headings: [...document.querySelectorAll("article h1, article h2")]
        .map(node => node.innerText.trim()).filter(Boolean)
    })
  });
}

Le schéma d’entrée vide est volontaire : aucun argument de l’appelant n’est nécessaire. Le gestionnaire consulte le document à chaque appel, sans figer le plan lors de l’enregistrement. En l’absence de titres correspondants, il renvoie un tableau vide.

Afficher ce code dans l’article n’enregistre pas cet outil sur PeopleAreGeek. C’est un exemple à intégrer dans une application. Il ne prouve pas non plus qu’un compte ou navigateur particulier découvrira l’outil.

Une annotation décrit une intention, sans l’imposer

L’exemple est en lecture seule parce que son gestionnaire lit des titres et les renvoie. Cette propriété ne vient pas de readOnlyHint lui-même. Un code erroné ou malveillant pourrait porter cette annotation tout en produisant des modifications.

De même, le schéma décrit les arguments attendus sans remplacer autorisation et validation dans le chemin réel d’accès aux données. L’annotation ne permet pas de déduire une exemption automatique des contrôles du navigateur.

Des vérifications d’intégration utiles

Essayez sans API WebMCP, avec un article contenant des titres, puis avec un article vide. Modifiez ensuite un titre et rappelez l’outil : le résultat doit suivre le contenu actuel. Dans un navigateur compatible, vérifiez séparément découverte et invocation.

Pour une application en iframe, placez l’intégration à une frontière autorisée de l’application principale. Les restrictions d’origine continuent de s’appliquer : WebMCP ne permet pas de lire librement une iframe provenant d’un autre domaine.

Lorsqu’une opération modifie des données, renvoyez assez d’informations pour vérifier l’état obtenu et réutilisez les permissions de l’interface humaine. Une petite action décrite précisément s’examine plus facilement qu’un outil large dont les effets restent flous.

Sources revérifiées le 8 septembre ; statut, limites et explications corrigés, illustration remplacée.