Inventario contrastado con Comal **0.1.0**, el **2026-10-16**. Las referencias de código señalan el punto inspeccionado, no disponibilidad garantizada de servicios externos. ## Catálogo por familia La disponibilidad depende de plugins activos, actor, etapa, packs y capacidades. Un nombre en esta referencia no garantiza que esté ofrecido en cada llamada. El catálogo vigente de la casa es `/operations`; la vista model-facing es `/tools`. ## Archivos y procesos | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `Read` | Texto UTF-8 con números de línea; hasta 1 MiB por archivo. | `src/tools.mjs:14` | | `Write` | Crea/reemplaza texto; verifica lectura propia vigente y bytes escritos. | `src/tools.mjs:15` | | `Edit` | Sustituye texto exacto inspeccionado; coteja el hash antes de editar. | `src/tools.mjs:16` | | `Glob` | Busca rutas relativas; excluye estado interno y dependencias. | `src/tools.mjs:17` | | `Grep` | Busca expresiones con ripgrep; requiere rg instalado. | `src/tools.mjs:18` | | `ListDirectory` | Lista un directorio sin shell (200 entradas por defecto, máximo 1000). | `src/tools.mjs:19` | | `FileInfo` | Metadatos y hasta 32 bytes de firma; no decodifica medios. | `src/tools.mjs:20` | | `Bash` | Proceso de shell después de permiso; no es un sandbox. | `src/tools.mjs:21` | ## Web | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `WebSearch` | Resultados de motores web con fuentes. | `src/web-tools.mjs:10` | | `WebFetch` | Texto de páginas HTTP(S), sin JavaScript ni cookies. | `src/web-tools.mjs:11` | ## Subagentes | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `Agent` | Tarea acotada con identidad durable; explore admite background, general permanece secuencial. allowed_tools es un techo, no un permiso. | `src/subagents.mjs:30` | | `AgentBatch` | Hasta tres exploraciones independientes con reservas durables, outbox y estados separados; sin recursión. | `src/subagents.mjs:31` | | `AgentStatus` | Estados runner/turn/work y referencias de hijos de esta sesión. | `src/subagents.mjs:36` | | `AgentWait` | Espera acotada; no reinicia ni cancela al hijo. | `src/subagents.mjs:37` | | `AgentStop` | Stop durable de un hijo; resume no lo revoca. | `src/subagents.mjs:38` | | `AgentResume` | Continúa la misma ejecución con configuración y autoridad originales restringidas por la política actual. | `src/subagents.mjs:39` | | `AgentBackground` | Pasa el mismo hijo explore activo a background, sin otro spawn. | `src/subagents.mjs:40` | | `AgentContinue` | Continúa una delegación preparada original y completa índices faltantes sin duplicar hijos. | `src/subagents.mjs:35` | ## MCP | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `McpStatus` | Estado y ubicación de configuración MCP. | `src/mcp-runtime.mjs:13` | | `McpConfigure` | Persistir cambios de servidores, bajo juicio. | `src/mcp-runtime.mjs:14` | | `McpReload` | Reconciliar conexiones y catálogo dinámico. | `src/mcp-runtime.mjs:15` | ## Trabajo registrado | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `WorkTaskUpdate` | Actualizar estado de tarea y solicitar su verificación. | `src/work-plan.mjs:112` | | `WorkDraft` | Conservar partes de un artefacto en el trabajo registrado. | `src/work-plan.mjs:120` | | `WorkPlanSet` | Registrar plan, fases, criterios, artefactos y checks. | `src/work-plan.mjs:399` | | `WorkCheckRepair` | Reparar checks conservando identidad y trazabilidad. | `src/work-plan.mjs:400` | | `WorkStepRun` | Ejecutar un check declarado; sigue pasando por el juez. | `src/work-plan.mjs:221` | | `WorkBoard` | Consultar tablero y criterios persistidos. | `src/work-plan.mjs:404` | ## Evidencia | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `WorkSnapshot` | Estado derivado de petición y trabajo. | `src/work-state.mjs:197` | | `AuditStatus` | Verificación de journal y ejecución registrada. | `src/work-state.mjs:198` | | `EvidenceRead` | Páginas y búsqueda literal sobre evidencia guardada, con digest opcional y next_call; UTF-16, sesión propia/hijos directos, sin repetir efectos. | `src/work-state.mjs:179` | ## Sesiones y proveedor | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `ListAgents` | Descubrir otras sesiones vivas por capacidad. | `src/peer-tools.mjs:14` | | `SendMessage` | Enviar texto acotado y correlacionado; entrega no prueba ejecución. | `src/peer-tools.mjs:15` | | `ProviderCapabilities` | Contrato actual del proveedor, sin credenciales. | `src/peer-tools.mjs:69` | | `ProviderSearch` | Grounding nativo cuando está implementado y habilitado. | `src/peer-tools.mjs:70` | | `AnalyzeMedia` | Analizar directamente imágenes/video del workspace con capacidad adecuada. | `src/peer-tools.mjs:71` | ## Packs | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `ToolPack` | Búsqueda determinista ≤5 candidatos con acquire_call; adquirir/release cambia schemas y no permisos. | `src/tool-packs.mjs:54` | ## Plugins | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `PluginStatus` | Estado, dependencias y operaciones publicadas. | `src/cli.mjs:440` | ## Controles del host | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `PluginEnable` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:442` | | `PluginDisable` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:443` | | `PluginReload` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:444` | | `PluginRun` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:445` | | `PluginInitialize` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:450` | | `PluginClose` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:451` | | `McpSync` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:458` | | `McpInitialize` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:459` | | `McpClose` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:460` | | `SessionMode` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:610` | | `SessionModel` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:611` | | `SessionEffort` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:616` | | `SessionRename` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:620` | | `SessionProvider` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:621` | | `SessionLogin` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:628` | | `SessionLogout` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:629` | | `SessionInbox` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:630` | | `ReadTable` | Control humano/interno del host; no es autoridad disponible para el modelo. | `src/cli.mjs:637` | ## Casa | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `HouseContext` | Identidad, límites y alcances de la casa. | `src/cli.mjs:389` | | `OperationCatalog` | Catálogo de contratos para el actor/superficie. | `src/cli.mjs:390` | | `HouseSnapshot` | Recibos, rechazos y operaciones sin cierre. | `src/cli.mjs:391` | ## Tarea Chrome coordinada | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `ChromePublish` | Publica el candidato aceptado y observa su criterio DOM; la casa gestiona versión y target. Sólo con --chrome-task. | `src/workflows/chrome-task.mjs:137` | | `ChromeVerify` | Lee el criterio DOM y coteja el snapshot publicado con identidad vigente; no acredita por sí solo pruebas de interacción. | `src/workflows/chrome-task.mjs:174` | | `ChromeTest` | Ejecuta las interacciones y aserciones declaradas; puede escribir datos de prueba y recargar. Sólo si el encargo incluye tests. | `src/workflows/chrome-task.mjs:175` | | `ChromeFinish` | Ejecuta el check declarado y solicita cierre por el juez; rechaza evidencia que perdió vigencia. | `src/workflows/chrome-task.mjs:176` | | `ChromeRecover` | Reconecta y reconcilia una publicación identificada mediante lecturas. No repite Deploy/Open/Interact ni acredita funcionalidad; bloquea evidencia ausente, ajena o ambigua. /work recover lo ejecuta sin LLM. | `src/workflows/chrome-task.mjs:157` | ## artifacts | Operación | Contrato de uso | Fuente | | --- | --- | --- | | `ArtifactAccount` | Cuenta y workspaces de Comal; nunca expone el token. | `src/artifact-tools.mjs:15` | | `ArtifactList` | Artifacts propios o compartidos explícitamente. | `src/artifact-tools.mjs:16` | | `ArtifactInspect` | Versión, contrato y observaciones guardadas; no repite efectos. | `src/artifact-tools.mjs:17` | | `ArtifactPublish` | Host empaqueta webapp estática del workspace; candidato privado, idempotencia por bytes y procedencia de sesión del host. | `src/artifact-tools.mjs:18` | | `ArtifactVerify` | Solicita ejecución admitida del contrato; espera host opcional ≤30 s sin llamadas adicionales al modelo. | `src/artifact-tools.mjs:19` | | `ArtifactRelease` | Entrega exacta con job passed vigente; no confunde aceptación humana con verificación técnica. | `src/artifact-tools.mjs:20` | ## Límites de archivos y medios Read/Write/Edit trabajan con texto hasta 1 MiB. Read ofrece 400 líneas por defecto y hasta 2000 por llamada. ListDirectory limita a 200 entradas por defecto y hasta 1000. FileInfo lee hasta 32 bytes de firma. AnalyzeMedia acepta un archivo del workspace hasta 16 MiB, sujeto también al límite del adaptador y proveedor; los adaptadores de imagen pueden imponer un límite menor. Las imágenes capturadas por MCP tienen otros límites: hasta dos referencias válidas y 2 MiB por imagen según el adaptador actual. ## Autoridad de controles SessionModel, SessionEffort, SessionLogin y otros controles del host pertenecen al humano. PluginInitialize/McpSync y cierres pertenecen a sus superficies internas. Publicar o conocer su nombre no permite al modelo invocarlos.