Construis pour l'écosystème avec ton propre agent
Construis des extensions SOIS avec l'agent IA que tu utilises déjà (Claude, ChatGPT, Cursor, Gemini, ou tout outil compatible MCP). Tu connectes ton agent au serveur MCP de SOIS, tu construis l'extension sur ta propre machine, puis tu la téléverses pour examen et publication. Tu utilises ton propre IA, SOIS ne facture rien pour construire.
C'est la voie écosystème. N'importe qui peut construire pour le marketplace et gagner de l'argent avec ses apps. Tu n'as pas besoin du portail développeur pour construire une extension personnalisée, connecter ton agent suffit. Le portail est l'endroit où tu publies sur le marketplace et gères tes paiements. Voir Monétise tes apps pour le modèle de revenus.
Comment ça marche
- Connecte ton agent au serveur MCP de ton workspace (OAuth, ou un jeton).
- Construis localement contre la spec SOIS que ton agent lit via MCP.
- Valide avec une vérification statique gratuite jusqu'à ce que ce soit propre.
- Téléverse le bundle. Il est durci, contrôlé et mis en file d'attente pour examen.
- Examine et publie. Une fois approuvé, ton extension est en ligne dans le marketplace.
Connecte ton agent
Les outils de build se trouvent sur le propre serveur MCP de ton workspace, le même endpoint couvert dans MCP Server. Il n'y a pas de serveur de build séparé à configurer: tu te connectes une fois, et parce que ton compte peut construire, les outils de build apparaissent automatiquement dans la liste d'outils de ton agent. Ils sont protégés par des droits admin, donc ils n'apparaissent que pour les comptes capables de construire.
Server: https://<your-workspace-host>/api/mcp
Discovery: https://<your-workspace-host>/.well-known/mcp.json
Connexion: la voie recommandée est OAuth. Ajoute l'URL MCP à ton client (Claude, ChatGPT, Cursor, et autres), il découvre la connexion et se connecte sans rien à coller. Un jeton Bearer plus un en-tête X-Api-Key fonctionne aussi pour les clients qui ne font pas OAuth. Voir MCP Server pour le flux complet de connexion et les détails de découverte.
Ton agent a alors les outils de build disponibles. Commence chaque build en lui demandant de lire les règles.
Les outils de build
| Outil | Ce qu'il fait |
|---|---|
getExtensionRules |
Le manifeste canonique, les règles de migration, permission, toolkit, i18n, UI et sécurité. Appelle-le en premier. |
getExtensionFrameSpec |
Le contrat du frame hôte pour la prévisualisation locale: la signature de montage, les tokens de thème, la forme de l'API REST et le format du bundle. |
createExtensionProject |
Crée un nouveau projet d'app. Retourne un project_id. |
validateExtensionBundle |
Exécute à sec la porte statique gratuite sur tes fichiers et retourne les problèmes à corriger. Exécute-le aussi souvent que tu veux. |
uploadExtensionBundle |
Soumets ton bundle. Il est durci, contrôlé et en cas de succès mis en file d'attente pour examen. |
getExtensionStatus |
Le statut du cycle de vie et le dernier rapport de validation pour un projet. |
listExtensionProjects |
Tes projets et leur statut. |
Format du bundle
Une extension est un petit bundle de fichiers:
| Fichier | Objectif |
|---|---|
manifest.json |
La source unique de vérité: id, entités, modèle de données, permissions, fichiers. |
index.js |
L'UI, écrite comme un IIFE JavaScript vanilla qui se monte via window.AppExtension.mount. Aucun framework dans le bundle. |
toolkit.js |
Outils optionnels pour l'agent, suivant le pattern examiner. |
permissions.json |
Clés de permission qui correspondent à tes noms de routes. |
migrations/ |
Tables de base de données nommées ext_{name}_{table} avec un id et une colonne JSON data. |
lang/ |
Fichiers de locale, chaque clé préfixée par ext_{name}. |
Règles clés que ton agent applique depuis getExtensionRules:
- Les champs métier vivent dans la colonne JSON
data, pas comme colonnes séparées. - Pas de clés étrangères entre extensions, pas de
DROP,TRUNCATEoudropColumndans unup()de migration, pas de SQL brut, pas d'accès shell ou filesystem. - Style l'UI avec les tokens de thème
--ext-*pour qu'elle corresponde à SOIS. Ne code jamais en dur les couleurs ou le texte visible par l'utilisateur.
Valide avant de téléverser
validateExtensionBundle exécute la même porte statique gratuite que le serveur exécute au téléversement, donc tu peux corriger les problèmes localement d'abord. Il vérifie les types de fichiers, la sécurité des migrations, la structure du manifeste, le nommage et l'i18n. La porte côté serveur est toujours la référence: réussir localement est une commodité, pas une garantie.
Téléverse, examine, publie
Quand uploadExtensionBundle signale un succès, ton bundle est stocké dans une zone d'examen privée et ton projet passe en examen. Un examinateur le vérifie et soit l'approuve, ce qui le publie sur le marketplace, soit le renvoie avec des commentaires pour que tu le corriges et le téléverses à nouveau.
Prochaines étapes
- Construis une intégration vers une app SOIS existante comme la comptabilité ou l'entrepôt.
- Monétise tes apps: gagne une part chaque fois qu'un locataire utilise ton app publiée.