@nubiia/mcp-freematica 0.6.1
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.
- package/LICENSE +21 -0
- package/README.md +485 -0
- package/dist/clients/base-client.d.ts +31 -0
- package/dist/clients/base-client.js +102 -0
- package/dist/clients/base-client.js.map +1 -0
- package/dist/clients/fiql-builder.d.ts +118 -0
- package/dist/clients/fiql-builder.js +257 -0
- package/dist/clients/fiql-builder.js.map +1 -0
- package/dist/clients/freematica-client.d.ts +659 -0
- package/dist/clients/freematica-client.js +1327 -0
- package/dist/clients/freematica-client.js.map +1 -0
- package/dist/clients/hardened-base-client.d.ts +143 -0
- package/dist/clients/hardened-base-client.js +366 -0
- package/dist/clients/hardened-base-client.js.map +1 -0
- package/dist/config.d.ts +104 -0
- package/dist/config.js +105 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +71 -0
- package/dist/logger.js +114 -0
- package/dist/logger.js.map +1 -0
- package/dist/schemas/albaranes.d.ts +124 -0
- package/dist/schemas/albaranes.js +250 -0
- package/dist/schemas/albaranes.js.map +1 -0
- package/dist/schemas/cartera.d.ts +70 -0
- package/dist/schemas/cartera.js +104 -0
- package/dist/schemas/cartera.js.map +1 -0
- package/dist/schemas/contratos.d.ts +7 -0
- package/dist/schemas/contratos.js +2 -0
- package/dist/schemas/contratos.js.map +1 -0
- package/dist/schemas/facturas-electronicas.d.ts +60 -0
- package/dist/schemas/facturas-electronicas.js +79 -0
- package/dist/schemas/facturas-electronicas.js.map +1 -0
- package/dist/schemas/facturas-ventas.d.ts +118 -0
- package/dist/schemas/facturas-ventas.js +153 -0
- package/dist/schemas/facturas-ventas.js.map +1 -0
- package/dist/schemas/filters.d.ts +92 -0
- package/dist/schemas/filters.js +76 -0
- package/dist/schemas/filters.js.map +1 -0
- package/dist/schemas/master-data.d.ts +26 -0
- package/dist/schemas/master-data.js +86 -0
- package/dist/schemas/master-data.js.map +1 -0
- package/dist/schemas/pagination.d.ts +14 -0
- package/dist/schemas/pagination.js +27 -0
- package/dist/schemas/pagination.js.map +1 -0
- package/dist/schemas/pedidos-compras.d.ts +92 -0
- package/dist/schemas/pedidos-compras.js +189 -0
- package/dist/schemas/pedidos-compras.js.map +1 -0
- package/dist/server-instructions.d.ts +1 -0
- package/dist/server-instructions.js +83 -0
- package/dist/server-instructions.js.map +1 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +41 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/albaranes.d.ts +16 -0
- package/dist/tools/albaranes.js +202 -0
- package/dist/tools/albaranes.js.map +1 -0
- package/dist/tools/calendarios.d.ts +13 -0
- package/dist/tools/calendarios.js +82 -0
- package/dist/tools/calendarios.js.map +1 -0
- package/dist/tools/cartera.d.ts +13 -0
- package/dist/tools/cartera.js +78 -0
- package/dist/tools/cartera.js.map +1 -0
- package/dist/tools/clientes.d.ts +3 -0
- package/dist/tools/clientes.js +48 -0
- package/dist/tools/clientes.js.map +1 -0
- package/dist/tools/contabilidad.d.ts +14 -0
- package/dist/tools/contabilidad.js +259 -0
- package/dist/tools/contabilidad.js.map +1 -0
- package/dist/tools/contactos-clientes.d.ts +3 -0
- package/dist/tools/contactos-clientes.js +25 -0
- package/dist/tools/contactos-clientes.js.map +1 -0
- package/dist/tools/contratos.d.ts +10 -0
- package/dist/tools/contratos.js +35 -0
- package/dist/tools/contratos.js.map +1 -0
- package/dist/tools/facturas-compras.d.ts +13 -0
- package/dist/tools/facturas-compras.js +131 -0
- package/dist/tools/facturas-compras.js.map +1 -0
- package/dist/tools/facturas-electronicas.d.ts +17 -0
- package/dist/tools/facturas-electronicas.js +268 -0
- package/dist/tools/facturas-electronicas.js.map +1 -0
- package/dist/tools/facturas-ventas.d.ts +16 -0
- package/dist/tools/facturas-ventas.js +181 -0
- package/dist/tools/facturas-ventas.js.map +1 -0
- package/dist/tools/helpers.d.ts +17 -0
- package/dist/tools/helpers.js +36 -0
- package/dist/tools/helpers.js.map +1 -0
- package/dist/tools/localizaciones.d.ts +17 -0
- package/dist/tools/localizaciones.js +192 -0
- package/dist/tools/localizaciones.js.map +1 -0
- package/dist/tools/master-data.d.ts +10 -0
- package/dist/tools/master-data.js +70 -0
- package/dist/tools/master-data.js.map +1 -0
- package/dist/tools/oportunidades-negocio.d.ts +3 -0
- package/dist/tools/oportunidades-negocio.js +68 -0
- package/dist/tools/oportunidades-negocio.js.map +1 -0
- package/dist/tools/pedidos-compras.d.ts +14 -0
- package/dist/tools/pedidos-compras.js +105 -0
- package/dist/tools/pedidos-compras.js.map +1 -0
- package/dist/tools/personal.d.ts +13 -0
- package/dist/tools/personal.js +154 -0
- package/dist/tools/personal.js.map +1 -0
- package/dist/tools/prl.d.ts +47 -0
- package/dist/tools/prl.js +242 -0
- package/dist/tools/prl.js.map +1 -0
- package/dist/tools/proveedores.d.ts +14 -0
- package/dist/tools/proveedores.js +122 -0
- package/dist/tools/proveedores.js.map +1 -0
- package/dist/transports/http.d.ts +12 -0
- package/dist/transports/http.js +110 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/stdio.d.ts +12 -0
- package/dist/transports/stdio.js +15 -0
- package/dist/transports/stdio.js.map +1 -0
- package/dist/types/api-envelope.d.ts +27 -0
- package/dist/types/api-envelope.js +2 -0
- package/dist/types/api-envelope.js.map +1 -0
- package/dist/types/clientes.d.ts +9 -0
- package/dist/types/clientes.js +2 -0
- package/dist/types/clientes.js.map +1 -0
- package/dist/types/contactos-clientes.d.ts +7 -0
- package/dist/types/contactos-clientes.js +2 -0
- package/dist/types/contactos-clientes.js.map +1 -0
- package/dist/types/contratos.d.ts +8 -0
- package/dist/types/contratos.js +2 -0
- package/dist/types/contratos.js.map +1 -0
- package/dist/types/master-data.d.ts +9 -0
- package/dist/types/master-data.js +2 -0
- package/dist/types/master-data.js.map +1 -0
- package/dist/types/oportunidades-negocio.d.ts +8 -0
- package/dist/types/oportunidades-negocio.js +2 -0
- package/dist/types/oportunidades-negocio.js.map +1 -0
- package/dist/utils/size-guardrail.d.ts +22 -0
- package/dist/utils/size-guardrail.js +31 -0
- package/dist/utils/size-guardrail.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"albaranes.js","sourceRoot":"","sources":["../../src/tools/albaranes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { FreematicaClient } from '../clients/freematica-client.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registra las tools MCP del dominio Calendarios Laborales.
|
|
5
|
+
*
|
|
6
|
+
* Tools expuestas:
|
|
7
|
+
* 1. freematica_list_calendarios — lista paginada de calendarios
|
|
8
|
+
* 2. freematica_list_calendario_periodos — periodos de un calendario (idReg)
|
|
9
|
+
*
|
|
10
|
+
* @param server - Instancia del servidor MCP.
|
|
11
|
+
* @param client - Cliente Freemática autenticado.
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerCalendariosTools(server: McpServer, client: FreematicaClient): void;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { FreematicaError } from '../clients/base-client.js';
|
|
3
|
+
import { PaginationSchema } from '../schemas/pagination.js';
|
|
4
|
+
import { error, okList } from './helpers.js';
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Tool names
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
const LIST_CALENDARIOS_TOOL_NAME = 'freematica_list_calendarios';
|
|
9
|
+
const LIST_PERIODOS_TOOL_NAME = 'freematica_list_calendario_periodos';
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Descriptions
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
const LIST_CALENDARIOS_DESCRIPTION = [
|
|
14
|
+
'Devuelve la lista paginada de calendarios laborales registrados en Freemática.',
|
|
15
|
+
'',
|
|
16
|
+
'Endpoint: GET /pgrl/v1/calendarios',
|
|
17
|
+
'',
|
|
18
|
+
'Cada item incluye `idReg` opaco que se usa en freematica_list_calendario_periodos',
|
|
19
|
+
'para obtener los periodos de un calendario concreto.',
|
|
20
|
+
'',
|
|
21
|
+
'Soporta paginación estándar (page, items).',
|
|
22
|
+
].join('\n');
|
|
23
|
+
const LIST_PERIODOS_DESCRIPTION = [
|
|
24
|
+
'Devuelve los periodos de un calendario laboral concreto.',
|
|
25
|
+
'',
|
|
26
|
+
'Endpoint: GET /pgrl/v1/calendarios/{idreg}/periodos',
|
|
27
|
+
'',
|
|
28
|
+
'El parámetro `idCalendario` DEBE ser el campo `idReg` (string opaco base64)',
|
|
29
|
+
'que aparece en los items de freematica_list_calendarios.',
|
|
30
|
+
'',
|
|
31
|
+
'Soporta paginación estándar (page, items).',
|
|
32
|
+
].join('\n');
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Register function
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
/**
|
|
37
|
+
* Registra las tools MCP del dominio Calendarios Laborales.
|
|
38
|
+
*
|
|
39
|
+
* Tools expuestas:
|
|
40
|
+
* 1. freematica_list_calendarios — lista paginada de calendarios
|
|
41
|
+
* 2. freematica_list_calendario_periodos — periodos de un calendario (idReg)
|
|
42
|
+
*
|
|
43
|
+
* @param server - Instancia del servidor MCP.
|
|
44
|
+
* @param client - Cliente Freemática autenticado.
|
|
45
|
+
*/
|
|
46
|
+
export function registerCalendariosTools(server, client) {
|
|
47
|
+
// -------------------------------------------------------------------------
|
|
48
|
+
// 1. freematica_list_calendarios
|
|
49
|
+
// -------------------------------------------------------------------------
|
|
50
|
+
server.tool(LIST_CALENDARIOS_TOOL_NAME, LIST_CALENDARIOS_DESCRIPTION, PaginationSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ page, items }) => {
|
|
51
|
+
try {
|
|
52
|
+
const result = await client.listCalendarios({ page, items });
|
|
53
|
+
return okList({ items: result.items, total: result.total, page, itemsPerPage: items });
|
|
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
|
+
// -------------------------------------------------------------------------
|
|
62
|
+
// 2. freematica_list_calendario_periodos
|
|
63
|
+
// -------------------------------------------------------------------------
|
|
64
|
+
server.tool(LIST_PERIODOS_TOOL_NAME, LIST_PERIODOS_DESCRIPTION, {
|
|
65
|
+
idCalendario: z
|
|
66
|
+
.string()
|
|
67
|
+
.min(1)
|
|
68
|
+
.describe('idReg opaco del calendario (campo "idReg" en los items de freematica_list_calendarios).'),
|
|
69
|
+
...PaginationSchema,
|
|
70
|
+
}, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ idCalendario, page, items }) => {
|
|
71
|
+
try {
|
|
72
|
+
const result = await client.listCalendarioPeriodos(idCalendario, { page, items });
|
|
73
|
+
return okList({ items: result.items, total: result.total, page, itemsPerPage: items });
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (err instanceof FreematicaError)
|
|
77
|
+
return error(err);
|
|
78
|
+
return error(err instanceof Error ? err : new Error(String(err)));
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=calendarios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendarios.js","sourceRoot":"","sources":["../../src/tools/calendarios.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { FreematicaClient } from '../clients/freematica-client.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registra las tools MCP del dominio "Cartera de Clientes".
|
|
5
|
+
*
|
|
6
|
+
* Expone 2 tools:
|
|
7
|
+
* - `freematica_list_cartera_clientes`: listado paginado con filtros FIQL
|
|
8
|
+
* - `freematica_get_cartera_cliente`: detalle por idReg
|
|
9
|
+
*
|
|
10
|
+
* @param server - Instancia MCP donde se registran las tools.
|
|
11
|
+
* @param client - Cliente tipado de Freemática.
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerCarteraTools(server: McpServer, client: FreematicaClient): void;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { FreematicaError } from '../clients/base-client.js';
|
|
3
|
+
import { ListCarteraFiltersSchema } from '../schemas/cartera.js';
|
|
4
|
+
import { error, ok, okList } from './helpers.js';
|
|
5
|
+
const LIST_TOOL_NAME = 'freematica_list_cartera_clientes';
|
|
6
|
+
const GET_TOOL_NAME = 'freematica_get_cartera_cliente';
|
|
7
|
+
const LIST_DESCRIPTION = [
|
|
8
|
+
'Devuelve la lista paginada de documentos de cartera de clientes (cobros, efectos, impagados).',
|
|
9
|
+
'',
|
|
10
|
+
'Útil para analizar el estado de cobros: deudas pendientes, impagados, vencimientos próximos.',
|
|
11
|
+
'',
|
|
12
|
+
'Cada item contiene ~40 campos: CARCL_CODAUX (código cliente), CARCL_IMPCOB (importe cobrado),',
|
|
13
|
+
'CARCL_IMPPEN (importe pendiente), CARCL_FECDOC (fecha documento), CARCL_FECVCTO (fecha vencimiento),',
|
|
14
|
+
'CARCL_SITCAR (estado: 1=pendiente, 2=cancelado, 3=derivado), CARCL_FECIMPAG (fecha impago, null si no hay)',
|
|
15
|
+
'más un campo `idReg` opaco (base64) para `freematica_get_cartera_cliente`.',
|
|
16
|
+
'',
|
|
17
|
+
'Filtros disponibles:',
|
|
18
|
+
'- empresa, codCliente, grupoCliente, representante, formaPago, modoPago',
|
|
19
|
+
'- fechaDocDesde/Hasta (rango de fecha del documento)',
|
|
20
|
+
'- fechaVencimientoDesde/Hasta (rango de vencimiento)',
|
|
21
|
+
'- estado: "pendiente" | "cancelado" | "derivado"',
|
|
22
|
+
'- soloImpagados: true → solo documentos con impago registrado (CARCL_FECIMPAG no nulo)',
|
|
23
|
+
'- referencia: referencia exacta del documento (CARCL_REFCAR)',
|
|
24
|
+
'',
|
|
25
|
+
'Paginación 1-indexed. Default: page=1, items=20.',
|
|
26
|
+
].join('\n');
|
|
27
|
+
const GET_DESCRIPTION = [
|
|
28
|
+
'Devuelve el detalle completo de un documento de cartera de clientes.',
|
|
29
|
+
'',
|
|
30
|
+
'El parámetro `id` DEBE ser el campo `idReg` (string opaco base64) que aparece en los items de',
|
|
31
|
+
'freematica_list_cartera_clientes. NO usar CARCL_CODAUX ni otro código natural.',
|
|
32
|
+
].join('\n');
|
|
33
|
+
const IdSchema = {
|
|
34
|
+
id: z
|
|
35
|
+
.string()
|
|
36
|
+
.min(1)
|
|
37
|
+
.describe('idReg opaco del documento de cartera (campo "idReg" en los items de freematica_list_cartera_clientes).'),
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Registra las tools MCP del dominio "Cartera de Clientes".
|
|
41
|
+
*
|
|
42
|
+
* Expone 2 tools:
|
|
43
|
+
* - `freematica_list_cartera_clientes`: listado paginado con filtros FIQL
|
|
44
|
+
* - `freematica_get_cartera_cliente`: detalle por idReg
|
|
45
|
+
*
|
|
46
|
+
* @param server - Instancia MCP donde se registran las tools.
|
|
47
|
+
* @param client - Cliente tipado de Freemática.
|
|
48
|
+
*/
|
|
49
|
+
export function registerCarteraTools(server, client) {
|
|
50
|
+
server.tool(LIST_TOOL_NAME, LIST_DESCRIPTION, ListCarteraFiltersSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (args) => {
|
|
51
|
+
try {
|
|
52
|
+
const result = await client.listCarteraClientes(args);
|
|
53
|
+
return okList({
|
|
54
|
+
items: result.items,
|
|
55
|
+
total: result.total,
|
|
56
|
+
page: args.page,
|
|
57
|
+
itemsPerPage: args.items,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
if (err instanceof FreematicaError)
|
|
62
|
+
return error(err);
|
|
63
|
+
return error(err instanceof Error ? err : new Error(String(err)));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
server.tool(GET_TOOL_NAME, GET_DESCRIPTION, IdSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ id }) => {
|
|
67
|
+
try {
|
|
68
|
+
const doc = await client.getCarteraCliente(id);
|
|
69
|
+
return ok(doc);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
if (err instanceof FreematicaError)
|
|
73
|
+
return error(err);
|
|
74
|
+
return error(err instanceof Error ? err : new Error(String(err)));
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=cartera.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartera.js","sourceRoot":"","sources":["../../src/tools/cartera.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { FreematicaError } from '../clients/base-client.js';
|
|
3
|
+
import { PaginationSchema } from '../schemas/pagination.js';
|
|
4
|
+
import { error, ok, okList } from './helpers.js';
|
|
5
|
+
const LIST_TOOL_NAME = 'freematica_list_clientes';
|
|
6
|
+
const GET_TOOL_NAME = 'freematica_get_cliente';
|
|
7
|
+
const LIST_DESCRIPTION = [
|
|
8
|
+
'Devuelve la lista paginada de clientes de Freemática.',
|
|
9
|
+
'',
|
|
10
|
+
'Cada item tiene ~87 campos (COD_CLI, NOMBRE_CLI, NIF, FECHA_ALTA, etc.) más un campo `idReg` opaco (base64) que se usa para el endpoint singular `freematica_get_cliente`.',
|
|
11
|
+
'',
|
|
12
|
+
'Paginación 1-indexed: la primera página es page=1. Devuelve también `total` con el total de clientes en el dataset.',
|
|
13
|
+
].join('\n');
|
|
14
|
+
const GET_DESCRIPTION = [
|
|
15
|
+
'Devuelve el detalle completo de un cliente.',
|
|
16
|
+
'',
|
|
17
|
+
'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
|
+
].join('\n');
|
|
19
|
+
export function registerClientesTools(server, client) {
|
|
20
|
+
server.tool(LIST_TOOL_NAME, LIST_DESCRIPTION, PaginationSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ page, items }) => {
|
|
21
|
+
try {
|
|
22
|
+
const result = await client.listClientes({ page, items });
|
|
23
|
+
return okList({ items: result.items, total: result.total, page, itemsPerPage: items });
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
if (err instanceof FreematicaError)
|
|
27
|
+
return error(err);
|
|
28
|
+
return error(err instanceof Error ? err : new Error(String(err)));
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
server.tool(GET_TOOL_NAME, GET_DESCRIPTION, {
|
|
32
|
+
id: z
|
|
33
|
+
.string()
|
|
34
|
+
.min(1)
|
|
35
|
+
.describe('idReg opaco del cliente (campo "idReg" en los items de freematica_list_clientes).'),
|
|
36
|
+
}, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ id }) => {
|
|
37
|
+
try {
|
|
38
|
+
const cliente = await client.getCliente(id);
|
|
39
|
+
return ok(cliente);
|
|
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
|
+
}
|
|
48
|
+
//# sourceMappingURL=clientes.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { FreematicaClient } from '../clients/freematica-client.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registra las 3 tools de contabilidad en el MCP server.
|
|
5
|
+
*
|
|
6
|
+
* Tools registradas:
|
|
7
|
+
* - freematica_list_cuentas_contables → GET /pcon/v2/cuentas
|
|
8
|
+
* - freematica_list_cuentas_analiticas → GET /pcon/v2/cuentas-analiticas
|
|
9
|
+
* - freematica_export_asientos → GET /pcon/v2/export-asientos
|
|
10
|
+
*
|
|
11
|
+
* @param server - Instancia del servidor MCP.
|
|
12
|
+
* @param client - Cliente tipado de Freemática.
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerContabilidadTools(server: McpServer, client: FreematicaClient): void;
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { FreematicaError } from '../clients/base-client.js';
|
|
3
|
+
import { error, ok, okList } from './helpers.js';
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Tool names
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
const LIST_CUENTAS_CONTABLES_TOOL = 'freematica_list_cuentas_contables';
|
|
8
|
+
const LIST_CUENTAS_ANALITICAS_TOOL = 'freematica_list_cuentas_analiticas';
|
|
9
|
+
const EXPORT_ASIENTOS_TOOL = 'freematica_export_asientos';
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Descriptions
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
const LIST_CUENTAS_CONTABLES_DESCRIPTION = [
|
|
14
|
+
'Devuelve el plan de cuentas contables de Freemática.',
|
|
15
|
+
'',
|
|
16
|
+
'Endpoint: GET /pcon/v2/cuentas.',
|
|
17
|
+
'Devuelve los registros del catálogo de cuentas del Plan Contable (COD_CTA, COD_PLAN, COD_GRUPO_CTA, CTA_ACTIVA, NOMBRE_CTA, etc.).',
|
|
18
|
+
'',
|
|
19
|
+
'Filtros FIQL disponibles:',
|
|
20
|
+
' - codPlan: filtra por código de plan contable (COD_PLAN).',
|
|
21
|
+
' - prefijoCuenta: filtra cuentas cuyo COD_CTA comienza por el prefijo indicado (prefijo match).',
|
|
22
|
+
' - activa: si true, devuelve solo cuentas activas (CTA_ACTIVA==1); si false, solo inactivas.',
|
|
23
|
+
' - grupoCuenta: filtra por código de grupo de cuenta (COD_GRUPO_CTA).',
|
|
24
|
+
'',
|
|
25
|
+
'Los filtros se combinan con AND. Todos son opcionales.',
|
|
26
|
+
].join('\n');
|
|
27
|
+
const LIST_CUENTAS_ANALITICAS_DESCRIPTION = [
|
|
28
|
+
'Devuelve el catálogo de cuentas analíticas de Freemática.',
|
|
29
|
+
'',
|
|
30
|
+
'Endpoint: GET /pcon/v2/cuentas-analiticas.',
|
|
31
|
+
'Devuelve los registros de cuentas analíticas (COD_CTA_ANL, COD_PLAN, COD_GRUPO_ANL, CTA_ACTIVA_ANL, AREA_ANL, DELEG, etc.).',
|
|
32
|
+
'',
|
|
33
|
+
'Filtros FIQL disponibles:',
|
|
34
|
+
' - codPlan: filtra por código de plan (COD_PLAN).',
|
|
35
|
+
' - prefijoCuenta: filtra cuentas cuyo COD_CTA_ANL comienza por el prefijo indicado.',
|
|
36
|
+
' - activa: si true, solo cuentas activas (CTA_ACTIVA_ANL==1); si false, solo inactivas.',
|
|
37
|
+
' - grupoCuenta: filtra por código de grupo analítico (COD_GRUPO_ANL).',
|
|
38
|
+
' - area: filtra por área analítica (AREA_ANL).',
|
|
39
|
+
' - delegacion: filtra por delegación (DELEG).',
|
|
40
|
+
'',
|
|
41
|
+
'Los filtros se combinan con AND. Todos son opcionales.',
|
|
42
|
+
].join('\n');
|
|
43
|
+
const EXPORT_ASIENTOS_DESCRIPTION = [
|
|
44
|
+
'Exporta asientos contables de Freemática en batch.',
|
|
45
|
+
'',
|
|
46
|
+
'Endpoint: GET /pcon/v2/export-asientos.',
|
|
47
|
+
'',
|
|
48
|
+
'⚠️ AVISO: Este endpoint puede devolver volúmenes MUY GRANDES de datos.',
|
|
49
|
+
'RECOMENDAR siempre un rango de fechas (fechaDesde + fechaHasta) para acotar',
|
|
50
|
+
'la respuesta. Sin rango de fechas, puede devolver TODO el histórico contable.',
|
|
51
|
+
'',
|
|
52
|
+
'Parámetros obligatorios:',
|
|
53
|
+
' - empresa: código de empresa de 4 caracteres exactos (ej. "0001").',
|
|
54
|
+
' - cal: código de calendario de 4 caracteres exactos (ej. "GRAL").',
|
|
55
|
+
'',
|
|
56
|
+
'Parámetros opcionales nativos (query param directo, no FIQL):',
|
|
57
|
+
' - periodo: número de periodo contable (1-12, puede tener ceros, ej. "01").',
|
|
58
|
+
'',
|
|
59
|
+
'Filtros FIQL adicionales (opcionales):',
|
|
60
|
+
' - fechaDesde / fechaHasta: rango de fechas sobre ASI_FCHASI en formato YYYY-MM-DD.',
|
|
61
|
+
' - diario: código del diario contable (ASI_DIARIO).',
|
|
62
|
+
' - borrador: si true, incluye solo asientos borrador (ASI_BORR no nulo).',
|
|
63
|
+
'',
|
|
64
|
+
'Protección de tamaño: si la respuesta supera FREEMATICA_MAX_RESPONSE_SIZE_MB (default 10 MB),',
|
|
65
|
+
'la tool devuelve los datos truncados con un campo "warning" indicando el truncado.',
|
|
66
|
+
'Se recomienda usar rangos de fecha cortos (máx. 1 mes) para evitar truncados.',
|
|
67
|
+
].join('\n');
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// Input schemas
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
/**
|
|
72
|
+
* Schema de filtros para freematica_list_cuentas_contables.
|
|
73
|
+
*/
|
|
74
|
+
const CuentasContablesFiltersSchema = {
|
|
75
|
+
codPlan: z
|
|
76
|
+
.string()
|
|
77
|
+
.min(1)
|
|
78
|
+
.optional()
|
|
79
|
+
.describe('Código del plan contable (COD_PLAN en Freemática). Opcional.'),
|
|
80
|
+
prefijoCuenta: z
|
|
81
|
+
.string()
|
|
82
|
+
.min(1)
|
|
83
|
+
.optional()
|
|
84
|
+
.describe('Prefijo del código de cuenta (COD_CTA). La tool aplica prefix match (COD_CTA starts-with). Opcional.'),
|
|
85
|
+
activa: z
|
|
86
|
+
.boolean()
|
|
87
|
+
.optional()
|
|
88
|
+
.describe('Si true, devuelve solo cuentas activas (CTA_ACTIVA==1). Si false, solo inactivas. Omitir para todas.'),
|
|
89
|
+
grupoCuenta: z
|
|
90
|
+
.string()
|
|
91
|
+
.min(1)
|
|
92
|
+
.optional()
|
|
93
|
+
.describe('Código de grupo de cuenta (COD_GRUPO_CTA). Opcional.'),
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Schema de filtros para freematica_list_cuentas_analiticas.
|
|
97
|
+
*/
|
|
98
|
+
const CuentasAnaliticasFiltersSchema = {
|
|
99
|
+
codPlan: z
|
|
100
|
+
.string()
|
|
101
|
+
.min(1)
|
|
102
|
+
.optional()
|
|
103
|
+
.describe('Código del plan contable (COD_PLAN). Opcional.'),
|
|
104
|
+
prefijoCuenta: z
|
|
105
|
+
.string()
|
|
106
|
+
.min(1)
|
|
107
|
+
.optional()
|
|
108
|
+
.describe('Prefijo del código de cuenta analítica (COD_CTA_ANL). Prefix match. Opcional.'),
|
|
109
|
+
activa: z
|
|
110
|
+
.boolean()
|
|
111
|
+
.optional()
|
|
112
|
+
.describe('Si true, solo cuentas activas (CTA_ACTIVA_ANL==1). Si false, solo inactivas. Omitir para todas.'),
|
|
113
|
+
grupoCuenta: z
|
|
114
|
+
.string()
|
|
115
|
+
.min(1)
|
|
116
|
+
.optional()
|
|
117
|
+
.describe('Código de grupo analítico (COD_GRUPO_ANL). Opcional.'),
|
|
118
|
+
area: z
|
|
119
|
+
.string()
|
|
120
|
+
.min(1)
|
|
121
|
+
.optional()
|
|
122
|
+
.describe('Área analítica (AREA_ANL). Opcional.'),
|
|
123
|
+
delegacion: z
|
|
124
|
+
.string()
|
|
125
|
+
.min(1)
|
|
126
|
+
.optional()
|
|
127
|
+
.describe('Código de delegación (DELEG). Opcional.'),
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Schema de input para freematica_export_asientos.
|
|
131
|
+
*
|
|
132
|
+
* - empresa y cal son obligatorios (4 chars exactos), se envían como query params nativos.
|
|
133
|
+
* - periodo es opcional (hasta 2 chars) y también es query param nativo.
|
|
134
|
+
* - fechaDesde/Hasta, diario, borrador son filtros FIQL opcionales.
|
|
135
|
+
*/
|
|
136
|
+
const ExportAsientosSchema = {
|
|
137
|
+
empresa: z
|
|
138
|
+
.string()
|
|
139
|
+
.length(4)
|
|
140
|
+
.describe('Código de empresa (4 caracteres exactos, ej. "0001"). OBLIGATORIO. Se envía como query param nativo.'),
|
|
141
|
+
cal: z
|
|
142
|
+
.string()
|
|
143
|
+
.length(4)
|
|
144
|
+
.describe('Código de calendario contable (4 caracteres exactos, ej. "GRAL"). OBLIGATORIO. Se envía como query param nativo.'),
|
|
145
|
+
periodo: z
|
|
146
|
+
.string()
|
|
147
|
+
.max(2)
|
|
148
|
+
.optional()
|
|
149
|
+
.describe('Número de periodo contable (máx. 2 chars, ej. "01" para enero). Opcional. Se envía como query param nativo.'),
|
|
150
|
+
fechaDesde: z
|
|
151
|
+
.string()
|
|
152
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/, 'Debe ser una fecha en formato YYYY-MM-DD')
|
|
153
|
+
.optional()
|
|
154
|
+
.describe('Fecha inicio del rango de asientos en formato YYYY-MM-DD (sobre ASI_FCHASI). Recomendado siempre para acotar el volumen.'),
|
|
155
|
+
fechaHasta: z
|
|
156
|
+
.string()
|
|
157
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/, 'Debe ser una fecha en formato YYYY-MM-DD')
|
|
158
|
+
.optional()
|
|
159
|
+
.describe('Fecha fin del rango de asientos en formato YYYY-MM-DD (sobre ASI_FCHASI). Recomendado siempre para acotar el volumen.'),
|
|
160
|
+
diario: z
|
|
161
|
+
.string()
|
|
162
|
+
.min(1)
|
|
163
|
+
.optional()
|
|
164
|
+
.describe('Código del diario contable (ASI_DIARIO). Opcional.'),
|
|
165
|
+
borrador: z
|
|
166
|
+
.boolean()
|
|
167
|
+
.optional()
|
|
168
|
+
.describe('Si true, incluye solo asientos en estado borrador (ASI_BORR no nulo). Si false, solo asientos definitivos. Omitir para todos.'),
|
|
169
|
+
};
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
// Register function
|
|
172
|
+
// ---------------------------------------------------------------------------
|
|
173
|
+
/**
|
|
174
|
+
* Registra las 3 tools de contabilidad en el MCP server.
|
|
175
|
+
*
|
|
176
|
+
* Tools registradas:
|
|
177
|
+
* - freematica_list_cuentas_contables → GET /pcon/v2/cuentas
|
|
178
|
+
* - freematica_list_cuentas_analiticas → GET /pcon/v2/cuentas-analiticas
|
|
179
|
+
* - freematica_export_asientos → GET /pcon/v2/export-asientos
|
|
180
|
+
*
|
|
181
|
+
* @param server - Instancia del servidor MCP.
|
|
182
|
+
* @param client - Cliente tipado de Freemática.
|
|
183
|
+
*/
|
|
184
|
+
export function registerContabilidadTools(server, client) {
|
|
185
|
+
// -------------------------------------------------------------------------
|
|
186
|
+
// freematica_list_cuentas_contables
|
|
187
|
+
// -------------------------------------------------------------------------
|
|
188
|
+
server.tool(LIST_CUENTAS_CONTABLES_TOOL, LIST_CUENTAS_CONTABLES_DESCRIPTION, CuentasContablesFiltersSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ codPlan, prefijoCuenta, activa, grupoCuenta }) => {
|
|
189
|
+
try {
|
|
190
|
+
const result = await client.listCuentasContables({
|
|
191
|
+
codPlan,
|
|
192
|
+
prefijoCuenta,
|
|
193
|
+
activa,
|
|
194
|
+
grupoCuenta,
|
|
195
|
+
});
|
|
196
|
+
return okList({ items: result.items, total: result.total });
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
if (err instanceof FreematicaError)
|
|
200
|
+
return error(err);
|
|
201
|
+
return error(err instanceof Error ? err : new Error(String(err)));
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
// -------------------------------------------------------------------------
|
|
205
|
+
// freematica_list_cuentas_analiticas
|
|
206
|
+
// -------------------------------------------------------------------------
|
|
207
|
+
server.tool(LIST_CUENTAS_ANALITICAS_TOOL, LIST_CUENTAS_ANALITICAS_DESCRIPTION, CuentasAnaliticasFiltersSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ codPlan, prefijoCuenta, activa, grupoCuenta, area, delegacion }) => {
|
|
208
|
+
try {
|
|
209
|
+
const result = await client.listCuentasAnaliticas({
|
|
210
|
+
codPlan,
|
|
211
|
+
prefijoCuenta,
|
|
212
|
+
activa,
|
|
213
|
+
grupoCuenta,
|
|
214
|
+
area,
|
|
215
|
+
delegacion,
|
|
216
|
+
});
|
|
217
|
+
return okList({ items: result.items, total: result.total });
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
if (err instanceof FreematicaError)
|
|
221
|
+
return error(err);
|
|
222
|
+
return error(err instanceof Error ? err : new Error(String(err)));
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
// -------------------------------------------------------------------------
|
|
226
|
+
// freematica_export_asientos
|
|
227
|
+
// -------------------------------------------------------------------------
|
|
228
|
+
server.tool(EXPORT_ASIENTOS_TOOL, EXPORT_ASIENTOS_DESCRIPTION, ExportAsientosSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ empresa, cal, periodo, fechaDesde, fechaHasta, diario, borrador, }) => {
|
|
229
|
+
try {
|
|
230
|
+
const result = await client.exportAsientos({
|
|
231
|
+
empresa,
|
|
232
|
+
cal,
|
|
233
|
+
periodo,
|
|
234
|
+
fechaDesde,
|
|
235
|
+
fechaHasta,
|
|
236
|
+
diario,
|
|
237
|
+
borrador,
|
|
238
|
+
});
|
|
239
|
+
if (result.truncated) {
|
|
240
|
+
// Respuesta truncada por exceder MAX_RESPONSE_SIZE_MB
|
|
241
|
+
const payload = {
|
|
242
|
+
items: result.items,
|
|
243
|
+
count: result.items.length,
|
|
244
|
+
total: result.total,
|
|
245
|
+
warning: result.warning,
|
|
246
|
+
truncated: true,
|
|
247
|
+
};
|
|
248
|
+
return ok(payload);
|
|
249
|
+
}
|
|
250
|
+
return okList({ items: result.items, total: result.total });
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
if (err instanceof FreematicaError)
|
|
254
|
+
return error(err);
|
|
255
|
+
return error(err instanceof Error ? err : new Error(String(err)));
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=contabilidad.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contabilidad.js","sourceRoot":"","sources":["../../src/tools/contabilidad.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FreematicaError } from '../clients/base-client.js';
|
|
2
|
+
import { PaginationSchema } from '../schemas/pagination.js';
|
|
3
|
+
import { error, okList } from './helpers.js';
|
|
4
|
+
const LIST_TOOL_NAME = 'freematica_list_contactos_clientes';
|
|
5
|
+
const LIST_DESCRIPTION = [
|
|
6
|
+
'Devuelve la lista paginada de contactos de clientes (personas asociadas a clientes corporativos).',
|
|
7
|
+
'',
|
|
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.',
|
|
9
|
+
'',
|
|
10
|
+
'Paginación 1-indexed.',
|
|
11
|
+
].join('\n');
|
|
12
|
+
export function registerContactosClientesTools(server, client) {
|
|
13
|
+
server.tool(LIST_TOOL_NAME, LIST_DESCRIPTION, PaginationSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ page, items }) => {
|
|
14
|
+
try {
|
|
15
|
+
const result = await client.listContactosClientes({ page, items });
|
|
16
|
+
return okList({ items: result.items, total: result.total, page, itemsPerPage: items });
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
if (err instanceof FreematicaError)
|
|
20
|
+
return error(err);
|
|
21
|
+
return error(err instanceof Error ? err : new Error(String(err)));
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=contactos-clientes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contactos-clientes.js","sourceRoot":"","sources":["../../src/tools/contactos-clientes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,cAAc,GAAG,oCAAoC,CAAC;AAE5D,MAAM,gBAAgB,GAAG;IACvB,mGAAmG;IACnG,EAAE;IACF,+KAA+K;IAC/K,EAAE;IACF,uBAAuB;CACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,8BAA8B,CAAC,MAAiB,EAAE,MAAwB;IACxF,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,qBAAqB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,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;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { FreematicaClient } from '../clients/freematica-client.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registers every MCP tool that maps to operations in the "Contratos" API group
|
|
5
|
+
* (Postman: app `pvss` → group `Contratos`).
|
|
6
|
+
*
|
|
7
|
+
* Add new tools here by calling `server.tool(...)` again. When this file grows
|
|
8
|
+
* past ~15 tools, split it into `src/tools/contratos/<entity>.ts`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerContratosTools(server: McpServer, client: FreematicaClient): void;
|