Guilda WorkDevelopers

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

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripció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)

ToolDescripción
videollamadas_crear_sala(tenant: str, nombre_mostrado: str, moderador: bool = True)Crea una sala de videollamada nueva para un tenant (Jitsi Meet) y