¿Quién puede llamar a las tools?
Solo quien pase el guard OAuth 2.1 + PKCE contra Auth0 (issuer y audience verificados, RS256). El token es de una persona: el agente hereda exactamente sus permisos por módulo (viewer/editor/admin), los mismos que en el panel. Y cada agente interno lleva además su propia allowlist (Fabián: 22 tools de solo lectura).
¿Puede la IA escribir en producción?
Solo 3 tools escriben (crear/editar parte, editar casa) y toda escritura queda en el audit log con el nombre de la tool. En concierge hay un segundo cierre: el kill-switch bloquea por patrón cualquier verbo de escritura mientras un agente está en pruebas.
¿Y los datos sensibles?
Las tools sensibles (códigos de acceso, alarmas) están gateadas por permiso y auditan también cada lectura. Por MCP no viajan secrets ni credenciales; la ficha de casa que ve un agente excluye esos campos salvo tool explícita.
¿Qué pasa si el MCP se cae?
El chat no depende de él: los mensajes viajan por Stream. Los agentes degradan (responden sin dato o pasan a una persona) y los feature flags fallan cerrados: sin configuración, la IA no actúa.
¿Cómo se añade una tool nueva?
Un archivo en el backend con nombre, descripción, schema y ejecución, registrado en el módulo. Al desplegar, todos los clientes la descubren en su siguiente sesión. Los renombres no rompen a nadie: hay alias del nombre viejo al nuevo.
¿Cómo evita el agente ahogarse con 88 tools?
No las carga: Lola usa tool-search semántico y trae solo las 6 más relevantes para cada petición. Menos contexto, menos coste, menos error. Fabián ni busca: lleva su allowlist fija de 22.
¿Auditoría y trazabilidad?
Tres capas: audit log de escrituras y lecturas sensibles (con usuario y tool), traza completa de cada llamada LLM en Langfuse con versión de prompt, y telemetría de producto en PostHog (sugerencia mostrada, aceptada, editada).
¿Nos casamos con Anthropic?
No. MCP es un estándar abierto que ya adoptan OpenAI, Google y Microsoft: los mismos servidores sirven a Claude, ChatGPT o Cursor. Y el modelo es intercambiable: elegimos Sonnet frente a Opus con nuestras propias evals, y podemos repetir esa decisión cuando salga algo mejor.
¿Por qué no function-calling metido en cada agente?
Porque duplicaríamos el contrato en cada agente y framework. Con MCP el catálogo, los permisos y la auditoría viven una sola vez en el servidor, y nos sirve gratis para operar nosotros desde Claude Desktop o Cursor.
¿Qué falta, siendo honestos?
Tres cosas: la validación de inputs es declarativa (el schema guía al modelo; falta validación central de runtime), el rate limit es global por IP (100/min; falta límite por identidad), y los scopes por tool están declarados pero aún no se aplican. Están en la lista de abajo.