@nubiia/mcp-freematica 0.6.4 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +44 -12
  2. package/dist/clients/freematica-client.d.ts +264 -1
  3. package/dist/clients/freematica-client.js +387 -1
  4. package/dist/clients/freematica-client.js.map +1 -1
  5. package/dist/config.d.ts +22 -1
  6. package/dist/config.js +29 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/schemas/clientes.d.ts +164 -0
  9. package/dist/schemas/clientes.js +205 -0
  10. package/dist/schemas/clientes.js.map +1 -0
  11. package/dist/schemas/contratos.d.ts +268 -5
  12. package/dist/schemas/contratos.js +402 -1
  13. package/dist/schemas/contratos.js.map +1 -1
  14. package/dist/schemas/localizaciones.d.ts +90 -0
  15. package/dist/schemas/localizaciones.js +145 -0
  16. package/dist/schemas/localizaciones.js.map +1 -0
  17. package/dist/server-instructions.js +68 -1
  18. package/dist/server-instructions.js.map +1 -1
  19. package/dist/server.d.ts +6 -0
  20. package/dist/server.js +5 -5
  21. package/dist/server.js.map +1 -1
  22. package/dist/tools/clientes.d.ts +2 -1
  23. package/dist/tools/clientes.js +63 -2
  24. package/dist/tools/clientes.js.map +1 -1
  25. package/dist/tools/contactos-clientes.d.ts +2 -1
  26. package/dist/tools/contactos-clientes.js +58 -4
  27. package/dist/tools/contactos-clientes.js.map +1 -1
  28. package/dist/tools/contratos/cabecera.d.ts +6 -0
  29. package/dist/tools/contratos/cabecera.js +128 -0
  30. package/dist/tools/contratos/cabecera.js.map +1 -0
  31. package/dist/tools/contratos/index.d.ts +21 -0
  32. package/dist/tools/contratos/index.js +31 -0
  33. package/dist/tools/contratos/index.js.map +1 -0
  34. package/dist/tools/contratos/materiales.d.ts +4 -0
  35. package/dist/tools/{contratos.js → contratos/materiales.js} +5 -11
  36. package/dist/tools/contratos/materiales.js.map +1 -0
  37. package/dist/tools/contratos/opcionales.d.ts +5 -0
  38. package/dist/tools/contratos/opcionales.js +106 -0
  39. package/dist/tools/contratos/opcionales.js.map +1 -0
  40. package/dist/tools/contratos/servicios.d.ts +5 -0
  41. package/dist/tools/contratos/servicios.js +215 -0
  42. package/dist/tools/contratos/servicios.js.map +1 -0
  43. package/dist/tools/helpers.d.ts +4 -0
  44. package/dist/tools/helpers.js.map +1 -1
  45. package/dist/tools/localizaciones.d.ts +2 -1
  46. package/dist/tools/localizaciones.js +149 -2
  47. package/dist/tools/localizaciones.js.map +1 -1
  48. package/dist/transports/http.d.ts +2 -0
  49. package/dist/transports/http.js +3 -1
  50. package/dist/transports/http.js.map +1 -1
  51. package/dist/transports/stdio.d.ts +2 -0
  52. package/dist/transports/stdio.js +3 -1
  53. package/dist/transports/stdio.js.map +1 -1
  54. package/dist/types/contratos.d.ts +29 -0
  55. package/dist/utils/idreg.d.ts +37 -0
  56. package/dist/utils/idreg.js +52 -0
  57. package/dist/utils/idreg.js.map +1 -0
  58. package/package.json +1 -1
  59. package/dist/tools/contratos.d.ts +0 -10
  60. package/dist/tools/contratos.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"contratos.js","sourceRoot":"","sources":["../../src/schemas/contratos.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"contratos.js","sourceRoot":"","sources":["../../src/schemas/contratos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { z } from 'zod';
2
+ export type LocalizacionTipo = 'cobro' | 'envio' | 'factura' | 'servicio';
3
+ export declare const LOC_TIPOS: LocalizacionTipo[];
4
+ interface LocFieldMap {
5
+ /** Columna del código de localización (requerida por el API). */
6
+ codField: string;
7
+ /** Columna del nombre/denominación. */
8
+ nombreField: string;
9
+ /** Columna del domicilio. */
10
+ domicilioField: string;
11
+ /** Columna de la persona de contacto. */
12
+ contactoField: string;
13
+ /** ¿El API exige el nombre en el alta? */
14
+ nombreRequerido: boolean;
15
+ /** Path del recurso v2 (list/create; update añade /{idReg}). */
16
+ path: string;
17
+ /** Path del GET singular usado en el fetch+merge del update. */
18
+ getPath: string;
19
+ /** Sufijo del nombre de tool: freematica_*_localizacion_<sufijo>_cliente. */
20
+ toolSuffix: string;
21
+ }
22
+ export declare const LOC_FIELD_MAP: Record<LocalizacionTipo, LocFieldMap>;
23
+ /**
24
+ * Shape del alta de localización. `formaPago` solo lo exige el API en el tipo
25
+ * `cobro`; para el resto es ignorable (se valida en el handler).
26
+ */
27
+ export declare const CreateLocalizacionClienteShape: {
28
+ codPais: z.ZodOptional<z.ZodNumber>;
29
+ codProvincia: z.ZodOptional<z.ZodString>;
30
+ codPoblacion: z.ZodOptional<z.ZodString>;
31
+ codPostal: z.ZodOptional<z.ZodString>;
32
+ domicilio: z.ZodOptional<z.ZodString>;
33
+ email: z.ZodOptional<z.ZodString>;
34
+ telefono1: z.ZodOptional<z.ZodString>;
35
+ telefono2: z.ZodOptional<z.ZodString>;
36
+ contacto: z.ZodOptional<z.ZodString>;
37
+ camposAdicionales: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
38
+ tipo: z.ZodEnum<{
39
+ cobro: "cobro";
40
+ envio: "envio";
41
+ factura: "factura";
42
+ servicio: "servicio";
43
+ }>;
44
+ grupoCliente: z.ZodNumber;
45
+ codCliente: z.ZodString;
46
+ codLocalizacion: z.ZodNumber;
47
+ nombre: z.ZodOptional<z.ZodString>;
48
+ formaPago: z.ZodOptional<z.ZodString>;
49
+ };
50
+ export declare const UpdateLocalizacionClienteShape: {
51
+ codPais: z.ZodOptional<z.ZodNumber>;
52
+ codProvincia: z.ZodOptional<z.ZodString>;
53
+ codPoblacion: z.ZodOptional<z.ZodString>;
54
+ codPostal: z.ZodOptional<z.ZodString>;
55
+ domicilio: z.ZodOptional<z.ZodString>;
56
+ email: z.ZodOptional<z.ZodString>;
57
+ telefono1: z.ZodOptional<z.ZodString>;
58
+ telefono2: z.ZodOptional<z.ZodString>;
59
+ contacto: z.ZodOptional<z.ZodString>;
60
+ camposAdicionales: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
61
+ tipo: z.ZodEnum<{
62
+ cobro: "cobro";
63
+ envio: "envio";
64
+ factura: "factura";
65
+ servicio: "servicio";
66
+ }>;
67
+ idReg: z.ZodString;
68
+ nombre: z.ZodOptional<z.ZodString>;
69
+ formaPago: z.ZodOptional<z.ZodString>;
70
+ };
71
+ export type LocalizacionClienteFields = {
72
+ grupoCliente?: number;
73
+ codCliente?: string;
74
+ codLocalizacion?: number;
75
+ nombre?: string;
76
+ formaPago?: string;
77
+ codPais?: number;
78
+ codProvincia?: string;
79
+ codPoblacion?: string;
80
+ codPostal?: string;
81
+ domicilio?: string;
82
+ email?: string;
83
+ telefono1?: string;
84
+ telefono2?: string;
85
+ contacto?: string;
86
+ camposAdicionales?: Record<string, string | number>;
87
+ };
88
+ /** Construye el body del Vo de localización correspondiente al tipo. */
89
+ export declare function buildLocalizacionClienteBody(tipo: LocalizacionTipo, args: LocalizacionClienteFields): Record<string, unknown>;
90
+ export {};
@@ -0,0 +1,145 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Zod schemas (raw shapes) y builders de body para las tools de escritura de
4
+ * Localizaciones de Clientes (módulo pgrl, v2): cobro, envío, factura y
5
+ * servicio.
6
+ *
7
+ * Los cuatro tipos comparten la mayoría de campos (dirección, teléfonos,
8
+ * email, contacto) pero cada uno usa nombres de columna distintos para el
9
+ * código, el nombre, el domicilio y el contacto. `LOC_FIELD_MAP` centraliza
10
+ * ese mapeo.
11
+ */
12
+ /** Añade `target[key] = value` solo si value !== undefined. */
13
+ function setIf(target, key, value) {
14
+ if (value !== undefined)
15
+ target[key] = value;
16
+ }
17
+ export const LOC_TIPOS = ['cobro', 'envio', 'factura', 'servicio'];
18
+ export const LOC_FIELD_MAP = {
19
+ cobro: {
20
+ codField: 'LOC_CLI_COB',
21
+ nombreField: 'NOM_LOC_COB',
22
+ domicilioField: 'DOMICILIO',
23
+ contactoField: 'COB_CONTACTO',
24
+ nombreRequerido: true,
25
+ path: '/pgrl/v2/localizaciones-cobro-clientes',
26
+ getPath: '/pgrl/v2/localizaciones-cobro-clientes',
27
+ toolSuffix: 'cobro',
28
+ },
29
+ envio: {
30
+ codField: 'LOC_CLI_ENV',
31
+ nombreField: 'NOM_LOC_ENV',
32
+ domicilioField: 'DOMICILIO_ENVIO',
33
+ contactoField: 'ENV_CONTACTO',
34
+ nombreRequerido: false,
35
+ path: '/pgrl/v2/localizaciones-envio-clientes',
36
+ getPath: '/pgrl/v2/localizaciones-envio-clientes',
37
+ toolSuffix: 'envio',
38
+ },
39
+ factura: {
40
+ codField: 'LOC_CLI_FAC',
41
+ nombreField: 'NOM_LOC_FAC',
42
+ domicilioField: 'DOMICILIO',
43
+ contactoField: 'FAC_CONTACTO',
44
+ nombreRequerido: true,
45
+ path: '/pgrl/v2/localizaciones-factura-clientes',
46
+ // El GET singular v2 no existe para factura; se usa el v1 (mismas columnas).
47
+ getPath: '/pgrl/v1/localizaciones-factura-clientes',
48
+ toolSuffix: 'factura',
49
+ },
50
+ servicio: {
51
+ codField: 'LOC_CLI_SERV',
52
+ nombreField: 'DESCRIPCION',
53
+ domicilioField: 'DOMICILIO',
54
+ contactoField: 'CONTACTO',
55
+ nombreRequerido: true,
56
+ path: '/pgrl/v2/localizaciones-servicio-clientes',
57
+ getPath: '/pgrl/v2/localizaciones-servicio-clientes',
58
+ toolSuffix: 'servicio',
59
+ },
60
+ };
61
+ const localizacionOptionalFieldsShape = {
62
+ codPais: z.number().int().optional().describe('Código de país (COD_PAIS).'),
63
+ codProvincia: z.string().max(5).optional().describe('Código de provincia (COD_PROVINCIA, 5c).'),
64
+ codPoblacion: z.string().max(40).optional().describe('Código de población (COD_POBLACION, 40c).'),
65
+ codPostal: z.string().max(10).optional().describe('Código postal (COD_POSTAL, 10c).'),
66
+ domicilio: z
67
+ .string()
68
+ .max(100)
69
+ .optional()
70
+ .describe('Domicilio (DOMICILIO / DOMICILIO_ENVIO según el tipo).'),
71
+ email: z.string().max(100).optional().describe('Correo electrónico (E_MAIL, 100c).'),
72
+ telefono1: z.string().max(15).optional().describe('Teléfono 1 (TELEFONO1, 15c).'),
73
+ telefono2: z.string().max(15).optional().describe('Teléfono 2 (TELEFONO2, 15c).'),
74
+ contacto: z
75
+ .string()
76
+ .max(40)
77
+ .optional()
78
+ .describe('Persona de contacto (COB_CONTACTO / ENV_CONTACTO / FAC_CONTACTO / CONTACTO según el tipo).'),
79
+ camposAdicionales: z
80
+ .record(z.string().regex(/^[A-Z][A-Z0-9_]*$/, 'Las claves deben ser columnas Freemática (MAYUSCULAS_CON_GUION_BAJO)'), z.union([z.string(), z.number()]))
81
+ .optional()
82
+ .describe('Campos nativos adicionales del Vo del tipo (ej: cobro → CMCC_IBAN, COD_BANCO; servicio → COD_ZONA, LATITUD_LONGITUD, CMCS_COD_DLG). Ver spec OpenAPI.'),
83
+ };
84
+ /**
85
+ * Shape del alta de localización. `formaPago` solo lo exige el API en el tipo
86
+ * `cobro`; para el resto es ignorable (se valida en el handler).
87
+ */
88
+ export const CreateLocalizacionClienteShape = {
89
+ tipo: z
90
+ .enum(['cobro', 'envio', 'factura', 'servicio'])
91
+ .describe('Tipo de localización: cobro, envio, factura o servicio (instalación).'),
92
+ grupoCliente: z.number().int().describe('Código de grupo de cliente (COD_GRUPO_CLI). Requerido.'),
93
+ codCliente: z.string().max(10).describe('Código de cliente (COD_CLI, 10c). Requerido.'),
94
+ codLocalizacion: z
95
+ .number()
96
+ .int()
97
+ .describe('Código de la localización (LOC_CLI_COB/ENV/FAC/SERV según el tipo). Requerido.'),
98
+ nombre: z
99
+ .string()
100
+ .max(80)
101
+ .optional()
102
+ .describe('Denominación (NOM_LOC_COB / NOM_LOC_ENV / NOM_LOC_FAC / DESCRIPCION). Requerido por el API en cobro, factura y servicio.'),
103
+ formaPago: z
104
+ .string()
105
+ .max(3)
106
+ .optional()
107
+ .describe('Código de forma de pago (COD_FORMA_PAGO). Requerido por el API SOLO en tipo cobro.'),
108
+ ...localizacionOptionalFieldsShape,
109
+ };
110
+ export const UpdateLocalizacionClienteShape = {
111
+ tipo: z
112
+ .enum(['cobro', 'envio', 'factura', 'servicio'])
113
+ .describe('Tipo de localización: cobro, envio, factura o servicio.'),
114
+ idReg: z
115
+ .string()
116
+ .min(1)
117
+ .describe('idReg opaco de la localización (campo "idReg" en la list tool del tipo).'),
118
+ nombre: z.string().max(80).optional().describe('Nueva denominación.'),
119
+ formaPago: z.string().max(3).optional().describe('Código de forma de pago (solo tipo cobro).'),
120
+ ...localizacionOptionalFieldsShape,
121
+ };
122
+ /** Construye el body del Vo de localización correspondiente al tipo. */
123
+ export function buildLocalizacionClienteBody(tipo, args) {
124
+ const map = LOC_FIELD_MAP[tipo];
125
+ const body = {};
126
+ setIf(body, 'COD_GRUPO_CLI', args.grupoCliente);
127
+ setIf(body, 'COD_CLI', args.codCliente);
128
+ setIf(body, map.codField, args.codLocalizacion);
129
+ setIf(body, map.nombreField, args.nombre);
130
+ if (tipo === 'cobro')
131
+ setIf(body, 'COD_FORMA_PAGO', args.formaPago);
132
+ setIf(body, 'COD_PAIS', args.codPais);
133
+ setIf(body, 'COD_PROVINCIA', args.codProvincia);
134
+ setIf(body, 'COD_POBLACION', args.codPoblacion);
135
+ setIf(body, 'COD_POSTAL', args.codPostal);
136
+ setIf(body, map.domicilioField, args.domicilio);
137
+ setIf(body, 'E_MAIL', args.email);
138
+ setIf(body, 'TELEFONO1', args.telefono1);
139
+ setIf(body, 'TELEFONO2', args.telefono2);
140
+ setIf(body, map.contactoField, args.contacto);
141
+ if (args.camposAdicionales)
142
+ Object.assign(body, args.camposAdicionales);
143
+ return body;
144
+ }
145
+ //# sourceMappingURL=localizaciones.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localizaciones.js","sourceRoot":"","sources":["../../src/schemas/localizaciones.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export const FREEMATICA_MCP_INSTRUCTIONS = `
3
3
 
4
4
  Este servidor expone operaciones del API REST de Freemática como tools MCP.
5
5
 
6
- ## Tools disponibles (8)
6
+ ## Tools destacadas (lista parcial; el resto se descubren vía tools/list)
7
7
 
8
8
  ### Materiales (1)
9
9
 
@@ -48,6 +48,73 @@ para que puedas paginar (\`page = total / items + 1\`).
48
48
  AVISO: NO uses \`page=0\` (este parámetro lo bloquea al mínimo 1). El API real
49
49
  trata \`page=0\` como "devuelve TODO el dataset" — puede ser muchos MB.
50
50
 
51
+ ## Contratos y Servicios
52
+
53
+ Lectura (siempre disponibles):
54
+
55
+ - **freematica_list_contratos(page, items, empresa?, delegacion?, order?)** —
56
+ Cabeceras de contratos (campos CTRT_*). AVISO: el API ignora los filtros
57
+ FIQL en este endpoint; solo funcionan empresa/delegacion (params nativos).
58
+ - **freematica_get_contrato(empresa, codContrato, delegacion?)** — Busca un
59
+ contrato por códigos naturales paginando internamente (puede tardar en
60
+ datasets grandes). Devuelve la cabecera con su \`idReg\`.
61
+ - **freematica_list_servicios_contrato(idContrato, page, items)** — Servicios
62
+ de un contrato (campos CTRTS_*). \`idContrato\` = idReg del contrato.
63
+ - **freematica_get_servicio_contrato(idReg)** — Detalle de un servicio.
64
+ - **freematica_list_contratos_opcionales(page, items)** /
65
+ **freematica_get_contrato_opcionales(idReg)** — Opcionales de contratos
66
+ (campos CON2_*, módulo ppre).
67
+
68
+ Escritura (solo si el servidor arranca con FREEMATICA_ENABLE_WRITES=true;
69
+ no existe borrado):
70
+
71
+ - **freematica_create_contrato** / **freematica_update_contrato** — Alta y
72
+ actualización de cabeceras. Requeridos en alta: delegacion, descripcion,
73
+ fecha, codCliente.
74
+ - **freematica_create_servicio_contrato(idContrato, …)** — Alta de servicio;
75
+ los campos de identificación se derivan del idReg del contrato.
76
+ - **freematica_update_servicio_fechas(idContrato, idServicio, fechaAlta?,
77
+ fechaFin?)** — Único mecanismo de "baja" de un servicio: informar fechaFin.
78
+ - **freematica_create_servicio_historico_precios** /
79
+ **freematica_update_servicio_historico_precios** — Los precios de un
80
+ servicio se gestionan como histórico versionado, separado del servicio.
81
+ - **freematica_create_servicio_facturacion_txt** — Líneas de texto de factura.
82
+ - **freematica_update_servicio_facturacion** — Datos de facturación (precios
83
+ hora, importes, forma de pago); campos avanzados vía camposAdicionales
84
+ (CTRTF_*).
85
+ - **freematica_create_contrato_opcionales** /
86
+ **freematica_update_contrato_opcionales** — Opcionales (campos CON2_*).
87
+
88
+ Flujo típico para crear un contrato completo:
89
+ 1. freematica_create_contrato → devuelve idReg.
90
+ 2. freematica_create_servicio_contrato por cada servicio.
91
+ 3. freematica_create_servicio_historico_precios con los precios.
92
+ 4. (opcional) freematica_create_servicio_facturacion_txt.
93
+
94
+ ## Clientes, Contactos y Localizaciones — escritura
95
+
96
+ Con FREEMATICA_ENABLE_WRITES=true (no existe borrado):
97
+
98
+ - **freematica_create_cliente** — requeridos: grupoCliente, codCliente,
99
+ nombre, nif, tipoImpuesto, divisa, tipoFacturacion (D/M/Q). El idReg se
100
+ calcula automáticamente.
101
+ - **freematica_update_cliente(idReg, …)** — actualización parcial: la tool
102
+ recupera el cliente y fusiona los cambios antes del PUT.
103
+ - **freematica_create_contacto_cliente** — requeridos: grupoCliente y
104
+ codCliente. Opcionales: nombreApellidos, cargo, telefono, movil, email…
105
+ - **freematica_update_contacto_cliente(idReg, …)** — parcial (fetch+merge).
106
+ - **freematica_create_localizacion_cliente(tipo, …)** — tipo: cobro | envio |
107
+ factura | servicio. formaPago solo se exige en cobro; nombre en todos salvo
108
+ envío. Campos específicos del tipo vía camposAdicionales.
109
+ - **freematica_update_localizacion_cliente(tipo, idReg, …)** — parcial
110
+ (fetch+merge). El idReg sale de la list tool del tipo.
111
+
112
+ Flujo típico cliente nuevo completo:
113
+ 1. freematica_create_cliente
114
+ 2. freematica_create_contacto_cliente
115
+ 3. freematica_create_localizacion_cliente (tipo=servicio, y cobro/factura si aplica)
116
+ 4. freematica_create_contrato + servicios (ver sección Contratos)
117
+
51
118
  ## IDs opacos en endpoints de detalle
52
119
 
53
120
  Las tools \`freematica_get_*\` requieren un \`id\` que es el campo \`idReg\` de los
@@ -1 +1 @@
1
- {"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../src/server-instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiF1C,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../src/server-instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoJ1C,CAAC,IAAI,EAAE,CAAC"}
package/dist/server.d.ts CHANGED
@@ -2,5 +2,11 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { FreematicaClient } from './clients/freematica-client.js';
3
3
  export interface CreateFreematicaServerOptions {
4
4
  client: FreematicaClient;
5
+ /**
6
+ * Registra también las tools de escritura (freematica_create_* /
7
+ * freematica_update_*). Default: false (servidor de solo lectura).
8
+ * Los transports lo alimentan desde FREEMATICA_ENABLE_WRITES.
9
+ */
10
+ enableWrites?: boolean;
5
11
  }
6
12
  export declare function createFreematicaServer(opts: CreateFreematicaServerOptions): McpServer;
package/dist/server.js CHANGED
@@ -7,7 +7,7 @@ import { registerCarteraTools } from './tools/cartera.js';
7
7
  import { registerClientesTools } from './tools/clientes.js';
8
8
  import { registerContactosClientesTools } from './tools/contactos-clientes.js';
9
9
  import { registerContabilidadTools } from './tools/contabilidad.js';
10
- import { registerContratosTools } from './tools/contratos.js';
10
+ import { registerContratosTools } from './tools/contratos/index.js';
11
11
  import { registerFacturasComprasTools } from './tools/facturas-compras.js';
12
12
  import { registerFacturasElectronicasTools } from './tools/facturas-electronicas.js';
13
13
  import { registerFacturasVentasTools } from './tools/facturas-ventas.js';
@@ -20,17 +20,17 @@ import { registerPrlTools } from './tools/prl.js';
20
20
  import { registerProveedoresTools } from './tools/proveedores.js';
21
21
  export function createFreematicaServer(opts) {
22
22
  const server = new McpServer({ name: 'freematica-mcp', version: VERSION }, { instructions: FREEMATICA_MCP_INSTRUCTIONS });
23
- registerContratosTools(server, opts.client);
23
+ registerContratosTools(server, opts.client, { enableWrites: opts.enableWrites ?? false });
24
24
  registerMasterDataTools(server, opts.client);
25
- registerClientesTools(server, opts.client);
26
- registerContactosClientesTools(server, opts.client);
25
+ registerClientesTools(server, opts.client, { enableWrites: opts.enableWrites ?? false });
26
+ registerContactosClientesTools(server, opts.client, { enableWrites: opts.enableWrites ?? false });
27
27
  registerOportunidadesNegocioTools(server, opts.client);
28
28
  registerCarteraTools(server, opts.client);
29
29
  registerFacturasVentasTools(server, opts.client);
30
30
  registerFacturasComprasTools(server, opts.client);
31
31
  registerPedidosComprasTools(server, opts.client);
32
32
  registerProveedoresTools(server, opts.client);
33
- registerLocalizacionesTools(server, opts.client);
33
+ registerLocalizacionesTools(server, opts.client, { enableWrites: opts.enableWrites ?? false });
34
34
  registerContabilidadTools(server, opts.client);
35
35
  registerPrlTools(server, opts.client);
36
36
  registerPersonalTools(server, opts.client);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAMlE,MAAM,UAAU,sBAAsB,CAAC,IAAmC;IACxE,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC5C,EAAE,YAAY,EAAE,2BAA2B,EAAE,CAC9C,CAAC;IAEF,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,iCAAiC,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,iCAAiC,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAE5C,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAYlE,MAAM,UAAU,sBAAsB,CAAC,IAAmC;IACxE,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC5C,EAAE,YAAY,EAAE,2BAA2B,EAAE,CAC9C,CAAC;IAEF,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC,CAAC;IAC1F,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC,CAAC;IACzF,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC,CAAC;IAClG,iCAAiC,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC,CAAC;IAC/F,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,iCAAiC,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAE5C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { FreematicaClient } from '../clients/freematica-client.js';
3
- export declare function registerClientesTools(server: McpServer, client: FreematicaClient): void;
3
+ import { type RegisterOptions } from './helpers.js';
4
+ export declare function registerClientesTools(server: McpServer, client: FreematicaClient, opts?: RegisterOptions): void;
@@ -1,9 +1,12 @@
1
1
  import { z } from 'zod';
2
2
  import { FreematicaError } from '../clients/base-client.js';
3
3
  import { PaginationSchema } from '../schemas/pagination.js';
4
+ import { CreateClienteShape, UpdateClienteShape, buildClienteBody, buildClienteIdReg, mergeForUpdate, } from '../schemas/clientes.js';
4
5
  import { error, ok, okList } from './helpers.js';
5
6
  const LIST_TOOL_NAME = 'freematica_list_clientes';
6
7
  const GET_TOOL_NAME = 'freematica_get_cliente';
8
+ const CREATE_TOOL_NAME = 'freematica_create_cliente';
9
+ const UPDATE_TOOL_NAME = 'freematica_update_cliente';
7
10
  const LIST_DESCRIPTION = [
8
11
  'Devuelve la lista paginada de clientes de Freemática.',
9
12
  '',
@@ -16,11 +19,35 @@ const GET_DESCRIPTION = [
16
19
  '',
17
20
  'El parámetro `id` DEBE ser el campo `idReg` (string opaco base64) que aparece en los items de freematica_list_clientes. NO usar COD_CLI ni otro código natural — el API devuelve not_found.',
18
21
  ].join('\n');
19
- export function registerClientesTools(server, client) {
22
+ const CREATE_DESCRIPTION = [
23
+ 'Da de alta un cliente en Freemática.',
24
+ '',
25
+ 'Endpoint: POST /pgrl/v2/clientes — body VoClientes (109 campos).',
26
+ 'Requeridos: grupoCliente, codCliente, nombre (40c), nif, tipoImpuesto,',
27
+ 'divisa (ej. EUR) y tipoFacturacion (D=Diario, M=Mensual, Q=Quincenal).',
28
+ 'El idReg del cliente se calcula automáticamente (Base64 "GRUPO__COD").',
29
+ '',
30
+ 'Los campos no expuestos con nombre amigable se pasan en camposAdicionales',
31
+ 'con su nombre nativo (ej. COD_TARIFA, CREDITO). Devuelve el cliente creado.',
32
+ ].join('\n');
33
+ const UPDATE_DESCRIPTION = [
34
+ 'Actualiza un cliente existente (actualización parcial).',
35
+ '',
36
+ 'Endpoint: PUT /pgrl/v2/clientes/{idReg}. La tool primero recupera el',
37
+ 'cliente actual, aplica encima los campos informados y envía el objeto',
38
+ 'completo (el API exige los campos obligatorios en cada PUT). El estado',
39
+ 'previo queda en el log de auditoría.',
40
+ ].join('\n');
41
+ export function registerClientesTools(server, client, opts = { enableWrites: false }) {
20
42
  server.tool(LIST_TOOL_NAME, LIST_DESCRIPTION, PaginationSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ page, items }) => {
21
43
  try {
22
44
  const result = await client.listClientes({ page, items });
23
- return okList({ items: result.items, total: result.total, page, itemsPerPage: items });
45
+ return okList({
46
+ items: result.items,
47
+ total: result.total,
48
+ page,
49
+ itemsPerPage: items,
50
+ });
24
51
  }
25
52
  catch (err) {
26
53
  if (err instanceof FreematicaError)
@@ -44,5 +71,39 @@ export function registerClientesTools(server, client) {
44
71
  return error(err instanceof Error ? err : new Error(String(err)));
45
72
  }
46
73
  });
74
+ if (!opts.enableWrites)
75
+ return;
76
+ server.tool(CREATE_TOOL_NAME, CREATE_DESCRIPTION, CreateClienteShape, { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true }, async (args) => {
77
+ try {
78
+ const fields = args;
79
+ const body = buildClienteBody(fields);
80
+ // El API exige idReg también en el alta; se deriva de los códigos naturales.
81
+ body['idReg'] = buildClienteIdReg(fields.grupoCliente, fields.codCliente);
82
+ const created = await client.createCliente(body);
83
+ return ok(created);
84
+ }
85
+ catch (err) {
86
+ if (err instanceof FreematicaError)
87
+ return error(err);
88
+ return error(err instanceof Error ? err : new Error(String(err)));
89
+ }
90
+ });
91
+ server.tool(UPDATE_TOOL_NAME, UPDATE_DESCRIPTION, UpdateClienteShape, { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true }, async ({ idReg, ...fields }) => {
92
+ try {
93
+ const changes = buildClienteBody(fields);
94
+ if (Object.keys(changes).length === 0) {
95
+ return error(new Error('Debes informar al menos un campo a actualizar además de idReg.'));
96
+ }
97
+ const current = await client.getCliente(idReg);
98
+ const body = mergeForUpdate(current, changes);
99
+ const updated = await client.updateCliente(idReg, body);
100
+ return ok(updated);
101
+ }
102
+ catch (err) {
103
+ if (err instanceof FreematicaError)
104
+ return error(err);
105
+ return error(err instanceof Error ? err : new Error(String(err)));
106
+ }
107
+ });
47
108
  }
48
109
  //# sourceMappingURL=clientes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientes.js","sourceRoot":"","sources":["../../src/tools/clientes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAClD,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C,MAAM,gBAAgB,GAAG;IACvB,uDAAuD;IACvD,EAAE;IACF,4KAA4K;IAC5K,EAAE;IACF,qHAAqH;CACtH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,eAAe,GAAG;IACtB,6CAA6C;IAC7C,EAAE;IACF,6LAA6L;CAC9L,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAwB;IAC/E,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EACnE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAA2B,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAmB,CAAC;QAC3G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,eAAe;gBAAE,OAAO,KAAK,CAAC,GAAG,CAAmB,CAAC;YACxE,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAmB,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,eAAe,EACf;QACE,EAAE,EAAE,CAAC;aACF,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,mFAAmF,CACpF;KACJ,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EACnE,KAAK,EAAE,EAAE,EAAE,EAAE,EAA2B,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC,OAAO,CAAmB,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,eAAe;gBAAE,OAAO,KAAK,CAAC,GAAG,CAAmB,CAAC;YACxE,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAmB,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"clientes.js","sourceRoot":"","sources":["../../src/tools/clientes.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { FreematicaClient } from '../clients/freematica-client.js';
3
- export declare function registerContactosClientesTools(server: McpServer, client: FreematicaClient): void;
3
+ import { type RegisterOptions } from './helpers.js';
4
+ export declare function registerContactosClientesTools(server: McpServer, client: FreematicaClient, opts?: RegisterOptions): void;
@@ -1,19 +1,73 @@
1
1
  import { FreematicaError } from '../clients/base-client.js';
2
2
  import { PaginationSchema } from '../schemas/pagination.js';
3
- import { error, okList } from './helpers.js';
3
+ import { CreateContactoClienteShape, UpdateContactoClienteShape, buildContactoClienteBody, mergeForUpdate, } from '../schemas/clientes.js';
4
+ import { error, ok, okList } from './helpers.js';
4
5
  const LIST_TOOL_NAME = 'freematica_list_contactos_clientes';
6
+ const CREATE_TOOL_NAME = 'freematica_create_contacto_cliente';
7
+ const UPDATE_TOOL_NAME = 'freematica_update_contacto_cliente';
5
8
  const LIST_DESCRIPTION = [
6
9
  'Devuelve la lista paginada de contactos de clientes (personas asociadas a clientes corporativos).',
7
10
  '',
8
- 'Cada item incluye un campo `idReg` opaco (base64). En esta versión no exponemos un endpoint singular para contactos; si necesitas el detalle, contacta al mantenedor del MCP.',
11
+ 'Cada item incluye un campo `idReg` opaco (base64) que se usa en freematica_update_contacto_cliente.',
9
12
  '',
10
13
  'Paginación 1-indexed.',
11
14
  ].join('\n');
12
- export function registerContactosClientesTools(server, client) {
15
+ const CREATE_DESCRIPTION = [
16
+ 'Da de alta un contacto de cliente.',
17
+ '',
18
+ 'Endpoint: POST /pgrl/v2/contactos-clientes — body VoContactosClientes.',
19
+ 'Requeridos: grupoCliente y codCliente (el cliente al que pertenece).',
20
+ 'Opcionales frecuentes: nombreApellidos, cargo, telefono, movil, email,',
21
+ 'contactoPrincipal, decisor. El resto vía camposAdicionales (CC_*).',
22
+ ].join('\n');
23
+ const UPDATE_DESCRIPTION = [
24
+ 'Actualiza un contacto de cliente existente (actualización parcial).',
25
+ '',
26
+ 'Endpoint: PUT /pgrl/v2/contactos-clientes/{idReg}. La tool recupera el',
27
+ 'contacto actual, aplica encima los campos informados y envía el objeto',
28
+ 'completo. `idReg` sale de freematica_list_contactos_clientes.',
29
+ ].join('\n');
30
+ export function registerContactosClientesTools(server, client, opts = { enableWrites: false }) {
13
31
  server.tool(LIST_TOOL_NAME, LIST_DESCRIPTION, PaginationSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ page, items }) => {
14
32
  try {
15
33
  const result = await client.listContactosClientes({ page, items });
16
- return okList({ items: result.items, total: result.total, page, itemsPerPage: items });
34
+ return okList({
35
+ items: result.items,
36
+ total: result.total,
37
+ page,
38
+ itemsPerPage: items,
39
+ });
40
+ }
41
+ catch (err) {
42
+ if (err instanceof FreematicaError)
43
+ return error(err);
44
+ return error(err instanceof Error ? err : new Error(String(err)));
45
+ }
46
+ });
47
+ if (!opts.enableWrites)
48
+ return;
49
+ server.tool(CREATE_TOOL_NAME, CREATE_DESCRIPTION, CreateContactoClienteShape, { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true }, async (args) => {
50
+ try {
51
+ const body = buildContactoClienteBody(args);
52
+ const created = await client.createContactoCliente(body);
53
+ return ok(created);
54
+ }
55
+ catch (err) {
56
+ if (err instanceof FreematicaError)
57
+ return error(err);
58
+ return error(err instanceof Error ? err : new Error(String(err)));
59
+ }
60
+ });
61
+ server.tool(UPDATE_TOOL_NAME, UPDATE_DESCRIPTION, UpdateContactoClienteShape, { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true }, async ({ idReg, ...fields }) => {
62
+ try {
63
+ const changes = buildContactoClienteBody(fields);
64
+ if (Object.keys(changes).length === 0) {
65
+ return error(new Error('Debes informar al menos un campo a actualizar además de idReg.'));
66
+ }
67
+ const current = await client.getContactoCliente(idReg);
68
+ const body = mergeForUpdate(current, changes);
69
+ const updated = await client.updateContactoCliente(idReg, body);
70
+ return ok(updated);
17
71
  }
18
72
  catch (err) {
19
73
  if (err instanceof FreematicaError)