Servidor MCP

Conecta herramientas de IA a Flowtly a través del Model Context Protocol en mcp.flowtly.eu.

Conectar

claude mcp add --transport http flowtly https://mcp.flowtly.eu/mcp

En esta página

Cuentas Bancarias

Herramientas

bankAccounts.getObtén una cuenta bancaria por id — nombre, moneda, banco y el formato en que se importan sus extractos.
bankAccounts.listLista las cuentas bancarias de la organización. Filtra por bank, o establece hidden para incluir las archivadas. Úsalo para resolver el id de bankAccount por el que filtra transactions.list.
bankAccounts.createCrea una cuenta bancaria (type, name, currency, defaultImportFormat obligatorios). Escritura.
bankAccounts.updateActualiza una cuenta bancaria por id. Escritura.

Clientes

Herramientas

clients.getObtén un cliente por id — nombre, país, moneda, NIF y estado.
clients.listLista los clientes (los clientes de la organización). Filtra por status, o por externalPaymentCustomerId para encontrar el cliente detrás de un id de proveedor de pagos. Úsalo para resolver el id de client por el que filtran invoices.list, deals.list, projects.list y contracts.list.
clients.createCrea un nuevo registro de cliente (name, country, currency, status, tinType obligatorios). Escritura.
clients.updateActualiza un registro de cliente por id. Escritura.

Claves de Configuración

Herramientas

configKeys.catalogLista todas las claves de configuración de la organización que reconoce el backend, con su tipo y valores permitidos. Este es el catálogo de lo que es configurable — léelo antes de configs.get o configs.update en lugar de adivinar el nombre de una clave. El backend aplica los permisos por clave, así que el hecho de que una clave aparezca aquí no garantiza que el usuario conectado pueda escribirla.

Configuraciones

Herramientas

configs.getLee un valor de configuración de la organización por id, donde el id es una clave de configKeys.catalog (por ejemplo, organization-logo-url, organization-icon-url).
configs.updateActualiza un valor de configuración de la organización por id (type + name obligatorios; el backend aplica los permisos por clave de configuración). Escritura.

Contratos

Herramientas

contracts.getObtén un contrato por id — partes, dirección, valor, condiciones cíclicas y fechas.
contracts.listLista contratos. Filtra por direction (incoming / outgoing), counterparty, project, cyclic, name o tags. Úsalo para resolver el id de contract que lee contracts.paymentScheduleLines y al que deals.win puede vincular un negocio ganado.
contracts.paymentScheduleLinesLista el calendario de pagos de un contrato — los plazos en los que se espera que se facture o se pague. Pasa el contractId de contracts.list. Esto es el plan, no lo real: compáralo con transactions.list para ver qué se ha pagado realmente.
contracts.createCrea un contrato. Escritura.
contracts.updateActualiza un contrato por id. Escritura.
contracts.deleteElimina un contrato por id. Escritura.

Grupos de Costes

Herramientas

costGroups.listLista los grupos de costes / centros de coste — las categorías bajo las que se archivan los costes, proveedores y facturas entrantes. Úsalo para resolver el id de costGroup que requiere suppliers.create y que proponen las sugerencias de facturas entrantes.
costGroups.createCrea un grupo de costes / centro de coste (name + type obligatorios). Escritura.
costGroups.updateActualiza el nombre o el tipo de un grupo de costes / centro de coste por id. Escritura.

Contrapartes

Herramientas

counterparties.getObtén una contraparte por id.
counterparties.listLista las contrapartes — todas las partes con las que transacciona la organización. Los indicadores supplier y client indican qué papel(es) desempeña una contraparte, y un registro puede ser ambos a la vez. Esta es la parte que figura en una transacción bancaria, así que es contra lo que se cotejan las facturas entrantes y las transacciones. Filtra por type, supplier, client, cyclic o budgetNeutral.

Notas de CRM

Herramientas

crmNotes.getObtén una nota de CRM por id.
crmNotes.listLista las notas escritas en leads y negocios. Filtra por lead o deal para leer el hilo de comentarios de un registro concreto.
crmNotes.createAñade una nota a un lead o a un negocio (body + exactamente uno de lead/deal). El autor es el usuario conectado. Escritura.
crmNotes.updateActualiza el contenido de una nota de CRM por id. Escritura.
crmNotes.deleteElimina una nota de CRM por id. Escritura.

Motivos de Negocio Perdido

Herramientas

dealLostReasons.getObtén un motivo de negocio perdido por id.
dealLostReasons.listLista, en orden, los motivos por los que un negocio puede marcarse como perdido. deals.lose requiere un lostReasonId de aquí.

Negocios

Herramientas

deals.getObtén un negocio por id — título, cliente, etapa, importe, propietario, contacto, y fechas de cierre prevista y real.
deals.listLista negocios/oportunidades — el pipeline de ventas. Filtra por status (open / won / lost), stage, owner, client, lead, o por rangos de expectedCloseDate / closedAt. Los importes están en unidades menores con una moneda explícita; no asumas la moneda por defecto de la organización.
deals.createCrea un negocio/oportunidad (title, client, stage obligatorios; amountMinor, currency, expectedCloseDate, owner, contact opcionales). Escritura.
deals.updateActualiza un negocio por id (title, stage, amount, fecha de cierre, owner, contact). Mover la etapa se registra automáticamente. Escritura.
deals.deleteElimina un negocio por id (borrado lógico). Escritura.
deals.winMarca un negocio como ganado — lo mueve a una etapa de ganado y lo marca como cerrado; contractId opcional vincula un contrato existente. Escritura.
deals.loseMarca un negocio como perdido — requiere lostReasonId (de dealLostReasons.list); lostReasonNote opcional. Escritura.
deals.reopenReabre un negocio ganado/perdido y lo vuelve a dejar abierto. Escritura.

Historiales de Etapas de Negocio

Herramientas

dealStageHistories.getObtén un registro de cambio de etapa de negocio por id.
dealStageHistories.listLista las transiciones de etapa de un negocio, de la más reciente a la más antigua. Filtra por deal. Cada deals.update que mueve la etapa se registra aquí automáticamente, así que es la forma de reconstruir cuánto tiempo pasó un negocio en cada etapa — el propio negocio solo conserva la etapa actual.

Facturas Entrantes

Herramientas

incomingInvoices.getObtén una factura entrante (de proveedor) o documento justificativo por id, con sus campos extraídos por OCR y su estado de conciliación actual.
incomingInvoices.listLista las facturas entrantes (de proveedor) y los documentos justificativos — la bandeja de entrada contable. Una factura entrante ES un documento adjunto a una transacción bancaria, así que exists.transaction=false es la forma de encontrar documentos que aún no están conciliados con un pago. Filtra también por status, relatedMonth, counterparty, project, tags o hasDetectedProblems. Cada documento se identifica de forma única como externalId 'upload_sha256:<sha256 de los bytes>' — calcula el hash de un archivo y busca ese externalId aquí ANTES de incomingInvoices.create, o archivarás un duplicado.
incomingInvoices.matchCandidatesLista las transacciones bancarias que podrían ser el pago de esta factura entrante, clasificadas por el propio comparador del backend. Recurre a esto cuando un documento no tiene ninguna transacción adjunta y necesitas elegir una; prefiere estos candidatos antes que adivinar tú mismo a partir de los importes.
incomingInvoices.suggestionsLee las propuestas de Flowtly para una factura entrante — coincidencia de proveedor, grupo de costes, transacción bancaria coincidente, aviso de duplicado. Son exactamente las mismas propuestas que ve una persona en la aplicación. Léelas primero, y luego aplica una por id con incomingInvoices.applySuggestion, o acéptalas todas con acceptAllSuggestions. Pasa refresh para recalcularlas en lugar de servir el conjunto en caché.
incomingInvoices.suggestionsDebugExplica POR QUÉ las sugerencias de una factura entrante salieron como salieron — la puntuación del comparador, para diagnosticar una sugerencia ausente o incorrecta. Solo para diagnóstico; usa incomingInvoices.suggestions para el trabajo normal.
incomingInvoices.createArchiva una factura entrante (de proveedor) o documento justificativo en contabilidad — pasa los bytes en base64 con un fileName y receivedAt. Flowtly la procesa por OCR y sugiere un proveedor y una transacción bancaria coincidente. El archivo se identifica de forma única como externalId 'upload_sha256:<sha256 de los bytes>': para evitar un duplicado, calcula el hash de los bytes y comprueba incomingInvoices.list en busca de ese externalId ANTES de subirlo. Escritura.
incomingInvoices.applySuggestionAcepta una de las propias sugerencias de Flowtly sobre una factura entrante — las mismas propuestas que ve una persona en la aplicación (coincidencia de proveedor, grupo de costes, transacción bancaria coincidente, aviso de duplicado). Léelas primero con incomingInvoices.suggestions, y luego aplica una por su id. Prefiere esto antes que adivinar: el comparador de Flowtly, no el agente, decide qué es plausible. Escritura.
incomingInvoices.acceptAllSuggestionsAcepta todas las sugerencias pendientes de una factura entrante en una sola llamada — lo mismo que hace una persona con el botón "aceptar todo" de la aplicación. El servidor aplica, reconstruye, y vuelve a aplicar hasta que no aparece nada nuevo: la coincidencia de transacción NO existe hasta que se aplican el proveedor y el importe, así que un solo pase dejaría el documento sin adjuntar. Devuelve un informe (qué se aplicó, qué se rechazó y por qué, y la transacción contra la que terminó archivado). Pasa dryRun para previsualizar sin escribir. Nunca acepta supplier_create ni un aviso de duplicado. Escritura.
incomingInvoices.checkEInvoicesTrae a la organización las nuevas facturas electrónicas KSeF — lo que hace el botón "Sprawdź e-faktury" de la aplicación. Llama a esto antes de concluir que falta la factura de un proveedor: sin ello no puedes distinguir "el proveedor nunca la envió" de "nuestra sincronización aún no se ha ejecutado". Devuelve la respuesta en cuanto la descarga queda encolada; vuelve a leer incomingInvoices.list después para ver qué llegó. Escritura.

Facturas

Herramientas

invoices.getObtén una factura saliente (de venta) por id — cliente, líneas, totales, fecha de venta y de emisión, estado.
invoices.listLista las facturas salientes (de venta). Filtra por client, tags, search, o un rango de saleDate. Ten en cuenta que saleDate — no la fecha de emisión ni la de creación — es el campo por el que filtra invoices.export, así que usa el mismo aquí al conciliar una exportación.
invoices.exportInicia una exportación en ZIP de las facturas EMITIDAS de un período (from/to, ambos en YYYY-MM-DD, inclusive) filtrado por FECHA DE VENTA — no la fecha de emisión ni la de creación. Solo se incluyen las facturas EMITIDAS; los borradores y las facturas no enviadas quedan excluidos, pero las correcciones SÍ se incluyen. El parámetro client opcional restringe a un solo cliente (id o IRI de clients.list). Máximo 200 facturas por exportación — si el período tiene más, redúcelo (por ejemplo, exporta un mes a la vez); un período con 0 facturas emitidas también se rechaza. Esta llamada solo encola el trabajo (generar un mes puede tardar minutos) — NO devuelve un enlace de descarga. Consulta invoices.exportStatus con el exportId devuelto hasta que indique "ready". Escritura.
invoices.exportStatusConsulta el estado de una exportación ZIP iniciada por invoices.export, mediante exportId. Cuando status es "ready", la respuesta incluye downloadUrl (un enlace firmado de corta duración — caduca en 1 hora, ver expiresAt), filename, y byteSize; los bytes del archivo nunca se devuelven a través de esta herramienta. Si status es "failed", failureReason explica el motivo.

Contactos de Lead

Herramientas

leadContacts.getObtén un contacto de lead por id.
leadContacts.listLista las personas de contacto asociadas a los leads. Filtra por lead para leer los contactos de un prospecto, o por email para averiguar de qué lead vino un mensaje.
leadContacts.createAñade una persona de contacto a un lead (lead + name obligatorios; email, phone, role, isPrimary opcionales). Escritura.
leadContacts.updateActualiza un contacto de lead por id. Escritura.
leadContacts.deleteElimina un contacto de lead por id. Escritura.

Pertenencias a Listas de Leads

Herramientas

leadListMemberships.getObtén una pertenencia de lead a lista por id.
leadListMemberships.listLista qué leads están en qué listas de prospección saliente, con el estado de contacto de cada uno (contacted / replied / bounced). Filtra por list, lead o status — así se lee el estado de una campaña.
leadListMemberships.createAñade un lead a una lista saliente (list + lead obligatorios; status opcional). Escritura.
leadListMemberships.updateActualiza la pertenencia de un lead en una lista — por ejemplo, establece el estado de contacto (contacted/replied/bounced). Escritura.
leadListMemberships.deleteElimina un lead de una lista saliente. Escritura.

Listas de Leads

Herramientas

leadLists.getObtén una lista de prospección saliente por id.
leadLists.listLista las listas de prospección saliente. Úsalo para resolver el id de list que requiere leadListMemberships.create.
leadLists.createCrea una lista de prospección saliente (name obligatorio). Escritura.
leadLists.updateActualiza una lista saliente por id. Escritura.
leadLists.deleteElimina una lista saliente por id. Escritura.

Motivos de Lead Perdido

Herramientas

leadLostReasons.getObtén un motivo de lead perdido por id.
leadLostReasons.listLista, en orden, los motivos por los que un lead puede marcarse como perdido.

Leads

Herramientas

leads.dedupeCheckComprueba si un prospecto ya está en el CRM, usando los mismos filtros que leads.list (companyName, source, owner, …). Llama a esto ANTES de leads.create: un lead duplicado divide el historial de contacto entre dos registros, y nada más adelante los fusionará por ti.
leads.getObtén un lead por id — empresa, sitio web, origen, estado, propietario y el cliente al que se convirtió, si lo hay.
leads.listLista leads — objetivos de prospección, antes de la cualificación. Filtra por status, source, owner, client, companyName, o rangos de createdAt/closedAt. Un lead cualificado se convierte en un Client más un Deal abierto mediante leads.convert; hasta entonces solo existe aquí, no en clients.list.
leads.createCrea un lead (objetivo de prospección saliente/entrante; companyName, source, status, owner, client vinculado opcionales). Escritura.
leads.updateActualiza un lead por id (company, website, source, status, owner, client vinculado). Escritura.
leads.deleteElimina un lead por id (borrado lógico). Escritura.
leads.convertConvierte un lead cualificado en un Client + un contacto por cada lead-contact + un Deal abierto. Requiere un cliente existente (el client del lead o un clientId en el cuerpo). Escritura.

Etapas de Lead

Herramientas

leadStages.getObtén una etapa de lead por id.
leadStages.listLista, en orden, las etapas por las que pasa un lead. Los leads tienen su propio conjunto de etapas — los negocios usan stages.list, que es algo distinto.

Pie de Correo de la Organización

Herramientas

organizationMailFooter.getLee el texto del pie de correo saliente de la organización (el bloque que se añade a los correos que Flowtly envía en nombre de la organización).
organizationMailFooter.updateActualiza el texto del pie de correo saliente de la organización. Escritura.

Organizaciones

Herramientas

organizations.getObtén una organización por id. AVISO — esto NO te dice a qué organización estás conectado. Una conexión OAuth está fijada a una única organización (vinculada al token), pero este endpoint devuelve cualquier organización de la que sea miembro el USUARIO conectado, así que una lectura exitosa aquí puede parecer una confirmación de que estás trabajando en esa organización cuando puede que no sea así. Para verificar el tenant en el que realmente estás operando, lee en su lugar datos con alcance de tenant — people.list o clients.list — y nunca inicies una escritura masiva basándote solo en esta llamada.

Personas

Herramientas

people.getObtén un registro de persona/empleado por id — nombres, correos, teléfono, responsable, y si está activo.
people.listLista personas/empleados. Filtra por isActive, reportsTo (el id de un responsable), projectMembers.project, o search; pagina con cursor. Personas y empleados comparten el mismo id, así que esta es la forma de resolver el id de employee que esperan las herramientas de horas trabajadas, responsabilidades, pertenencia a proyecto y permisos.
people.createCrea un registro de persona/empleado (firstname + lastname obligatorios; companyEmail, contactEmail, contactPhone opcionales). Escritura.
people.updateActualiza un registro de persona/empleado por id (name, companyEmail, contactEmail, contactPhone, etc.). Escritura.
people.deleteElimina un registro de empleado/persona por id (por ejemplo, para quitar un empleado de marcador de posición/ficticio). Requiere ROLE_EMPLOYEES_MANAGER; el backend ejecuta un procesador de borrado que también desvincula los registros relacionados. Alto impacto, irreversible. Escritura.
people.setPermissionGroupsEstablece (sustituye) los grupos de permisos de una persona mediante ids numéricos de grupo (consulta permissionGroups.list — por ejemplo, el grupo "Business Owner" otorga ROLE_ADMIN). Concede acceso; NO crea un inicio de sesión ni envía un correo a la persona. Escritura.

Grupos de Permisos

Herramientas

permissionGroups.getObtén un grupo de permisos por id, incluidas las cadenas ROLE_* que otorga.
permissionGroups.listLista los grupos de permisos de la organización y los roles que otorga cada uno — por ejemplo, el grupo "Business Owner" otorga ROLE_ADMIN. Lee esto antes de people.setPermissionGroups: los roles en la respuesta son la fuente de verdad sobre lo que realmente permite un grupo, así que nunca tienes que adivinarlo por su nombre.
permissionGroups.createCrea un grupo de permisos (name obligatorio; roles = lista de cadenas ROLE_* que otorga). Escritura.
permissionGroups.updateActualiza el nombre, la descripción o los roles otorgados de un grupo de permisos por id. Escritura.

Pipelines

Herramientas

pipelines.getObtén un pipeline de ventas por id.
pipelines.listLista los pipelines de ventas. Un pipeline tiene un conjunto ordenado de etapas — léelas con stages.list filtrado por pipeline.

Proyectos

Herramientas

projects.getObtén un proyecto por id — nombre, tipo, cliente, fechas, descripción y precio.
projects.listLista proyectos. Filtra por type (fixed-price | time-and-material | non-billable | internal), client.name, employee, name, o rangos de dateFrom/dateTo. Úsalo para resolver el id de project que requieren las tareas, el registro de horas trabajadas, los presupuestos y los contratos.
projects.createCrea un proyecto (name + type obligatorios; type = fixed-price|time-and-material|non-billable|internal; dateFrom/dateTo, client, publicDescription, notes, priceNet opcionales). Escritura.
projects.updateActualiza un proyecto por id (name, type, fechas, descripción, etc.). Escritura.

Responsabilidades

Herramientas

responsibilities.getObtén una responsabilidad por id.
responsibilities.listLista las responsabilidades dentro de un grupo RACI. Filtra por responsibilityGroup. Las responsabilidades pueden anidarse mediante parent; las personas se asignan a ellas a través de responsibilityEmployees, no directamente.
responsibilities.createCrea una responsabilidad dentro de un grupo (responsibilityGroup = id de grupo o IRI, + name, obligatorios; description opcional; parent opcional = el IRI de otra responsabilidad para anidar). Asigna personas a ella mediante responsibilityEmployees.create. Escritura.
responsibilities.updateActualiza una responsabilidad por id (name, description, parent, responsibilityGroup = id de grupo o IRI). Escritura.

Empleados de Responsabilidad

Herramientas

responsibilityEmployees.getObtén una asignación de responsabilidad por id.
responsibilityEmployees.listLista quién está asignado a qué responsabilidad, y en qué porcentaje. Filtra por employee para leer toda la carga RACI de una persona en todos los grupos.
responsibilityEmployees.createAsigna un empleado a una responsabilidad (responsibility = id de responsabilidad o IRI, employee = id de empleado o IRI, percentage 0-100, todos obligatorios; targets y description opcionales). Escritura.
responsibilityEmployees.updateActualiza una asignación de responsabilidad por id (percentage, targets, description). Escritura.
responsibilityEmployees.deleteElimina la asignación de un empleado a una responsabilidad por id. Escritura.

Grupos de Responsabilidad

Herramientas

responsibilityGroups.getObtén un grupo de responsabilidad por id.
responsibilityGroups.listLista los grupos de responsabilidad / áreas RACI — los elementos de nivel superior "Odpowiedzialności", cada uno con una persona responsable (accountable). Las responsabilidades individuales cuelgan de ellos.
responsibilityGroups.createCrea un grupo de responsabilidad / área RACI (name obligatorio; description y responsibleEmployee opcionales = la persona responsable (accountable), indicada como un id de empleado simple como 6 (de people.list) o el IRI /people/6). Este es el elemento de nivel superior 'Odpowiedzialności'. Añade responsabilidades individuales debajo de él mediante responsibilities.create. Escritura.
responsibilityGroups.updateActualiza un grupo de responsabilidad por id (name, description, responsibleEmployee = id de empleado o IRI). Escritura.

Etapas

Herramientas

stages.getObtén una etapa de negocio por id.
stages.listLista, en orden, las etapas de negocio. Filtra por pipeline. deals.create requiere un id de stage de aquí, y mover un negocio entre etapas es lo que registra dealStageHistories.

Proveedores

Herramientas

suppliers.listLista proveedores/contratistas — se sirve desde /contractors, así que "supplier" y "contractor" son el mismo registro. Filtra por cyclic para proveedores recurrentes. Úsalo para resolver el supplier contra el que se archiva un coste, un contrato o una factura entrante.
suppliers.createCrea un nuevo registro de proveedor/contratista (name, tinType, costGroup obligatorios). Escritura.
suppliers.updateActualiza los datos de un proveedor/contratista (name, NIF, condiciones de pago, etc.) por id. Escritura.

Definiciones de Etiqueta

Herramientas

tagDefinitions.listLista las definiciones de etiqueta — las etiquetas que se pueden adjuntar a registros, cada una dentro de un grupo de etiquetas. tags.create toma un id de tagDefinition de aquí más el registro al que adjuntarla.
tagDefinitions.createCrea una definición de etiqueta (name, level, tagGroup obligatorios) dentro de un grupo de etiquetas. Escritura.

Grupos de Etiquetas

Herramientas

tagGroups.listLista los grupos de etiquetas — los contenedores que organizan las definiciones de etiqueta.
tagGroups.createCrea un grupo de etiquetas (name obligatorio) para organizar definiciones de etiqueta relacionadas. Escritura.

Comentarios de Tarea

Herramientas

taskComments.listLista los comentarios en tareas de proyecto, de la más antigua a la más reciente. Filtra por task para leer la discusión de una tarea.
taskComments.createAñade un comentario a una tarea de proyecto (id de task + content). Escritura.

Listas de Tareas

Herramientas

taskLists.listLista las listas de tareas — las columnas/secciones del tablero en las que se archivan las tareas. Filtra por project. tasks.create toma un id de list de aquí.

Tareas

Herramientas

tasks.getObtén una tarea de proyecto por id — título, proyecto, estado, lista, asignados, fechas y recurrencia.
tasks.listLista tareas de proyecto. Filtra por project, list, status, assignees, isTemplate, o rangos de startAt/dueAt. Las tareas recurrentes exponen recurrenceParent y recurrenceRule, así que una ocurrencia generada se puede rastrear hasta la regla que la produjo. Para decidir si una tarea está TERMINADA, compara su status con taskStatuses.list (isClosed) en lugar de comparar por el nombre del estado.
tasks.createCrea una tarea de proyecto (title + project obligatorios; status, list, assignees, dueAt, priority opcionales). Escritura.
tasks.updateActualiza una tarea de proyecto por id — cambia status (incl. marcarla como hecha), assignees, dueAt, title, etc. Escritura.

Estados de Tarea

Herramientas

taskStatuses.listLista los estados de tarea de proyecto, en el orden del tablero. isClosed marca los estados de finalización e isDefault el estado que recibe una tarea nueva. Lee esto antes de interpretar el estado de una tarea — los nombres son configurables por la organización, así que "Done" no es una cadena fiable con la que comparar.

Grupos Fiscales

Herramientas

taxGroups.listLista los grupos fiscales. Úsalo para resolver el id de taxGroup por el que filtra taxRules.list y que llevan las líneas de factura.
taxGroups.createCrea un grupo fiscal (name + type obligatorios). Escritura.
taxGroups.updateActualiza el nombre o el tipo de un grupo fiscal por id. Escritura.

Reglas Fiscales

Herramientas

taxRules.listLista las reglas fiscales — los tipos y los períodos a los que se aplican. Filtra por taxGroup.
taxRules.createCrea una regla fiscal. Escritura.
taxRules.updateActualiza una regla fiscal por id. Escritura.

Transacciones

Herramientas

transactions.listLista las transacciones bancarias — el feed bancario contra el que se concilian las facturas entrantes. Filtra por bankAccount, counterpartyRole, cost, ignored, hasDetectedProblems, un rango de orderDate/execDate, o amount.between. Ten en cuenta que orderDate y execDate son distintos: un pago se puede ordenar en un mes y ejecutarse en el siguiente.
transactions.suggestionsLee las propuestas de Flowtly para una transacción bancaria — contra qué counterparty, cost group o documento debería archivarse. Es el reflejo de incomingInvoices.suggestions, desde el lado del dinero.

Horas Trabajadas

Herramientas

workTimes.getObtén una entrada de horas trabajadas por id — fecha, minutos, proyecto, notas y el empleado al que pertenece.
workTimes.listLista las entradas de horas trabajadas (horas registradas). Filtra por rango de fechas (date.after / date.before, YYYY-MM-DD) y opcionalmente por employee o project; pagina con cursor. Cada fila lleva employeeId/employeeName y projectId/projectName, así que esta es la forma de exportar todas las horas registradas de un período. IMPORTANTE: los resultados a nivel de organización requieren ROLE_WORKING_HOURS_VIEWER. Sin ese rol, el backend NO da error — devuelve silenciosamente solo las entradas propias del usuario conectado, así que una exportación de "horas de todos" puede volver conteniendo a una sola persona y parecer perfectamente correcta. Si todas las filas pertenecen a un mismo empleado y no filtraste por employee, la respuesta lleva un scopeWarning que lo indica — muéstraselo al usuario en lugar de presentar el resultado como si fuera de toda la organización.
workTimes.logRegistra una entrada de horas trabajadas para el usuario de Flowtly conectado (date, durationMinutes, project, notes). Escritura.

Etiquetas

Herramientas

tags.createAdjunta una definición de etiqueta a un registro (tagDefinition + relationName + relationId; por ejemplo, relationName "counterparty" para etiquetar un proveedor). Escritura.

Contactos de Cliente

Herramientas

clientContacts.createCrea una persona de contacto para un cliente (client, type, name, email obligatorios). Escritura.

Cuentas Bancarias de Contraparte

Herramientas

counterpartyBankAccounts.createAdjunta una cuenta bancaria a una contraparte (counterparty + accountNumber). Escritura.

Icono de la Organización

Herramientas

organizationIcon.uploadSube/sustituye el icono/favicon de la organización (imagen en base64 + contentType + filename). Lee el actual mediante configs.get organization-icon-url. Escritura.