Comment laisser un chat Claude modifier vos Notes osFoundry sans écraser le travail d'un collègue
À la fin, une conversation Claude lit une plage de cellules dans un onglet Sheet d'une de vos Notes osFoundry, réécrit un onglet texte de la même Note et ajoute un nouvel onglet Slides, pendant qu'une personne continue de taper dans cette Note. Chaque écriture indique l'ID exact de l'onglet et la version de la Note que Claude a lue en dernier. Si la personne a enregistré quelque chose entre-temps, osFoundry refuse l'écriture de Claude, et Claude relit avant de réessayer. Aucune modification ne disparaît. Qui fait quoi Côté Claude Côté osFoundry Connexion Votre compte Claude, inchangé La connexion que vous avez approuvée pour un workspace Quelle Note Claude la choisit parmi ce que liste le serveur Uniquement les Notes des projets auxquels la connexion a été ajoutée Quel onglet Claude doit envoyer un tab_id exact list_note_tabs renvoie chaque instance d'onglet, y compris deux Sheets du même type Conflits Claude relit et refait sa modification Les écritures portent expected_version ; une version périmée est refusée, pas fusionnée Nouvelles tentatives Claude peut renvoyer le même appel La même idempotency_key renvoie le premier résultat au lieu d'écrire deux fois Approbations La demande d'autorisation d'outil de Claude avant chaque écriture Vos droits de modification actuels sur cette Note, vérifiés à chaque appel Configuration Le connecteur est celui de la configuration du connecteur personnalisé Claude (icône de clé → Connected → Add assistant, puis ajout de https://api.osfoundry.io/api/v1/external-mcp dans Claude). Les étapes ci-dessous supposent que cette connexion existe et qu'elle est ajoutée à un projet. 1. Placer la Note dans le projet connecté Ouvrez la Note, ouvrez son panneau de droite et allez dans Config → Settings. Le champ Project affiche "Add to project" (ajouter au projet) quand la Note n'en a pas. Choisissez le projet auquel appartient la connexion Claude. Une Note qui n'existe que sur cet appareil n'a pas de copie dans le cloud, la connexion ne peut donc pas la voir. La Note doit être synchronisée avec votre workspace. 2. Vérifier que les outils de Note sont activés Dans icône de clé → Connected, sélectionnez la connexion Claude et regardez Tools. Tous les outils pris en charge sont activés par défaut. Pour ce tutoriel, ceux-ci doivent rester cochés : read list_note_tabs read_note_tab read_sheet_range list_note_attachments write edit_note_tab create_note_tab add_note_source Exemple : La liste Tools d'une connexion Claude, tout activé par défaut Pour passer un chat en lecture seule pendant un moment, décochez les trois outils d'écriture et cliquez sur Save tools. La lecture continue de fonctionner. 3. Jeter un œil à vos droits de modification Les écritures de Claude s'exécutent avec les droits de la personne qui a approuvé la connexion, revérifiés à chaque appel. Si vous ne pouvez que consulter la Note, edit_note_tab est refusé même si l'outil est activé. Ouvrez l'onglet Access de la Note en cas de doute. 4. Demander avec les noms d'onglets Dans un chat Claude où le connecteur osFoundry est activé, nommez la Note et les onglets. Claude convertit lui-même les noms en IDs d'onglet, mais « la feuille Owners » est moins ambigu que « le tableau ». Dans osFoundry, ouvre la Note "Q3 launch". Lis A1:D12 dans la feuille Owners, réécris l'onglet Brief pour que chaque point ouvert ait un responsable tiré de cette feuille, puis ajoute un onglet Slides "Launch status" avec une diapositive par responsable. Une exécution réelle Le contenu de la Note et la réponse de Claude sont des données d'exemple. Les noms d'outils et d'arguments sont ceux que le serveur en production liste dans tools/list. Dans Claude Code, les mêmes outils apparaissent sous la forme mcp__osfoundry__list_note_tabs, etc. Exemple Claude → list_note_tabs {"note_id": "…"} ← version "…41.118Z" onglets : Brief (note), Owners (sheet), Owners archive (sheet) Claude → read_sheet_range {"note_id": "…", "tab_id": "", "start_row": 0, "start_col": 0, "row_count": 12, "col_count": 4} ← 12 × 4 valeurs Claude → read_note_tab {"note_id": "…", "tab_id": ""} ← texte, version "…41.118Z" Claude → edit_note_tab {"note_id": "…", "tab_id": "", "operation": "replace_text", "text": "…", "expected_version": "…41.118Z", "idempotency_key": "brief-owners-1"} [Claude vous demande d'autoriser cet appel d'outil → Allow] ← refusé : la Note a changé après cette version (pendant ce temps, Mika a ajouté "press kit" à l'onglet Brief dans osFoundry) Claude → read_note_tab {"note_id": "…", "tab_id": ""} ← le texte contient maintenant "press kit", version "…07.502Z" Claude → edit_note_tab {... "text": "… press kit — owner: Mika …", "expected_version": "…07.502Z", "idempotency_key": "brief-owners-2"} ← enregistré, version "…19.044Z" Claude → create_note_tab {"note_id": "…", "tab_type": "slides", "label": "Launch status", "slides": [{"title": "Aiko"}, {"title": "Mika"}, …], "expected_version": "…19.044Z", "idempotency_key": "launch-status-deck"} ← nouvel ID d'onglet "" Claude : Le Brief indique maintenant un responsable pour les 9 points ouverts, y compris "press kit", que Mika a ajouté pendant que je modifiais. Le nouvel onglet Launch status contient une diapositive par responsable. Il s'est passé trois choses qu'on ne voit pas dans un chat normal. Claude a lu la plage de la Sheet plutôt que tout le classeur. read_sheet_range renvoie au maximum 100 sur 100 cellules, donc une grande Sheet n'inonde pas la conversation. La première modification a échoué volontairement : la version de Claude était plus ancienne que l'enregistrement de Mika. Claude n'a pas renvoyé son ancien texte avec la nouvelle version. Il a relu l'onglet et écrit un Brief qui contient à la fois sa modification et la ligne de Mika. L'appel de création porte sa propre clé : si la réponse s'était perdue et que Claude avait rappelé, osFoundry aurait renvoyé le même onglet Launch status au lieu d'en créer un second. L'onglet Owners archive montre pourquoi les IDs d'onglet comptent. Une Note peut contenir plusieurs onglets Sheet ou Slides, et ni un nom ni un type n'en désignent un seul. Chaque appel à edit_note_tab a besoin de l'ID renvoyé par list_note_tabs. Où passe la limite Une écriture périmée est refusée, jamais fusionnée. osFoundry n'essaie pas de combiner côté serveur le texte de Claude et celui de la personne, car un replace_text en texte intégral n'a aucun moyen fiable de savoir laquelle des deux versions d'un paragraphe vous vouliez. C'est l'agent qui connaît l'intention, donc c'est l'agent qui refait la modification sur ce qui existe maintenant. Les enregistrements de la personne depuis l'application de bureau sont protégés de la même manière. Un enregistrement transporte la révision dont il est parti, et si la Note a bougé entre-temps, l'application garde la modification de la personne comme brouillon local et signale un conflit de synchronisation au lieu d'écraser la modification de Claude. La version appartient à la Note. Vous la prenez dans list_note_tabs avant de créer un onglet et dans read_note_tab avant d'en modifier un. Quand la personne modifie n'importe quel onglet de la Note, la prochaine écriture de Claude doit relire, même si elle vise un autre onglet. Cette lecture supplémentaire coûte peu, et elle garantit que Claude n'écrit jamais à partir d'une image obsolète de la Note. Créer un onglet ne fait qu'ajouter. create_note_tab crée des onglets Slides et Sheet et ne peut pas remplacer le contenu d'un onglet existant. Chaque opération de modification correspond à un type d'onglet : replace_text pour les onglets Note et Markdown, slide_add et slides_add_outline pour Slides, sheet_set_range pour des cellules précises d'une Sheet, replace_tab_data pour les autres onglets de contenu pris en charge. Les fichiers restent des métadonnées. list_note_attachments liste les Files et Sources d'une Note, mais ne renvoie ni le contenu des fichiers ni de liens de téléchargement. Un lien collé dans un chat pourrait être transféré n'importe où et continuerait de fonctionner après la révocation de la connexion. Claude peut ajouter une citation avec add_note_source, qui prend une URL HTTP ou HTTPS, la version de la Note et une clé, comme les autres écritures. Déplacer la Note coupe l'accès dès l'appel suivant. Déplacez-la vers un projet qui n'est pas dans la connexion, retirez le projet de la connexion ou cliquez sur Revoke connection, et la prochaine lecture de Claude est refusée. Un jeton émis plus tôt ne garde pas l'accès ouvert. Et ensuite Demandez à Claude de transformer la plage Owners en un briefing de cinq diapositives dans un nouvel onglet Slides, puis modifiez vous-même le titre d'une diapositive pendant qu'il travaille. Vous verrez l'écriture refusée et la relecture dans les appels d'outils. La place des onglets Slides par rapport au reste d'une Note est décrite sur la page Note Slides.
This is a summary aggregated from Dev.to. Read the complete article on the original site:
Read full article at Dev.to