INTEGRACIÓN
Catálogo completo de tools (MCP)
Las 117 tools de mcp_tools.py, una por una: nombre, parámetros con tipos y descripción.
Generado a partir del propio código de mcp_tools.py (firma real vía inspect.signature() + primera línea del docstring de cada función) — nunca se desincroniza de lo que de verdad expone el servidor MCP. Usa Ctrl+K para buscar una tool por nombre.
Propias de Guilda Work
| Tool | Descripción |
|---|---|
buscar_semantico(texto: str, limite: int = 5) | Busca por SIGNIFICADO (no solo palabra exacta) en notas/tareas/ |
listar_notas(desde: str | None = None, hasta: str | None = None, texto: str | None = None) | Lista notas del log de actividad (fechas 'YYYY-MM-DD', `texto` filtra por coincidencia parcial). |
crear_nota(texto: str, categoria: str | int | None = None) | Crea una nota rápida con el timestamp actual. `categoria` puede ser el nombre o el id del menú. |
editar_nota(nota_id: int, texto: str) | Edita el texto de una nota existente. |
listar_tareas(estado: str | None = None, prioridad: str | None = None, categoria: str | None = None, texto: str | None = None, desde: str | None = None, hasta: str | None = None) | Lista tareas (estilo Outlook). `desde`/`hasta` filtran por fecha de vencimiento (YYYY-MM-DD). |
crear_tarea(asunto: str, prioridad: str = 'normal', fecha_inicio: str | None = None, fecha_vencimiento: str | None = None, categoria: str | None = None, menu: str | int | None = None, cuerpo: str | None = None) | Crea una tarea (estilo Outlook). `prioridad`: baja/normal/alta. |
editar_tarea(tarea_id: int, asunto: str | None = None, cuerpo: str | None = None, estado: str | None = None, prioridad: str | None = None, fecha_inicio: str | None = None, fecha_vencimiento: str | None = None, categoria: str | None = None, menu: str | int | None = None) | Edita los campos indicados de una tarea existente (solo se tocan los |
completar_tarea(tarea_id: int) | Marca una tarea como completada (100%, fecha de finalización = ahora). |
consultar_calendario(desde: str, hasta: str) | Tareas con vencimiento entre `desde` y `hasta` (YYYY-MM-DD, inclusive) — para vistas tipo calendario. |
conectar_cuenta_correo(nombre: str, protocolo: str, host: str, puerto: int, usuario: str, contrasena: str, usa_tls: bool = True, smtp_host: str | None = None, smtp_puerto: int | None = None, smtp_tls: bool = True) | Conecta una cuenta de correo IMAP o POP3 nueva (protocolo: "imap" o |
listar_cuentas_correo() | Lista las cuentas de correo configuradas (sin la contraseña, que vive en keyring). |
sincronizar_correo(cuenta_id: int) | Descarga los mensajes nuevos. En IMAP, de TODAS las carpetas de la |
listar_carpetas_correo(cuenta_id: int) | Carpetas de una cuenta (ej. "INBOX", "[Gmail]/Sent Mail"...). Las |
listar_bandeja_entrada(cuenta_id: int, carpeta: str = 'INBOX', solo_no_leidos: bool = False, texto: str | None = None, limite: int = 20) | Lista mensajes ya descargados de una carpeta de una cuenta (usa |
leer_correo(mensaje_id: int) | Devuelve un mensaje completo (asunto, remitente, destinatarios, Cc, |
marcar_leido_correo(mensaje_id: int, leido: bool = True) | Marca un mensaje como leído (o no leído, con leido=False). |
eliminar_correo(mensaje_id: int) | Borra un mensaje de la caché local (no del servidor). Si sigue en el |
listar_categorias_correo() | Categorías de color propias de Guilda Work para clasificar correos |
crear_categoria_correo(nombre: str, color: str) | Crea una categoría de correo. `color` en formato hexadecimal, ej. "#e0555a". |
eliminar_categoria_correo(categoria_id: int) | Elimina una categoría. Los mensajes que la tuvieran asignada quedan sin categoría. |
asignar_categoria_correo(mensaje_id: int, categoria_id: int | None = None) | Asigna una categoría a un mensaje, o la quita si `categoria_id` es None. |
obtener_firma_correo(cuenta_id: int) | Firma HTML configurada para una cuenta y cuándo se aplica (en nuevos |
configurar_firma_correo(cuenta_id: int, firma_html: str, en_nuevos: bool = True, en_respuestas: bool = True) | Guarda la firma HTML de una cuenta y cuándo debe aplicarse. |
preparar_borrador_correo(cuenta_id: int, destinatarios: str, asunto: str, cuerpo_html: str, cc: str = '', bcc: str = '', en_respuesta_a: str | None = None) | Prepara un borrador de correo para revisar antes de enviarlo. NO envía nada. |
enviar_borrador_correo(borrador_id: str) | Envía de verdad el borrador preparado con preparar_borrador_correo. |
exportar_historial(formato: str = 'json', desde: str | None = None, hasta: str | None = None, categoria: str | None = None) | Exporta notas y tareas con duración. `formato`: json, csv o md. |
importar_historial(contenido: str, formato: str = 'json') | Importa notas y tareas con duración desde un JSON o CSV (mismo formato que exportar_historial). |
exportar_tareas(formato: str = 'ics', desde: str | None = None, hasta: str | None = None) | Exporta tareas estilo Outlook a .ics o .csv, compatibles con Microsoft Outlook. |
importar_tareas(contenido: str, formato: str = 'ics') | Importa tareas desde un archivo .ics o .csv exportado de Outlook (o de Guilda Work). |
webhooks_listar(tenant: str | None = None) | Lista los webhooks configurados (de un tenant, o de ámbito local |
webhooks_crear(url: str, eventos_suscritos: list[str], tenant: str | None = None) | Da de alta un webhook — `eventos_suscritos` de entre |
webhooks_borrar(webhook_id: int) | Borra un webhook (y su historial de entregas) por id. |
leer_adjunto_chat(adjunto_id: int) | Devuelve el texto de un adjunto que el usuario subió al chat del |
listar_tiquets(estado: str | None = None, tipo: str | None = None) | Lista tiquets de soporte (errores/sugerencias sobre Guilda Work). |
crear_tiquet(tipo: str, titulo: str, descripcion: str | None = None) | Crea un tiquet nuevo (tipo: "error" o "sugerencia"), a nombre del |
editar_tiquet(tiquet_id: int, titulo: str | None = None, descripcion: str | None = None, tipo: str | None = None) | Edita un tiquet propio, solo mientras siga "sin_revisar" (una vez |
eliminar_tiquet(tiquet_id: int) | Elimina un tiquet propio, o cualquiera si eres administrador. |
cambiar_estado_tiquet(tiquet_id: int, estado: str) | Mueve un tiquet a otro estado del Kanban (sin_revisar/en_revision/ |
listar_clientes_fiscales(q: str | None = None) | Lista los clientes fiscales de la gestoría del usuario actual. |
crear_cliente_fiscal(nombre: str, nif: str | None = None, notas: str | None = None, modelos_fiscales: list[str] | None = None) | Da de alta un cliente fiscal. `modelos_fiscales` son los códigos de |
listar_vencimientos_fiscales(estado: str | None = None, cliente_id: int | None = None, desde: str | None = None, hasta: str | None = None) | Vencimientos fiscales de la gestoría (modelos 303/390/130/111/115/200). |
generar_vencimientos_fiscales(cliente_id: int, modelos: list[str], anio: int) | Genera e inserta directamente los vencimientos de `cliente_id` para |
fichar(tipo: str) | Marca un fichaje del usuario actual: tipo = "entrada" | "pausa_inicio" |
listar_mis_fichajes(desde: str | None = None, hasta: str | None = None) | Historial de fichajes del usuario actual, opcionalmente filtrado |
listar_papelera() | Lista lo que hay en la papelera del usuario actual (menús, tareas, |
restaurar_de_papelera(origen: str, id: int) | Restaura un elemento de la papelera (lo saca de ahí, vuelve a estar |
estadisticas_por_categoria(desde: str | None = None, hasta: str | None = None) | Tiempo dedicado a tareas con duración ya finalizadas, agrupado por |
estadisticas_por_dia(desde: str | None = None, hasta: str | None = None) | Igual que estadisticas_por_categoria pero agrupado por día (y menú |
backoffice_listar_tenants() | Lista todos los tenants con su número de usuarios asignados. Solo administradores. |
backoffice_listar_usuarios() | Lista todos los usuarios de la plataforma, con su tenant y rol. Solo administradores. |
backoffice_crear_tenant(nombre: str) | Crea un tenant nuevo (sin aprovisionar ningún servicio externo |
backoffice_renombrar_tenant(tenant_id: int, nombre: str) | Renombra un tenant existente. Solo administradores. |
backoffice_guardar_datos_tenant(tenant_id: int, cif: str | None = None, direccion_fiscal: str | None = None) | Guarda el CIF/dirección fiscal de un tenant (identificación de |
backoffice_alternar_herramienta_tenant(tenant_id: int, herramienta_id: str, visible: bool) | Muestra u oculta una herramienta del catálogo para un tenant |
backoffice_crear_usuario(email: str, tenant_id: int | None = None) | Da de alta un usuario nuevo en Guilda Work (vía Kratos) y, si se |
backoffice_asignar_tenant_usuario(usuario_id: int, tenant_id: int | None = None) | Asigna (o quita, con tenant_id=None) el tenant de un usuario. Solo administradores. |
backoffice_cambiar_rol(usuario_id: int, rol: str) | Cambia el rol de un usuario a 'admin' o 'usuario'. No se puede |
backoffice_asignar_gestor_fichajes(usuario_id: int, valor: bool) | Marca o desmarca a un usuario como gestor de fichajes de su propio |
Stack compartido (sin tenant)
CRM (EspoCRM)
| Tool | Descripción |
|---|---|
crm_listar_leads(texto: str | None = None, limite: int = 20) | Busca/lista Leads del CRM. `texto` filtra por coincidencia parcial. |
crm_crear_lead(nombre: str, email: str = '', telefono: str = '', empresa: str = '') | Crea un Lead en el CRM. |
crm_listar_contactos(texto: str | None = None, limite: int = 20) | Busca/lista Contactos del CRM. |
crm_crear_contacto(nombre: str, email: str = '', telefono: str = '') | Crea un Contacto en el CRM. |
crm_listar_cuentas(texto: str | None = None, limite: int = 20) | Busca/lista Cuentas (empresas/clientes) del CRM. |
crm_crear_cuenta(nombre: str, sitio_web: str = '') | Crea una Cuenta en el CRM. |
Drive (Nextcloud)
| Tool | Descripción |
|---|---|
drive_listar_archivos(carpeta: str = '') | Lista archivos/carpetas del Drive en `carpeta` (ej. "Lueira" para el |
drive_buscar_archivos(texto: str, limite: int = 20) | Busca archivos por nombre en todo el Drive. |
drive_subir_archivo(ruta: str, contenido_texto: str) | Sube un archivo de texto al Drive en `ruta` (ej. "Lueira/nota.txt"). |
drive_descargar_archivo(ruta: str) | Descarga un archivo de texto del Drive por su ruta. |
Proyectos (OpenProject)
| Tool | Descripción |
|---|---|
proyectos_listar() | Lista los proyectos de OpenProject. |
proyectos_listar_tareas(proyecto_id: int | None = None, texto: str | None = None, limite: int = 20) | Lista/busca paquetes de trabajo (tareas) de OpenProject. |
proyectos_crear_tarea(proyecto_id: int, asunto: str, tipo_id: int = 1) | Crea un paquete de trabajo (tarea) en un proyecto de OpenProject. |
Soporte (Chatwoot)
| Tool | Descripción |
|---|---|
soporte_listar_conversaciones(estado: str = 'open', limite: int = 20) | Lista conversaciones de la bandeja de soporte (Chatwoot). `estado`: |
soporte_leer_conversacion(conversacion_id: int) | Mensajes de una conversación de soporte. |
soporte_responder_conversacion(conversacion_id: int, texto: str) | Responde en una conversación de soporte existente. |
Analítica (Metabase)
| Tool | Descripción |
|---|---|
analitica_listar_preguntas() | Lista las preguntas/consultas guardadas en Metabase. |
analitica_ejecutar_pregunta(pregunta_id: int) | Ejecuta una pregunta ya guardada en Metabase y devuelve sus resultados. |
analitica_listar_dashboards() | Lista los dashboards guardados en Metabase. |
Automatizaciones (n8n)
| Tool | Descripción |
|---|---|
automatizaciones_listar_flujos(limite: int = 20) | Lista los flujos de automatización de n8n. |
automatizaciones_ejecutar_flujo(flujo_id: str) | Ejecuta un flujo de n8n ya existente por su id. |
Documentación (Outline)
| Tool | Descripción |
|---|---|
documentacion_listar_colecciones() | Lista las colecciones (carpetas) de la wiki de Outline. |
documentacion_buscar(texto: str, limite: int = 20) | Búsqueda de texto completo en la wiki de Outline. |
documentacion_leer(documento_id: str) | Lee un documento completo de la wiki de Outline. |
documentacion_crear(coleccion_id: str, titulo: str, texto: str = '', publicar: bool = True) | Crea un documento nuevo en la wiki de Outline. |
Chat (Synapse/Matrix)
| Tool | Descripción |
|---|---|
chat_listar_salas() | Lista las salas de chat a las que pertenece el asistente. |
chat_enviar_mensaje(sala_id: str, texto: str) | Envía un mensaje a una sala de chat existente. |
Almacenamiento (MinIO)
| Tool | Descripción |
|---|---|
almacenamiento_listar_buckets() | Lista los buckets de MinIO. |
almacenamiento_listar_archivos(bucket: str, prefijo: str = '', limite: int = 50) | Lista los archivos de un bucket de MinIO. |
almacenamiento_url_descarga(bucket: str, nombre_archivo: str, expira_minutos: int = 60) | Genera una URL de descarga temporal y firmada para un archivo de MinIO. |
Monitorización (Uptime Kuma)
| Tool | Descripción |
|---|---|
monitorizacion_listar_estado() | Estado actual de cada monitor (activo/caído/pendiente/mantenimiento). |
Con parámetro tenant explícito
El primer parámetro tenant es siempre el nombre del tenant tal y como está dado de alta en el backoffice (no su id numérico) — ver Aislamiento multi-cliente.
Facturación (FacturaScripts)
| Tool | Descripción |
|---|---|
facturas_listar_clientes(tenant: str, texto: str | None = None, limite: int = 20) | Lista/busca clientes en la facturación de un tenant. |
facturas_crear_cliente(tenant: str, nombre: str, nif: str = '', email: str = '') | Crea un cliente en la facturación de un tenant. |
facturas_listar_facturas(tenant: str, cliente_codigo: str | None = None, limite: int = 20) | Lista facturas de cliente de un tenant, opcionalmente filtradas por |
facturas_crear_factura(tenant: str, cliente_codigo: str, lineas: list[dict]) | Crea una factura de cliente. `lineas`: lista de |
Firma electrónica (Documenso)
| Tool | Descripción |
|---|---|
firmas_listar_documentos(tenant: str, texto: str | None = None, limite: int = 20) | Lista/busca documentos de firma de un tenant. |
firmas_crear_documento(tenant: str, titulo: str, contenido_pdf_base64: str, firmantes: list[dict]) | Crea un documento para firmar (en borrador, sin enviar todavía). |
firmas_enviar_a_firma(tenant: str, documento_id: str) | Envía un documento en borrador — manda el email de firma a cada |
firmas_descargar_firmado(tenant: str, documento_id: str) | Descarga un documento (PDF en base64 — firmado del todo o no, el |
Gestión documental (Paperless-ngx)
| Tool | Descripción |
|---|---|
documentos_listar(tenant: str, texto: str | None = None, limite: int = 20) | Lista/busca documentos de un tenant en Paperless-ngx. |
documentos_subir(tenant: str, titulo: str, contenido_pdf_base64: str, nombre_archivo: str) | Sube un documento (PDF en base64) a Paperless-ngx para OCR/indexado |
documentos_descargar(tenant: str, documento_id: str) | Descarga un documento de un tenant (PDF en base64). |
Hojas de cálculo (Baserow)
| Tool | Descripción |
|---|---|
hojas_listar_tablas(tenant: str) | Lista las tablas del Workspace de un tenant en Baserow. |
hojas_listar_filas(tenant: str, tabla_id: int, texto: str | None = None, limite: int = 20) | Lista/busca filas de una tabla de un tenant. |
hojas_crear_fila(tenant: str, tabla_id: int, campos: dict) | Crea una fila en una tabla de un tenant. `campos`: {"Nombre de |
Reserva de citas (Cal.diy)
| Tool | Descripción |
|---|---|
citas_listar_tipos_evento(tenant: str) | Lista los tipos de evento (los "servicios" reservables) de un tenant. |
citas_listar_reservas(tenant: str, desde: str | None = None, hasta: str | None = None) | Lista las reservas de un tenant, opcionalmente acotadas por fecha |
citas_crear_reserva(tenant: str, tipo_evento_id: int, inicio: str, nombre_asistente: str, email_asistente: str) | Crea una reserva para un tenant. `inicio`: fecha/hora en ISO 8601 |
citas_cancelar_reserva(tenant: str, reserva_uid: str, motivo: str = '') | Cancela una reserva de un tenant por su identificador (uid). |
Newsletter (Listmonk)
| Tool | Descripción |
|---|---|
newsletter_listar_suscriptores(tenant: str, texto: str | None = None, limite: int = 20) | Lista/busca suscriptores de la lista de un tenant. |
newsletter_crear_suscriptor(tenant: str, email: str, nombre: str, atribs: dict | None = None) | Añade un suscriptor a la lista de un tenant. |
newsletter_listar_campanas(tenant: str) | Lista las campañas (newsletters) de un tenant. |
newsletter_crear_campana(tenant: str, nombre: str, asunto: str, cuerpo_html: str) | Crea una campaña (newsletter) en borrador para la lista de un tenant. |
newsletter_enviar_campana(tenant: str, campana_id: int) | Envía una campaña de un tenant ya creada. |
Correo propio (Stalwart)
| Tool | Descripción |
|---|---|
correo_stalwart_listar_mensajes(tenant: str, mailbox: str = 'INBOX', limite: int = 20) | Lista los mensajes recientes de un buzón de un tenant (Stalwart). |
correo_stalwart_leer_mensaje(tenant: str, email_id: str) | Lee el contenido completo de un mensaje de un tenant (Stalwart). |
correo_stalwart_enviar_mensaje(tenant: str, para: str, asunto: str, cuerpo: str) | Envía un mensaje desde la cuenta de correo de un tenant (Stalwart). |
Notificaciones push (ntfy)
| Tool | Descripción |
|---|---|
notificaciones_enviar(tenant: str, titulo: str, mensaje: str, prioridad: str = 'default') | Envía una notificación push al móvil/escritorio de un tenant |
Videollamadas (Jitsi Meet)
| Tool | Descripción |
|---|---|
videollamadas_crear_sala(tenant: str, nombre_mostrado: str, moderador: bool = True) | Crea una sala de videollamada nueva para un tenant (Jitsi Meet) y |