@servicialo/mcp-server 0.3.0 → 0.4.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 (49) hide show
  1. package/README.md +104 -48
  2. package/dist/index.js +12 -14
  3. package/dist/index.js.map +1 -1
  4. package/dist/tools/authenticated/{clients.d.ts → cerrar.d.ts} +75 -83
  5. package/dist/tools/authenticated/cerrar.d.ts.map +1 -0
  6. package/dist/tools/authenticated/cerrar.js +73 -0
  7. package/dist/tools/authenticated/cerrar.js.map +1 -0
  8. package/dist/tools/authenticated/comprometer.d.ts +204 -0
  9. package/dist/tools/authenticated/comprometer.d.ts.map +1 -0
  10. package/dist/tools/authenticated/comprometer.js +55 -0
  11. package/dist/tools/authenticated/comprometer.js.map +1 -0
  12. package/dist/tools/authenticated/delivery.d.ts +234 -0
  13. package/dist/tools/authenticated/delivery.d.ts.map +1 -0
  14. package/dist/tools/authenticated/delivery.js +53 -0
  15. package/dist/tools/authenticated/delivery.js.map +1 -0
  16. package/dist/tools/authenticated/{notifications.d.ts → entender.d.ts} +16 -12
  17. package/dist/tools/authenticated/entender.d.ts.map +1 -0
  18. package/dist/tools/authenticated/entender.js +25 -0
  19. package/dist/tools/authenticated/entender.js.map +1 -0
  20. package/dist/tools/authenticated/{scheduling.d.ts → lifecycle.d.ts} +25 -77
  21. package/dist/tools/authenticated/lifecycle.d.ts.map +1 -0
  22. package/dist/tools/authenticated/lifecycle.js +63 -0
  23. package/dist/tools/authenticated/lifecycle.js.map +1 -0
  24. package/dist/tools/schemas.d.ts +40 -0
  25. package/dist/tools/schemas.d.ts.map +1 -0
  26. package/dist/tools/schemas.js +14 -0
  27. package/dist/tools/schemas.js.map +1 -0
  28. package/package.json +2 -2
  29. package/dist/tools/authenticated/clients.d.ts.map +0 -1
  30. package/dist/tools/authenticated/clients.js +0 -64
  31. package/dist/tools/authenticated/clients.js.map +0 -1
  32. package/dist/tools/authenticated/notifications.d.ts.map +0 -1
  33. package/dist/tools/authenticated/notifications.js +0 -22
  34. package/dist/tools/authenticated/notifications.js.map +0 -1
  35. package/dist/tools/authenticated/payments.d.ts +0 -105
  36. package/dist/tools/authenticated/payments.d.ts.map +0 -1
  37. package/dist/tools/authenticated/payments.js +0 -70
  38. package/dist/tools/authenticated/payments.js.map +0 -1
  39. package/dist/tools/authenticated/payroll.d.ts +0 -106
  40. package/dist/tools/authenticated/payroll.d.ts.map +0 -1
  41. package/dist/tools/authenticated/payroll.js +0 -77
  42. package/dist/tools/authenticated/payroll.js.map +0 -1
  43. package/dist/tools/authenticated/providers.d.ts +0 -52
  44. package/dist/tools/authenticated/providers.d.ts.map +0 -1
  45. package/dist/tools/authenticated/providers.js +0 -37
  46. package/dist/tools/authenticated/providers.js.map +0 -1
  47. package/dist/tools/authenticated/scheduling.d.ts.map +0 -1
  48. package/dist/tools/authenticated/scheduling.js +0 -82
  49. package/dist/tools/authenticated/scheduling.js.map +0 -1
@@ -1,78 +1,25 @@
1
1
  import { z } from 'zod';
2
2
  import type { CoordinaloClient } from '../../client.js';
3
- declare const ActorSchema: z.ZodObject<{
4
- type: z.ZodEnum<["client", "provider", "organization", "agent"]>;
5
- id: z.ZodString;
6
- on_behalf_of: z.ZodOptional<z.ZodObject<{
7
- type: z.ZodString;
8
- id: z.ZodString;
9
- }, "strip", z.ZodTypeAny, {
10
- type: string;
11
- id: string;
12
- }, {
13
- type: string;
14
- id: string;
15
- }>>;
16
- }, "strip", z.ZodTypeAny, {
17
- type: "client" | "provider" | "organization" | "agent";
18
- id: string;
19
- on_behalf_of?: {
20
- type: string;
21
- id: string;
22
- } | undefined;
23
- }, {
24
- type: "client" | "provider" | "organization" | "agent";
25
- id: string;
26
- on_behalf_of?: {
27
- type: string;
28
- id: string;
29
- } | undefined;
30
- }>;
31
- export declare const schedulingTools: {
32
- 'scheduling.list_sessions': {
3
+ import { ActorSchema } from '../schemas.js';
4
+ export declare const lifecycleTools: {
5
+ 'lifecycle.get_state': {
33
6
  description: string;
34
7
  schema: z.ZodObject<{
35
- date_from: z.ZodOptional<z.ZodString>;
36
- date_to: z.ZodOptional<z.ZodString>;
37
- provider_id: z.ZodOptional<z.ZodString>;
38
- client_id: z.ZodOptional<z.ZodString>;
39
- status: z.ZodOptional<z.ZodString>;
40
- limit: z.ZodDefault<z.ZodNumber>;
41
- page: z.ZodDefault<z.ZodNumber>;
8
+ session_id: z.ZodString;
42
9
  }, "strip", z.ZodTypeAny, {
43
- limit: number;
44
- page: number;
45
- status?: string | undefined;
46
- provider_id?: string | undefined;
47
- date_from?: string | undefined;
48
- date_to?: string | undefined;
49
- client_id?: string | undefined;
10
+ session_id: string;
50
11
  }, {
51
- limit?: number | undefined;
52
- status?: string | undefined;
53
- provider_id?: string | undefined;
54
- date_from?: string | undefined;
55
- date_to?: string | undefined;
56
- client_id?: string | undefined;
57
- page?: number | undefined;
12
+ session_id: string;
58
13
  }>;
59
14
  handler: (client: CoordinaloClient, args: {
60
- date_from?: string;
61
- date_to?: string;
62
- provider_id?: string;
63
- client_id?: string;
64
- status?: string;
65
- limit?: number;
66
- page?: number;
15
+ session_id: string;
67
16
  }) => Promise<unknown>;
68
17
  };
69
- 'scheduling.book': {
18
+ 'lifecycle.transition': {
70
19
  description: string;
71
20
  schema: z.ZodObject<{
72
- service_id: z.ZodString;
73
- provider_id: z.ZodString;
74
- client_id: z.ZodString;
75
- starts_at: z.ZodString;
21
+ session_id: z.ZodString;
22
+ to_state: z.ZodEnum<["matched", "scheduled", "confirmed", "in_progress", "completed", "documented", "billed", "closed", "cancelled"]>;
76
23
  actor: z.ZodObject<{
77
24
  type: z.ZodEnum<["client", "provider", "organization", "agent"]>;
78
25
  id: z.ZodString;
@@ -101,11 +48,9 @@ export declare const schedulingTools: {
101
48
  id: string;
102
49
  } | undefined;
103
50
  }>;
51
+ reason: z.ZodOptional<z.ZodString>;
52
+ evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
104
53
  }, "strip", z.ZodTypeAny, {
105
- service_id: string;
106
- provider_id: string;
107
- client_id: string;
108
- starts_at: string;
109
54
  actor: {
110
55
  type: "client" | "provider" | "organization" | "agent";
111
56
  id: string;
@@ -114,11 +59,11 @@ export declare const schedulingTools: {
114
59
  id: string;
115
60
  } | undefined;
116
61
  };
62
+ session_id: string;
63
+ to_state: "matched" | "scheduled" | "confirmed" | "in_progress" | "completed" | "documented" | "billed" | "closed" | "cancelled";
64
+ reason?: string | undefined;
65
+ evidence?: Record<string, unknown> | undefined;
117
66
  }, {
118
- service_id: string;
119
- provider_id: string;
120
- client_id: string;
121
- starts_at: string;
122
67
  actor: {
123
68
  type: "client" | "provider" | "organization" | "agent";
124
69
  id: string;
@@ -127,13 +72,17 @@ export declare const schedulingTools: {
127
72
  id: string;
128
73
  } | undefined;
129
74
  };
75
+ session_id: string;
76
+ to_state: "matched" | "scheduled" | "confirmed" | "in_progress" | "completed" | "documented" | "billed" | "closed" | "cancelled";
77
+ reason?: string | undefined;
78
+ evidence?: Record<string, unknown> | undefined;
130
79
  }>;
131
80
  handler: (client: CoordinaloClient, args: {
132
- service_id: string;
133
- provider_id: string;
134
- client_id: string;
135
- starts_at: string;
81
+ session_id: string;
82
+ to_state: string;
136
83
  actor: z.infer<typeof ActorSchema>;
84
+ reason?: string;
85
+ evidence?: Record<string, unknown>;
137
86
  }) => Promise<unknown>;
138
87
  };
139
88
  'scheduling.reschedule': {
@@ -261,5 +210,4 @@ export declare const schedulingTools: {
261
210
  }) => Promise<unknown>;
262
211
  };
263
212
  };
264
- export {};
265
- //# sourceMappingURL=scheduling.d.ts.map
213
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/tools/authenticated/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,cAAc;;;;;;;;;;0BAOC,gBAAgB,QAAQ;YAAE,UAAU,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAkB9C,gBAAgB,QAAQ;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAkBzJ,gBAAgB,QAAQ;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAgBxG,gBAAgB,QAAQ;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;SAAE;;CAO9H,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import { ActorSchema } from '../schemas.js';
3
+ export const lifecycleTools = {
4
+ 'lifecycle.get_state': {
5
+ description: '[Fase 4 — Ciclo de vida] Obtiene el estado actual de una sesión en el ciclo de vida Servicialo, incluyendo las transiciones disponibles desde el estado actual y el historial de transiciones pasadas.',
6
+ schema: z.object({
7
+ session_id: z.string().describe('ID de la sesión'),
8
+ }),
9
+ handler: async (client, args) => {
10
+ return client.get(`/coordinalo/sessions/${args.session_id}/lifecycle`);
11
+ },
12
+ },
13
+ 'lifecycle.transition': {
14
+ description: '[Fase 4 — Ciclo de vida] Ejecuta una transición de estado en el ciclo de vida de una sesión. Transiciones válidas: requested→matched, matched→scheduled, scheduled→confirmed, confirmed→in_progress, in_progress→completed, completed→documented, documented→billed, billed→closed, any→cancelled. Cada transición puede requerir evidencia según el contrato del servicio.',
15
+ schema: z.object({
16
+ session_id: z.string().describe('ID de la sesión'),
17
+ to_state: z.enum([
18
+ 'matched', 'scheduled', 'confirmed', 'in_progress',
19
+ 'completed', 'documented', 'billed', 'closed', 'cancelled',
20
+ ]).describe('Estado destino de la transición'),
21
+ actor: ActorSchema.describe('Quién ejecuta la transición'),
22
+ reason: z.string().optional().describe('Motivo de la transición (requerido para cancelled)'),
23
+ evidence: z.record(z.unknown()).optional().describe('Evidencia requerida por el contrato para esta transición'),
24
+ }),
25
+ handler: async (client, args) => {
26
+ return client.post(`/coordinalo/sessions/${args.session_id}/lifecycle/transition`, {
27
+ toState: args.to_state,
28
+ actor: args.actor,
29
+ reason: args.reason,
30
+ evidence: args.evidence,
31
+ });
32
+ },
33
+ },
34
+ 'scheduling.reschedule': {
35
+ description: '[Fase 4 — Ciclo de vida] Reagenda una sesión existente a una nueva fecha/hora. Flujo de excepción: la sesión vuelve a estado "Scheduled" con nuevo horario. La política de reagendamiento del contrato puede aplicar cargos.',
36
+ schema: z.object({
37
+ session_id: z.string().describe('ID de la sesión a reagendar'),
38
+ new_datetime: z.string().describe('Nueva fecha y hora (ISO datetime)'),
39
+ actor: ActorSchema.describe('Quién realiza la acción'),
40
+ }),
41
+ handler: async (client, args) => {
42
+ return client.put(`/coordinalo/sessions/${args.session_id}`, {
43
+ startTime: args.new_datetime,
44
+ actor: args.actor,
45
+ });
46
+ },
47
+ },
48
+ 'scheduling.cancel': {
49
+ description: '[Fase 4 — Ciclo de vida] Cancela una sesión existente. Flujo de excepción: aplica la política de cancelación definida en el contrato (reembolso total fuera de ventana de penalidad, parcial/nulo dentro). Llama contract.get primero para conocer la política.',
50
+ schema: z.object({
51
+ session_id: z.string().describe('ID de la sesión a cancelar'),
52
+ reason: z.string().optional().describe('Motivo de la cancelación'),
53
+ actor: ActorSchema.describe('Quién realiza la acción'),
54
+ }),
55
+ handler: async (client, args) => {
56
+ return client.post(`/coordinalo/sessions/${args.session_id}/cancel`, {
57
+ reason: args.reason,
58
+ actor: args.actor,
59
+ });
60
+ },
61
+ },
62
+ };
63
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/tools/authenticated/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ export declare const ActorSchema: z.ZodObject<{
3
+ type: z.ZodEnum<["client", "provider", "organization", "agent"]>;
4
+ id: z.ZodString;
5
+ on_behalf_of: z.ZodOptional<z.ZodObject<{
6
+ type: z.ZodString;
7
+ id: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ type: string;
10
+ id: string;
11
+ }, {
12
+ type: string;
13
+ id: string;
14
+ }>>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ type: "client" | "provider" | "organization" | "agent";
17
+ id: string;
18
+ on_behalf_of?: {
19
+ type: string;
20
+ id: string;
21
+ } | undefined;
22
+ }, {
23
+ type: "client" | "provider" | "organization" | "agent";
24
+ id: string;
25
+ on_behalf_of?: {
26
+ type: string;
27
+ id: string;
28
+ } | undefined;
29
+ }>;
30
+ export declare const LocationSchema: z.ZodObject<{
31
+ lat: z.ZodNumber;
32
+ lng: z.ZodNumber;
33
+ }, "strip", z.ZodTypeAny, {
34
+ lat: number;
35
+ lng: number;
36
+ }, {
37
+ lat: number;
38
+ lng: number;
39
+ }>;
40
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOtB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;EAGzB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ export const ActorSchema = z.object({
3
+ type: z.enum(['client', 'provider', 'organization', 'agent']),
4
+ id: z.string(),
5
+ on_behalf_of: z.object({
6
+ type: z.string(),
7
+ id: z.string(),
8
+ }).optional(),
9
+ });
10
+ export const LocationSchema = z.object({
11
+ lat: z.number().describe('Latitud'),
12
+ lng: z.number().describe('Longitud'),
13
+ });
14
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAC7D,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;KACf,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;IACnC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;CACrC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@servicialo/mcp-server",
3
- "version": "0.3.0",
4
- "description": "MCP server for the Servicialo protocol connects AI agents to professional services via Coordinalo API",
3
+ "version": "0.4.0",
4
+ "description": "Servidor MCP del protocolo Servicialo — conecta agentes de IA con servicios profesionales vía la API de Coordinalo",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "bin": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../../src/tools/authenticated/clients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOf,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;0BAQG,gBAAgB,QAAQ;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;0BAc1E,gBAAgB,QAAQ;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAc7C,gBAAgB,QAAQ;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;SAAE;;;;;;;;;;;0BAgB/H,gBAAgB,QAAQ;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE;;CAIxE,CAAC"}
@@ -1,64 +0,0 @@
1
- import { z } from 'zod';
2
- const ActorSchema = z.object({
3
- type: z.enum(['client', 'provider', 'organization', 'agent']),
4
- id: z.string(),
5
- on_behalf_of: z.object({
6
- type: z.string(),
7
- id: z.string(),
8
- }).optional(),
9
- });
10
- export const clientsTools = {
11
- 'clients.list': {
12
- description: 'Lista los clientes de la organización con búsqueda y paginación',
13
- schema: z.object({
14
- search: z.string().optional().describe('Buscar por nombre, email o teléfono'),
15
- limit: z.number().default(20).describe('Resultados por página'),
16
- page: z.number().default(1).describe('Número de página'),
17
- }),
18
- handler: async (client, args) => {
19
- return client.get('/relacionalo/clients', {
20
- search: args.search,
21
- limit: args.limit ?? 20,
22
- page: args.page ?? 1,
23
- });
24
- },
25
- },
26
- 'clients.get': {
27
- description: 'Obtiene el detalle de un cliente incluyendo historial y pagos pendientes',
28
- schema: z.object({
29
- client_id: z.string().describe('ID del cliente'),
30
- }),
31
- handler: async (client, args) => {
32
- return client.get(`/relacionalo/clients/${args.client_id}`);
33
- },
34
- },
35
- 'clients.create': {
36
- description: 'Crea un nuevo cliente en la organización',
37
- schema: z.object({
38
- name: z.string().describe('Nombre del cliente'),
39
- last_name: z.string().describe('Apellido del cliente'),
40
- email: z.string().email().optional().describe('Email del cliente'),
41
- phone: z.string().optional().describe('Teléfono del cliente'),
42
- actor: ActorSchema.describe('Quién realiza la acción'),
43
- }),
44
- handler: async (client, args) => {
45
- return client.post('/relacionalo/clients', {
46
- name: args.name,
47
- lastName: args.last_name,
48
- email: args.email,
49
- phone: args.phone,
50
- actor: args.actor,
51
- });
52
- },
53
- },
54
- 'clients.history': {
55
- description: 'Obtiene el historial de un cliente: sesiones pasadas, pagos y actividad',
56
- schema: z.object({
57
- client_id: z.string().describe('ID del cliente'),
58
- }),
59
- handler: async (client, args) => {
60
- return client.get(`/relacionalo/clients/${args.client_id}/history`);
61
- },
62
- },
63
- };
64
- //# sourceMappingURL=clients.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../src/tools/authenticated/clients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAC7D,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;KACf,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,cAAc,EAAE;QACd,WAAW,EAAE,iEAAiE;QAC9E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC7E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SACzD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAwB,EAAE,IAAwD,EAAE,EAAE;YACpG,OAAO,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE;gBACxC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;aACrB,CAAC,CAAC;QACL,CAAC;KACF;IAED,aAAa,EAAE;QACb,WAAW,EAAE,0EAA0E;QACvF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SACjD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAwB,EAAE,IAA2B,EAAE,EAAE;YACvE,OAAO,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9D,CAAC;KACF;IAED,gBAAgB,EAAE;QAChB,WAAW,EAAE,0CAA0C;QACvD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAClE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC7D,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACvD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAwB,EAAE,IAA6G,EAAE,EAAE;YACzJ,OAAO,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBACzC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;KACF;IAED,iBAAiB,EAAE;QACjB,WAAW,EAAE,yEAAyE;QACtF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SACjD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAwB,EAAE,IAA2B,EAAE,EAAE;YACvE,OAAO,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC;QACtE,CAAC;KACF;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/tools/authenticated/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAO,MAAM,kBAAkB;;;;;;;;;;0BAMH,gBAAgB,QAAQ;YAAE,UAAU,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;0BAU9C,gBAAgB,QAAQ;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE;;CAIvE,CAAC"}
@@ -1,22 +0,0 @@
1
- import { z } from 'zod';
2
- export const notificationsTools = {
3
- 'notifications.send_session_reminder': {
4
- description: 'Envía una notificación/recordatorio para una sesión específica',
5
- schema: z.object({
6
- session_id: z.string().describe('ID de la sesión'),
7
- }),
8
- handler: async (client, args) => {
9
- return client.post(`/coordinalo/sessions/${args.session_id}/send-notification`);
10
- },
11
- },
12
- 'notifications.send_payment_reminder': {
13
- description: 'Envía un recordatorio de pago para una venta pendiente',
14
- schema: z.object({
15
- venta_id: z.string().describe('ID de la venta'),
16
- }),
17
- handler: async (client, args) => {
18
- return client.post(`/planificalo/sales/${args.venta_id}/send-payment-reminder`);
19
- },
20
- },
21
- };
22
- //# sourceMappingURL=notifications.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/tools/authenticated/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,qCAAqC,EAAE;QACrC,WAAW,EAAE,gEAAgE;QAC7E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SACnD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAwB,EAAE,IAA4B,EAAE,EAAE;YACxE,OAAO,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,UAAU,oBAAoB,CAAC,CAAC;QAClF,CAAC;KACF;IAED,qCAAqC,EAAE;QACrC,WAAW,EAAE,wDAAwD;QACrE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SAChD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAwB,EAAE,IAA0B,EAAE,EAAE;YACtE,OAAO,MAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,QAAQ,wBAAwB,CAAC,CAAC;QAClF,CAAC;KACF;CACF,CAAC"}
@@ -1,105 +0,0 @@
1
- import { z } from 'zod';
2
- import type { CoordinaloClient } from '../../client.js';
3
- export declare const paymentsTools: {
4
- 'payments.list_sales': {
5
- description: string;
6
- schema: z.ZodObject<{
7
- client_id: z.ZodOptional<z.ZodString>;
8
- provider_id: z.ZodOptional<z.ZodString>;
9
- service_id: z.ZodOptional<z.ZodString>;
10
- status: z.ZodOptional<z.ZodString>;
11
- limit: z.ZodDefault<z.ZodNumber>;
12
- page: z.ZodDefault<z.ZodNumber>;
13
- }, "strip", z.ZodTypeAny, {
14
- limit: number;
15
- page: number;
16
- status?: string | undefined;
17
- service_id?: string | undefined;
18
- provider_id?: string | undefined;
19
- client_id?: string | undefined;
20
- }, {
21
- limit?: number | undefined;
22
- status?: string | undefined;
23
- service_id?: string | undefined;
24
- provider_id?: string | undefined;
25
- client_id?: string | undefined;
26
- page?: number | undefined;
27
- }>;
28
- handler: (client: CoordinaloClient, args: {
29
- client_id?: string;
30
- provider_id?: string;
31
- service_id?: string;
32
- status?: string;
33
- limit?: number;
34
- page?: number;
35
- }) => Promise<unknown>;
36
- };
37
- 'payments.create_sale': {
38
- description: string;
39
- schema: z.ZodObject<{
40
- client_id: z.ZodString;
41
- service_id: z.ZodString;
42
- provider_id: z.ZodString;
43
- quantity: z.ZodDefault<z.ZodNumber>;
44
- unit_price: z.ZodNumber;
45
- }, "strip", z.ZodTypeAny, {
46
- service_id: string;
47
- provider_id: string;
48
- client_id: string;
49
- quantity: number;
50
- unit_price: number;
51
- }, {
52
- service_id: string;
53
- provider_id: string;
54
- client_id: string;
55
- unit_price: number;
56
- quantity?: number | undefined;
57
- }>;
58
- handler: (client: CoordinaloClient, args: {
59
- client_id: string;
60
- service_id: string;
61
- provider_id: string;
62
- quantity?: number;
63
- unit_price: number;
64
- }) => Promise<unknown>;
65
- };
66
- 'payments.record_payment': {
67
- description: string;
68
- schema: z.ZodObject<{
69
- venta_id: z.ZodString;
70
- amount: z.ZodNumber;
71
- method: z.ZodEnum<["efectivo", "transferencia", "mercadopago", "tarjeta"]>;
72
- reference: z.ZodOptional<z.ZodString>;
73
- }, "strip", z.ZodTypeAny, {
74
- method: "efectivo" | "transferencia" | "mercadopago" | "tarjeta";
75
- venta_id: string;
76
- amount: number;
77
- reference?: string | undefined;
78
- }, {
79
- method: "efectivo" | "transferencia" | "mercadopago" | "tarjeta";
80
- venta_id: string;
81
- amount: number;
82
- reference?: string | undefined;
83
- }>;
84
- handler: (client: CoordinaloClient, args: {
85
- venta_id: string;
86
- amount: number;
87
- method: string;
88
- reference?: string;
89
- }) => Promise<unknown>;
90
- };
91
- 'payments.client_balance': {
92
- description: string;
93
- schema: z.ZodObject<{
94
- client_id: z.ZodString;
95
- }, "strip", z.ZodTypeAny, {
96
- client_id: string;
97
- }, {
98
- client_id: string;
99
- }>;
100
- handler: (client: CoordinaloClient, args: {
101
- client_id: string;
102
- }) => Promise<unknown>;
103
- };
104
- };
105
- //# sourceMappingURL=payments.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../../../src/tools/authenticated/payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;0BAWE,gBAAgB,QAAQ;YAAE,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;0BAqBzI,gBAAgB,QAAQ;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;0BAmB7H,gBAAgB,QAAQ;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;0BAehG,gBAAgB,QAAQ;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE;;CAIxE,CAAC"}
@@ -1,70 +0,0 @@
1
- import { z } from 'zod';
2
- export const paymentsTools = {
3
- 'payments.list_sales': {
4
- description: 'Lista las ventas con filtros por cliente, servicio, proveedor o estado',
5
- schema: z.object({
6
- client_id: z.string().optional().describe('Filtrar por cliente'),
7
- provider_id: z.string().optional().describe('Filtrar por proveedor'),
8
- service_id: z.string().optional().describe('Filtrar por servicio'),
9
- status: z.string().optional().describe('Filtrar por estado (pending, paid, partial)'),
10
- limit: z.number().default(20).describe('Resultados por página'),
11
- page: z.number().default(1).describe('Número de página'),
12
- }),
13
- handler: async (client, args) => {
14
- return client.get('/planificalo/sales', {
15
- clientId: args.client_id,
16
- providerId: args.provider_id,
17
- serviceId: args.service_id,
18
- status: args.status,
19
- limit: args.limit ?? 20,
20
- page: args.page ?? 1,
21
- });
22
- },
23
- },
24
- 'payments.create_sale': {
25
- description: 'Crea una venta (cargo) para un cliente por un servicio',
26
- schema: z.object({
27
- client_id: z.string().describe('ID del cliente'),
28
- service_id: z.string().describe('ID del servicio'),
29
- provider_id: z.string().describe('ID del proveedor'),
30
- quantity: z.number().default(1).describe('Cantidad de sesiones'),
31
- unit_price: z.number().describe('Precio unitario'),
32
- }),
33
- handler: async (client, args) => {
34
- return client.post('/planificalo/sales', {
35
- clientId: args.client_id,
36
- serviceId: args.service_id,
37
- providerId: args.provider_id,
38
- quantity: args.quantity ?? 1,
39
- unitPrice: args.unit_price,
40
- });
41
- },
42
- },
43
- 'payments.record_payment': {
44
- description: 'Registra un cobro (pago recibido) contra una venta existente',
45
- schema: z.object({
46
- venta_id: z.string().describe('ID de la venta'),
47
- amount: z.number().describe('Monto cobrado'),
48
- method: z.enum(['efectivo', 'transferencia', 'mercadopago', 'tarjeta']).describe('Método de pago'),
49
- reference: z.string().optional().describe('Referencia o número de transacción'),
50
- }),
51
- handler: async (client, args) => {
52
- return client.post('/planificalo/payments', {
53
- ventaId: args.venta_id,
54
- amount: args.amount,
55
- paymentMethod: args.method,
56
- reference: args.reference,
57
- });
58
- },
59
- },
60
- 'payments.client_balance': {
61
- description: 'Consulta el estado de cuenta de un cliente: sesiones disponibles, saldo pendiente',
62
- schema: z.object({
63
- client_id: z.string().describe('ID del cliente'),
64
- }),
65
- handler: async (client, args) => {
66
- return client.get(`/planificalo/clients/${args.client_id}/account-history`);
67
- },
68
- },
69
- };
70
- //# sourceMappingURL=payments.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../../src/tools/authenticated/payments.ts"],"names":[],"mappings":"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"}