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.get | Obtén una cuenta bancaria por id — nombre, moneda, banco y el formato en que se importan sus extractos. |
| bankAccounts.list | Lista 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.create | Crea una cuenta bancaria (type, name, currency, defaultImportFormat obligatorios). Escritura. |
| bankAccounts.update | Actualiza una cuenta bancaria por id. Escritura. |
Clientes
Herramientas
| clients.get | Obtén un cliente por id — nombre, país, moneda, NIF y estado. |
| clients.list | Lista 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.create | Crea un nuevo registro de cliente (name, country, currency, status, tinType obligatorios). Escritura. |
| clients.update | Actualiza un registro de cliente por id. Escritura. |
Claves de Configuración
Herramientas
| configKeys.catalog | Lista 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.get | Lee 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.update | Actualiza 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.get | Obtén un contrato por id — partes, dirección, valor, condiciones cíclicas y fechas. |
| contracts.list | Lista 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.paymentScheduleLines | Lista 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.create | Crea un contrato. Escritura. |
| contracts.update | Actualiza un contrato por id. Escritura. |
| contracts.delete | Elimina un contrato por id. Escritura. |
Grupos de Costes
Herramientas
| costGroups.list | Lista 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.create | Crea un grupo de costes / centro de coste (name + type obligatorios). Escritura. |
| costGroups.update | Actualiza el nombre o el tipo de un grupo de costes / centro de coste por id. Escritura. |
Contrapartes
Herramientas
| counterparties.get | Obtén una contraparte por id. |
| counterparties.list | Lista 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.get | Obtén una nota de CRM por id. |
| crmNotes.list | Lista las notas escritas en leads y negocios. Filtra por lead o deal para leer el hilo de comentarios de un registro concreto. |
| crmNotes.create | Añade una nota a un lead o a un negocio (body + exactamente uno de lead/deal). El autor es el usuario conectado. Escritura. |
| crmNotes.update | Actualiza el contenido de una nota de CRM por id. Escritura. |
| crmNotes.delete | Elimina una nota de CRM por id. Escritura. |
Motivos de Negocio Perdido
Herramientas
| dealLostReasons.get | Obtén un motivo de negocio perdido por id. |
| dealLostReasons.list | Lista, en orden, los motivos por los que un negocio puede marcarse como perdido. deals.lose requiere un lostReasonId de aquí. |
Negocios
Herramientas
| deals.get | Obtén un negocio por id — título, cliente, etapa, importe, propietario, contacto, y fechas de cierre prevista y real. |
| deals.list | Lista 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.create | Crea un negocio/oportunidad (title, client, stage obligatorios; amountMinor, currency, expectedCloseDate, owner, contact opcionales). Escritura. |
| deals.update | Actualiza un negocio por id (title, stage, amount, fecha de cierre, owner, contact). Mover la etapa se registra automáticamente. Escritura. |
| deals.delete | Elimina un negocio por id (borrado lógico). Escritura. |
| deals.win | Marca un negocio como ganado — lo mueve a una etapa de ganado y lo marca como cerrado; contractId opcional vincula un contrato existente. Escritura. |
| deals.lose | Marca un negocio como perdido — requiere lostReasonId (de dealLostReasons.list); lostReasonNote opcional. Escritura. |
| deals.reopen | Reabre un negocio ganado/perdido y lo vuelve a dejar abierto. Escritura. |
Historiales de Etapas de Negocio
Herramientas
| dealStageHistories.get | Obtén un registro de cambio de etapa de negocio por id. |
| dealStageHistories.list | Lista 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.get | Obté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.list | Lista 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.matchCandidates | Lista 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.suggestions | Lee 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.suggestionsDebug | Explica 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.create | Archiva 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.applySuggestion | Acepta 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.acceptAllSuggestions | Acepta 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.checkEInvoices | Trae 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.get | Obtén una factura saliente (de venta) por id — cliente, líneas, totales, fecha de venta y de emisión, estado. |
| invoices.list | Lista 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.export | Inicia 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.exportStatus | Consulta 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.get | Obtén un contacto de lead por id. |
| leadContacts.list | Lista 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.create | Añade una persona de contacto a un lead (lead + name obligatorios; email, phone, role, isPrimary opcionales). Escritura. |
| leadContacts.update | Actualiza un contacto de lead por id. Escritura. |
| leadContacts.delete | Elimina un contacto de lead por id. Escritura. |
Pertenencias a Listas de Leads
Herramientas
| leadListMemberships.get | Obtén una pertenencia de lead a lista por id. |
| leadListMemberships.list | Lista 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.create | Añade un lead a una lista saliente (list + lead obligatorios; status opcional). Escritura. |
| leadListMemberships.update | Actualiza la pertenencia de un lead en una lista — por ejemplo, establece el estado de contacto (contacted/replied/bounced). Escritura. |
| leadListMemberships.delete | Elimina un lead de una lista saliente. Escritura. |
Listas de Leads
Herramientas
| leadLists.get | Obtén una lista de prospección saliente por id. |
| leadLists.list | Lista las listas de prospección saliente. Úsalo para resolver el id de list que requiere leadListMemberships.create. |
| leadLists.create | Crea una lista de prospección saliente (name obligatorio). Escritura. |
| leadLists.update | Actualiza una lista saliente por id. Escritura. |
| leadLists.delete | Elimina una lista saliente por id. Escritura. |
Motivos de Lead Perdido
Herramientas
| leadLostReasons.get | Obtén un motivo de lead perdido por id. |
| leadLostReasons.list | Lista, en orden, los motivos por los que un lead puede marcarse como perdido. |
Leads
Herramientas
| leads.dedupeCheck | Comprueba 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.get | Obtén un lead por id — empresa, sitio web, origen, estado, propietario y el cliente al que se convirtió, si lo hay. |
| leads.list | Lista 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.create | Crea un lead (objetivo de prospección saliente/entrante; companyName, source, status, owner, client vinculado opcionales). Escritura. |
| leads.update | Actualiza un lead por id (company, website, source, status, owner, client vinculado). Escritura. |
| leads.delete | Elimina un lead por id (borrado lógico). Escritura. |
| leads.convert | Convierte 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.get | Obtén una etapa de lead por id. |
| leadStages.list | Lista, 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. |
Organizaciones
Herramientas
| organizations.get | Obté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.get | Obtén un registro de persona/empleado por id — nombres, correos, teléfono, responsable, y si está activo. |
| people.list | Lista 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.create | Crea un registro de persona/empleado (firstname + lastname obligatorios; companyEmail, contactEmail, contactPhone opcionales). Escritura. |
| people.update | Actualiza un registro de persona/empleado por id (name, companyEmail, contactEmail, contactPhone, etc.). Escritura. |
| people.delete | Elimina 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.setPermissionGroups | Establece (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.get | Obtén un grupo de permisos por id, incluidas las cadenas ROLE_* que otorga. |
| permissionGroups.list | Lista 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.create | Crea un grupo de permisos (name obligatorio; roles = lista de cadenas ROLE_* que otorga). Escritura. |
| permissionGroups.update | Actualiza el nombre, la descripción o los roles otorgados de un grupo de permisos por id. Escritura. |
Pipelines
Herramientas
| pipelines.get | Obtén un pipeline de ventas por id. |
| pipelines.list | Lista los pipelines de ventas. Un pipeline tiene un conjunto ordenado de etapas — léelas con stages.list filtrado por pipeline. |
Proyectos
Herramientas
| projects.get | Obtén un proyecto por id — nombre, tipo, cliente, fechas, descripción y precio. |
| projects.list | Lista 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.create | Crea un proyecto (name + type obligatorios; type = fixed-price|time-and-material|non-billable|internal; dateFrom/dateTo, client, publicDescription, notes, priceNet opcionales). Escritura. |
| projects.update | Actualiza un proyecto por id (name, type, fechas, descripción, etc.). Escritura. |
Responsabilidades
Herramientas
| responsibilities.get | Obtén una responsabilidad por id. |
| responsibilities.list | Lista 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.create | Crea 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.update | Actualiza una responsabilidad por id (name, description, parent, responsibilityGroup = id de grupo o IRI). Escritura. |
Empleados de Responsabilidad
Herramientas
| responsibilityEmployees.get | Obtén una asignación de responsabilidad por id. |
| responsibilityEmployees.list | Lista 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.create | Asigna 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.update | Actualiza una asignación de responsabilidad por id (percentage, targets, description). Escritura. |
| responsibilityEmployees.delete | Elimina la asignación de un empleado a una responsabilidad por id. Escritura. |
Grupos de Responsabilidad
Herramientas
| responsibilityGroups.get | Obtén un grupo de responsabilidad por id. |
| responsibilityGroups.list | Lista 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.create | Crea 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.update | Actualiza un grupo de responsabilidad por id (name, description, responsibleEmployee = id de empleado o IRI). Escritura. |
Etapas
Herramientas
| stages.get | Obtén una etapa de negocio por id. |
| stages.list | Lista, 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.list | Lista 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.create | Crea un nuevo registro de proveedor/contratista (name, tinType, costGroup obligatorios). Escritura. |
| suppliers.update | Actualiza los datos de un proveedor/contratista (name, NIF, condiciones de pago, etc.) por id. Escritura. |
Definiciones de Etiqueta
Herramientas
| tagDefinitions.list | Lista 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.create | Crea una definición de etiqueta (name, level, tagGroup obligatorios) dentro de un grupo de etiquetas. Escritura. |
Grupos de Etiquetas
Herramientas
| tagGroups.list | Lista los grupos de etiquetas — los contenedores que organizan las definiciones de etiqueta. |
| tagGroups.create | Crea un grupo de etiquetas (name obligatorio) para organizar definiciones de etiqueta relacionadas. Escritura. |
Comentarios de Tarea
Herramientas
| taskComments.list | Lista 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.create | Añade un comentario a una tarea de proyecto (id de task + content). Escritura. |
Listas de Tareas
Herramientas
| taskLists.list | Lista 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.get | Obtén una tarea de proyecto por id — título, proyecto, estado, lista, asignados, fechas y recurrencia. |
| tasks.list | Lista 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.create | Crea una tarea de proyecto (title + project obligatorios; status, list, assignees, dueAt, priority opcionales). Escritura. |
| tasks.update | Actualiza una tarea de proyecto por id — cambia status (incl. marcarla como hecha), assignees, dueAt, title, etc. Escritura. |
Estados de Tarea
Herramientas
| taskStatuses.list | Lista 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.list | Lista 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.create | Crea un grupo fiscal (name + type obligatorios). Escritura. |
| taxGroups.update | Actualiza el nombre o el tipo de un grupo fiscal por id. Escritura. |
Reglas Fiscales
Herramientas
| taxRules.list | Lista las reglas fiscales — los tipos y los períodos a los que se aplican. Filtra por taxGroup. |
| taxRules.create | Crea una regla fiscal. Escritura. |
| taxRules.update | Actualiza una regla fiscal por id. Escritura. |
Transacciones
Herramientas
| transactions.list | Lista 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.suggestions | Lee 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.get | Obtén una entrada de horas trabajadas por id — fecha, minutos, proyecto, notas y el empleado al que pertenece. |
| workTimes.list | Lista 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.log | Registra una entrada de horas trabajadas para el usuario de Flowtly conectado (date, durationMinutes, project, notes). Escritura. |
Contactos de Cliente
Herramientas
| clientContacts.create | Crea una persona de contacto para un cliente (client, type, name, email obligatorios). Escritura. |
Cuentas Bancarias de Contraparte
Herramientas
| counterpartyBankAccounts.create | Adjunta una cuenta bancaria a una contraparte (counterparty + accountNumber). Escritura. |
Logotipo de la Organización
Herramientas
| organizationLogo.upload | Sube/sustituye el logotipo de la organización (imagen en base64 + contentType + filename). Lee el actual mediante configs.get organization-logo-url. Escritura. |
Icono de la Organización
Herramientas
| organizationIcon.upload | Sube/sustituye el icono/favicon de la organización (imagen en base64 + contentType + filename). Lee el actual mediante configs.get organization-icon-url. Escritura. |