Crea para el ecosistema con tu propio agente
Crea extensiones de SOIS con el agente de IA que ya usas (Claude, ChatGPT, Cursor, Gemini, o cualquier herramienta compatible con MCP). Conectas tu agente al servidor MCP de SOIS, creas la extensión en tu propia máquina y luego la subes para revisión y publicación. Usas tu propia IA; SOIS no cobra nada por crear.
Esta es la vía del ecosistema. Cualquiera puede crear para el mercado y ganar con sus apps. No necesitas el portal de desarrollo para crear una extensión personalizada; conectar tu agente es suficiente. El portal es donde publicas en el mercado y gestionas tus pagos. Consulta Monetiza tus apps para ver el modelo de ingresos.
Cómo funciona
- Conecta tu agente al servidor MCP de tu espacio de trabajo (OAuth, o un token).
- Crea localmente contra la especificación de SOIS que tu agente lee por MCP.
- Valida con una comprobación estática gratuita hasta que quede limpio.
- Sube el paquete. Se endurece, se controla y se pone en cola para revisión.
- Revisa y publica. Una vez aprobado, tu extensión está disponible en el mercado.
Conecta tu agente
Las herramientas de creación viven en el propio servidor MCP de tu espacio de trabajo, el mismo extremo que se describe en Servidor MCP. No hay ningún servidor de creación separado que configurar: te conectas una vez y, como tu cuenta puede crear, las herramientas de creación aparecen automáticamente en la lista de herramientas de tu agente. Están controladas por administrador, por lo que solo se muestran para las cuentas con capacidad de creación.
Server: https://<your-workspace-host>/api/mcp
Discovery: https://<your-workspace-host>/.well-known/mcp.json
Conexión: la vía recomendada es OAuth. Añade la URL de MCP a tu cliente (Claude, ChatGPT, Cursor y otros); descubre el inicio de sesión y se conecta sin pegar nada. Un token Bearer más una cabecera X-Api-Key también funciona para los clientes que no usan OAuth. Consulta Servidor MCP para ver el flujo completo de conexión y los detalles de descubrimiento.
Tu agente tiene entonces las herramientas de creación disponibles. Empieza cada creación pidiéndole que lea las reglas.
Las herramientas de creación
| Tool | What it does |
|---|---|
getExtensionRules |
El manifiesto canónico, las reglas de migración, permisos, kit de herramientas, i18n, interfaz y seguridad. Llámalo primero. |
getExtensionFrameSpec |
El contrato del marco del host para la vista previa local: la firma de montaje, los tokens de tema, la forma de la API REST y el formato del paquete. |
createExtensionProject |
Crea un nuevo proyecto de app. Devuelve un project_id. |
validateExtensionBundle |
Ejecuta la puerta estática gratuita en tus archivos y devuelve los problemas que hay que solucionar. Ejecútalo tantas veces como quieras. |
uploadExtensionBundle |
Envía tu paquete. Se endurece, se controla y, si pasa, se pone en cola para revisión. |
getExtensionStatus |
El estado del ciclo de vida y el último informe de validación de un proyecto. |
listExtensionProjects |
Tus proyectos y su estado. |
Formato del paquete
Una extensión es un paquete pequeño de archivos:
| File | Purpose |
|---|---|
manifest.json |
La única fuente de verdad: id, entidades, modelo de datos, permisos, archivos. |
index.js |
La interfaz, escrita como un IIFE de JavaScript vainilla que se monta mediante window.AppExtension.mount. Ningún framework en el paquete. |
toolkit.js |
Herramientas de agente opcionales, siguiendo el patrón del examinador. |
permissions.json |
Claves de permiso que coinciden con tus nombres de ruta. |
migrations/ |
Tablas de base de datos llamadas ext_{name}_{table} con una columna id y una columna JSON data. |
lang/ |
Archivos de localización, cada clave con el prefijo ext_{name}. |
Reglas clave que tu agente aplica desde getExtensionRules:
- Los campos de negocio viven dentro de la columna JSON
data, no como columnas separadas. - No hay claves externas entre extensiones, ni
DROP,TRUNCATEnidropColumnen una migraciónup(), ni SQL en bruto, ni acceso a shell ni al sistema de archivos. - Da estilo a la interfaz con los tokens de tema
--ext-*para que coincida con SOIS. Nunca codifiques colores ni texto visible al usuario.
Valida antes de subir
validateExtensionBundle ejecuta la misma puerta estática gratuita que ejecuta el servidor al subir, para que puedas solucionar problemas localmente primero. Comprueba tipos de archivo, seguridad de migraciones, estructura del manifiesto, nomenclatura e i18n. La puerta del lado del servidor es siempre la autorizada: pasar localmente es una comodidad, no una garantía.
Sube, revisa, publica
Cuando uploadExtensionBundle informa de un aprobado, tu paquete se almacena en un área de revisión privada y tu proyecto pasa a revisión. Un revisor lo comprueba y lo aprueba, lo que lo publica en el mercado, o te lo devuelve con comentarios para que lo arregles y lo subas de nuevo.
Pasos siguientes
- Crea una integración con una app de SOIS existente, como contabilidad o almacén.
- Monetiza tus apps: gana una parte cada vez que un inquilino use tu app publicada.