Documentation › L’établi dans l’assistant
L’établi dans l’assistant
Escouade Mail s’ouvre dans l’assistant. Une fois l’établi ouvert, dites « audiences », « contacts » ou « état des campagnes » : le chat demande la bonne page dans le même établi. Les lectures et les actions ne créent plus une carte à chaque résultat. Il n’y a pas de console séparée.
L’entrée visuelle
| Vue | Outil qui l’ouvre | Ce qu’elle montre |
|---|---|---|
| Établi Escouade Mail | open_workspace | Aujourd’hui, les brouillons, les fils, les campagnes, les audiences, les contacts, les boîtes, les domaines, les désinscriptions et l’espace. |
Une instance appartient à la conversation qui l’a ouverte et à l’accès qui l’a créée. Deux conversations ne partagent pas une page courante. L’inscription reste un résultat d’outil sans vue.
Naviguer avec le chat
L’assistant ouvre l’établi une seule fois. Ensuite, il reprend l’identifiant publié par la vue dans le contexte de cette conversation et appelle navigate_workspace. Il ne doit ni inventer cet identifiant, ni reprendre celui d’une autre conversation.
| Demande | Page | Argument de détail, s’il y en a un |
|---|---|---|
| « Aujourd’hui » | jour | Aucun |
| « Mes brouillons » | valider | Aucun |
| « Boîte mail » | fils | thread_id ou message_id |
| « Campagnes » | campagnes | campaign_id |
| « État de cette campagne » | performances | campaign_id ; sans lui, la liste des campagnes |
| « Audiences » | audiences | audience_id |
| « Contacts » | contacts | query pour chercher, email pour une fiche |
| « Boîtes », « Domaines », « Désinscriptions », « Espace » | boites, domaines, blocages, espace | Selon la lecture demandée |
La réponse pending signifie que la demande est transmise. Elle ne prouve pas que la page est déjà affichée. Une saisie non enregistrée reste en place : la vue propose de la garder, ou de l’abandonner pour ouvrir la page demandée. Une commande plus récente remplace une commande plus ancienne ; un geste de navigation dans la vue prend aussi la priorité sur les demandes déjà en cours.
La vue publie la page, la sélection et l’état de la saisie. Elle ne publie l’identifiant actif que lorsqu’elle est ouverte en grand et visible. Une vue cachée ne consomme pas une demande qu’elle n’a pas montrée.
open_workspace
Ouvre l’instance et charge sa première page. Sans argument, elle commence sur Aujourd’hui. Les permissions de la lecture demandée restent nécessaires : l’ouverture n’accorde aucun accès supplémentaire.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
page | texte | non | Rubrique du tableau ci-dessus ; jour par défaut. |
arguments | objet | non | Arguments de la lecture, 8 Ko au plus. Par exemple {"query":"Alice"} sur la page Contacts. |
Le résultat porte _navigation : instance_id, sequence, route et result. Le résultat de lecture est celui de l’outil métier, avec ses permissions habituelles. Voir Référence.
navigate_workspace
Demande une page dans l’instance existante, sans créer de nouvelle carte et sans envoyer d’e-mail.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
page | texte | oui | Rubrique à afficher. |
arguments | objet | non | Arguments de la lecture de cette rubrique, 8 Ko au plus. |
instance_id | texte | oui | Identifiant fourni par le contexte de l’établi de cette conversation. |
Le résultat est un reçu : status vaut pending ou superseded si une demande plus récente l’a remplacé. Il ne porte pas une nouvelle vue. Voir Référence.
workspace_events
Cet outil est réservé à la vue. Le modèle ne doit pas entretenir lui-même la synchronisation. Une attente dure au plus 18 secondes ; l’instance, les droits et le jeton sont revérifiés avant la réponse.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
instance_id | texte | oui | Instance de cette vue. |
after_sequence | entier | oui | Dernière commande reçue, à partir de zéro. |
ack_sequence | entier | non | Dernière commande traitée par la vue. |
close | booléen | non | Libère l’instance et réveille les attentes lors de la fermeture. |
local_navigation | booléen | non | Marque une navigation locale et invalide les demandes précédentes. |
Une nouvelle page arrive dans _navigation. Sans nouvelle page, la réponse porte unchanged: true, instance_id et sequence. Une fermeture rend closed: true. L’instance expire après 30 minutes sans activité ; un redémarrage du serveur demande également de la rouvrir. Voir Référence et Erreurs.
Dans la conversation, et en grand
- Dans la conversation, la carte reste courte, sans champs de saisie ni navigation complète. Les listes de campagnes, d’audiences et de contacts montrent deux éléments au plus.
- En grand, l’établi dispose de champs, d’un menu qui se replie en icônes et d’une navigation horizontale dans une fenêtre étroite. Le contenu défile dans sa propre zone. Les boutons restent plus grands sur écran tactile.
- Chaque objet porte sa main courante : qui a fait quoi, et quand. Voir La main courante.
- Les commandes d’affichage suivent l’hôte : les gestes pour agrandir ou réduire sont adaptés aux modes qu’il fournit.
Valider depuis la vue
« Valider » appelle approve_message avec la version du brouillon affiché (revision). Si le brouillon a changé, le serveur refuse avec draft_changed. « Refuser » appelle cancel_message. On ne valide que le message montré en entier.
Sans la permission approve, le geste de validation n’est pas disponible. Le serveur revérifie cette permission à chaque appel. Voir Connecteur.
Affichage et erreurs
Un e-mail HTML est rendu dans une feuille isolée : ses images extérieures restent masquées, ses liens inactifs et aucun script ne s’exécute. Son texte et son code restent lisibles. Le contenu reçu ne peut ajouter aucun geste à la vue. L’application n’utilise aucune ressource extérieure et suit le thème clair ou sombre de l’assistant.
Si une lecture échoue, la rubrique reste identifiable et propose de réessayer. Une interruption de synchronisation conserve la page disponible. Une instance expirée propose de rouvrir Escouade Mail ; elle ne crée pas silencieusement une nouvelle carte.
Sans prise en charge des vues
Un assistant doit prendre en charge MCP Apps pour afficher l’établi. Sans cette capacité, les outils métier restent utilisables par la conversation et rendent leur texte et leur objet structuré. Le changement de page dans un établi dépend de l’hôte et d’une instance active.
Pour qui construit un client
open_workspaceannonce_meta.ui.resourceUriet_meta["openai/outputTemplate"]avecui://subagent/workspace-v12.html. Il est aussi proposé comme entrée de panneau de conversation aux hôtes qui la prennent en charge.navigate_workspaceest visible au modèle et à l’application.workspace_eventsannonce_meta.ui.visibility: ["app"]; les deux sont sans ressource visuelle.- Les outils utilisables depuis la vue annoncent la visibilité
appet_meta["openai/widgetAccessible"]: true. - Les ressources se lisent avec
resources/readet se listent avecresources/list. Leur type esttext/html;profile=mcp-app. Les anciennes adresses de v2 à v10 restent lisibles pour les cartes déjà présentes ; elles servent l’application actuelle. - Les données gardées pour accélérer une lecture restent cloisonnées par accès. Une évolution des droits invalide ce contexte ; une page n’est pas autorisée parce qu’elle figurait dans un cache.
Outils sans nouvelle vue
Les outils ci-dessous rendent des données et du texte. Leurs résultats peuvent alimenter l’établi existant ; ils ne demandent plus à l’hôte d’afficher une carte supplémentaire.
- Inscription :
sign_up,verify,attach_human. - Navigation et préparation :
navigate_workspace,workspace_events,workspace_snapshot. - Aujourd’hui et boîtes :
inbox_status,activity_report,list_events,list_inboxes,create_inbox,update_inbox,delete_inbox,request_inbox_review,create_app_password,list_app_passwords,revoke_app_password. - Domaines :
add_domain,verify_domain,list_domains,domain_quality,remove_domain,inspect_domain. - Messages :
send_email,list_threads,get_thread,reply_to_thread,classify_thread,close_thread,get_message,list_drafts,update_draft,approve_message,cancel_message,attach_files,remove_attachment,get_attachment. - Contacts et audiences :
list_contacts,get_contact,save_contact,set_contact_audiences,list_audiences,get_audience,save_audience,import_contacts,remove_audience_contact. - Campagnes :
list_campaigns,list_campaign_templates,get_campaign,preview_campaign,campaign_metrics,save_campaign,campaign_action,campaign_history,save_campaign_template. - Désinscriptions :
list_suppressions,add_suppression,remove_suppression. - Espace et forfait :
get_settings,update_settings,list_keys,create_key,revoke_key,set_webhook,remove_webhook,event_feed,close_space,billing_status,subscribe,cancel_subscription.