refacil-commerce-mcp 1.0.5 → 1.0.7

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.
@@ -90,16 +90,15 @@ const admin_update_balanceInputJsonSchema = {
90
90
  },
91
91
  "required": []
92
92
  };
93
- const admin_update_balanceInputShape = {
93
+ const admin_update_balanceInputValidator = z.object({
94
94
  userToken: z.string().optional().describe("Campo del body: userToken"),
95
95
  amount: z.number().optional().describe("Campo del body: amount")
96
- };
97
- const admin_update_balanceInputValidator = z.object(admin_update_balanceInputShape);
96
+ });
98
97
  // Herramienta: admin_update_balance
99
98
  export const admin_update_balanceTool = {
100
99
  name: 'admin_update_balance',
101
100
  description: "---\\n\\n### Description\\n\\nIt allows you to transfer funds from the main users money bag to the bag of the user who is being added. The token of the user who will be the beneficiary and the amount must be added.\\n\\n---\\n\\n### Request Body\\n\\n- userToken (string, required): The user token for which the balance will be updated\\n \\n- amount (number, required): Amount to be updated\\n \\n\\n---\\n\\n### Response\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data.\n\nContexto: Endpoint: POST /admin/update-balance | Admin > Update balance\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
102
- inputSchema: admin_update_balanceInputJsonSchema,
101
+ inputSchema: admin_update_balanceInputValidator,
103
102
  jsonSchema: admin_update_balanceInputJsonSchema,
104
103
  endpoint: '/admin/update-balance',
105
104
  method: 'POST',
@@ -108,12 +107,9 @@ export const admin_update_balanceTool = {
108
107
  handler: async (rawArgs) => {
109
108
  try {
110
109
  const normalizedArgs = rawArgs ?? {};
111
- // Extraer secretId del contexto (si viene del HTTP mode)
112
- const secretId = normalizedArgs._secretId;
113
- // Remover _secretId de los args antes de validar
114
- const { _secretId, ...argsToValidate } = normalizedArgs;
115
- const validatedInput = validateToolInput(admin_update_balanceInputValidator, argsToValidate);
110
+ const validatedInput = validateToolInput(admin_update_balanceInputValidator, normalizedArgs);
116
111
  const args = validatedInput;
112
+ const secretId = args._secretId;
117
113
  const bodyData = {};
118
114
  const userTokenValue = args.userToken !== undefined ? args.userToken : "MTcyNDY4NjE1MDY3OSQyYiQxMCRLeXZWVS9zdkF0ZzhPNTdoa1Z0dXVlME9mTHlVOWNacWREY1llUDIyL0k4N2hpazdKVmZFU***";
119
115
  if (userTokenValue !== undefined)
@@ -148,13 +144,12 @@ const admin_locations_statesInputJsonSchema = {
148
144
  "properties": {},
149
145
  "required": []
150
146
  };
151
- const admin_locations_statesInputShape = {};
152
- const admin_locations_statesInputValidator = z.object(admin_locations_statesInputShape);
147
+ const admin_locations_statesInputValidator = z.object({});
153
148
  // Herramienta: admin_locations_states
154
149
  export const admin_locations_statesTool = {
155
150
  name: 'admin_locations_states',
156
151
  description: "---\\n\\n### Description\\n\\nGet all states, then you can search cities by state id in the /locations/cities/{stateId} service\\n\\n---\\n\\n### Request Body\\n\\nThis endpoint does not require a request body.\\n\\n---\\n\\n### Response\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`items\\`: Array of objects containing the states\n\nContexto: Endpoint: GET /admin/locations/states | Admin > Locations > States\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
157
- inputSchema: admin_locations_statesInputJsonSchema,
152
+ inputSchema: admin_locations_statesInputValidator,
158
153
  jsonSchema: admin_locations_statesInputJsonSchema,
159
154
  endpoint: '/admin/locations/states',
160
155
  method: 'GET',
@@ -163,12 +158,9 @@ export const admin_locations_statesTool = {
163
158
  handler: async (rawArgs) => {
164
159
  try {
165
160
  const normalizedArgs = rawArgs ?? {};
166
- // Extraer secretId del contexto (si viene del HTTP mode)
167
- const secretId = normalizedArgs._secretId;
168
- // Remover _secretId de los args antes de validar
169
- const { _secretId, ...argsToValidate } = normalizedArgs;
170
- const validatedInput = validateToolInput(admin_locations_statesInputValidator, argsToValidate);
161
+ const validatedInput = validateToolInput(admin_locations_statesInputValidator, normalizedArgs);
171
162
  const args = validatedInput;
163
+ const secretId = args._secretId;
172
164
  return await makeApiRequest('GET', '/admin/locations/states', undefined, undefined, secretId);
173
165
  }
174
166
  catch (error) {
@@ -196,13 +188,12 @@ const admin_locations_citiesInputJsonSchema = {
196
188
  "properties": {},
197
189
  "required": []
198
190
  };
199
- const admin_locations_citiesInputShape = {};
200
- const admin_locations_citiesInputValidator = z.object(admin_locations_citiesInputShape);
191
+ const admin_locations_citiesInputValidator = z.object({});
201
192
  // Herramienta: admin_locations_cities
202
193
  export const admin_locations_citiesTool = {
203
194
  name: 'admin_locations_cities',
204
195
  description: "---\\n\\n### Description\\n\\nGet all cities by state id\\n\\n---\\n\\n### Parameters Path\\n\\n- stateId (number, required): State Id\\n \\n\\n---\\n\\n### Response\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`items\\`: Array of objects containing the cities by state id\n\nContexto: Endpoint: GET /admin/locations/cities/:stateId | Admin > Locations > Cities > :stateId\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
205
- inputSchema: admin_locations_citiesInputJsonSchema,
196
+ inputSchema: admin_locations_citiesInputValidator,
206
197
  jsonSchema: admin_locations_citiesInputJsonSchema,
207
198
  endpoint: '/admin/locations/cities/:stateId',
208
199
  method: 'GET',
@@ -211,12 +202,9 @@ export const admin_locations_citiesTool = {
211
202
  handler: async (rawArgs) => {
212
203
  try {
213
204
  const normalizedArgs = rawArgs ?? {};
214
- // Extraer secretId del contexto (si viene del HTTP mode)
215
- const secretId = normalizedArgs._secretId;
216
- // Remover _secretId de los args antes de validar
217
- const { _secretId, ...argsToValidate } = normalizedArgs;
218
- const validatedInput = validateToolInput(admin_locations_citiesInputValidator, argsToValidate);
205
+ const validatedInput = validateToolInput(admin_locations_citiesInputValidator, normalizedArgs);
219
206
  const args = validatedInput;
207
+ const secretId = args._secretId;
220
208
  return await makeApiRequest('GET', '/admin/locations/cities/:stateId', undefined, undefined, secretId);
221
209
  }
222
210
  catch (error) {
@@ -255,16 +243,15 @@ const auth_login_apiInputJsonSchema = {
255
243
  },
256
244
  "required": []
257
245
  };
258
- const auth_login_apiInputShape = {
246
+ const auth_login_apiInputValidator = z.object({
259
247
  username: z.string().optional().describe("Campo del body: username"),
260
248
  secretKey: z.string().optional().describe("Campo del body: secretKey")
261
- };
262
- const auth_login_apiInputValidator = z.object(auth_login_apiInputShape);
249
+ });
263
250
  // Herramienta: auth_login_api
264
251
  export const auth_login_apiTool = {
265
252
  name: 'auth_login_api',
266
253
  description: "---\\n\\n# API Login\\n\\n---\\n\\n### Description\\n\\nAllows API users to log in using their credentials. This operation authenticates the API user using the information provided in the request body. If the credentials are valid, an access token is issued, which must be included in subsequent requests to access protected resources on the platform. Make sure to include the token in the authorization header using the \\\"Bearer\\\" prefix in future requests. The response will include the token type (\\\"Bearer\\\") and the access token.\\n\\n---\\n\\n### Request Body\\n\\n- \\`username\\` (string) \\`required\\`\\\\- Username for authentication.\\n \\n- \\`secretKey\\` (string) \\`required\\`\\\\- Secret key for authentication\\n \\n- \\`saveSession\\` (boolean) - Flag that, if sent as \\`false\\`, allows the generated token to have an expiration of 12 hours.\\n \\n\\n---\\n\\n### Response\\n\\n- \\`messageCode\\` (string) - Code for the message.\\n \\n- \\`message\\` (string) - The message from the response.\\n \\n- \\`data\\`\\n \\n - \\`tokenType\\` (string) - Type of the token (e.g., \\\"Bearer\\\").\\n \\n - \\`token\\` (string) - The access code. It will not expire, unless the \\`saveSession\\` field is sent with the value \\`false\\`.\n\nContexto: Endpoint: POST /auth/login-api | Autenticación > Auth > Login api | Uso: Genera un token JWT usando las credenciales configuradas en el MCP\n\n⚠️ IMPORTANTE: Esta herramienta SOLO debe usarse cuando sea necesario generar o renovar un token. Las credenciales se obtienen automáticamente de la configuración del servidor MCP. NO solicites credenciales al usuario.",
267
- inputSchema: auth_login_apiInputJsonSchema,
254
+ inputSchema: auth_login_apiInputValidator,
268
255
  jsonSchema: auth_login_apiInputJsonSchema,
269
256
  endpoint: '/auth/login-api',
270
257
  method: 'POST',
@@ -273,12 +260,9 @@ export const auth_login_apiTool = {
273
260
  handler: async (rawArgs) => {
274
261
  try {
275
262
  const normalizedArgs = rawArgs ?? {};
276
- // Extraer secretId del contexto (si viene del HTTP mode)
277
- const secretId = normalizedArgs._secretId;
278
- // Remover _secretId de los args antes de validar
279
- const { _secretId, ...argsToValidate } = normalizedArgs;
280
- const validatedInput = validateToolInput(auth_login_apiInputValidator, argsToValidate);
263
+ const validatedInput = validateToolInput(auth_login_apiInputValidator, normalizedArgs);
281
264
  const args = validatedInput;
265
+ const secretId = args._secretId;
282
266
  const bodyData = {};
283
267
  const usernameValue = args.username !== undefined ? args.username : appConfig.username;
284
268
  if (usernameValue !== undefined)
@@ -374,7 +358,7 @@ const commerce_registerInputJsonSchema = {
374
358
  },
375
359
  "required": []
376
360
  };
377
- const commerce_registerInputShape = {
361
+ const commerce_registerInputValidator = z.object({
378
362
  name: z.string().optional().describe("Campo del body: name"),
379
363
  lastname: z.string().optional().describe("Campo del body: lastname"),
380
364
  docType: z.string().optional().describe("Campo del body: docType"),
@@ -387,13 +371,12 @@ const commerce_registerInputShape = {
387
371
  address: z.string().optional().describe("Campo del body: address"),
388
372
  cityName: z.string().optional().describe("Campo del body: cityName"),
389
373
  balance: z.string().optional().describe("Campo del body: balance")
390
- };
391
- const commerce_registerInputValidator = z.object(commerce_registerInputShape);
374
+ });
392
375
  // Herramienta: commerce_register
393
376
  export const commerce_registerTool = {
394
377
  name: 'commerce_register',
395
378
  description: "---\\n\\n### Register Commerce\\n\\n---\\n\\n#### Description\\n\\nRegisters a new commerce in the system using the information provided in the request body. This method returns a response that includes the unique identifier of the user associated with the commerce.\\n\\n---\\n\\n#### Request Body\\n\\n- \\`name\\` (string) \\`required\\`: Owner\\'s name of the commerce.\\n \\n- \\`lastname\\` (string) \\`required\\`: Owner\\'s last name of the commerce\\n \\n- \\`docType\\` (string)\\`required\\`: Document type of the commerce owner.\\n \\n- \\`docNumber\\` (string)\\`required\\`: Document number of the commerce owner.\\n \\n- expeditionDate (string): Expedition date of the document of the commerce owner. The date must have the following structure YYYY-MM-DD\\n \\n- \\`username\\` (string)\\`required\\`: Username of the commerce owner.\\n \\n- \\`cellphone\\` (string)\\`required\\`: Commerce owner\\'s mobile phone number. Please enter a valid mobile phone number for Colombia. It must contain 10 digits and start with the prefix \\'3\\'.\\n \\n- \\`email\\` (string)\\`required\\`: Commerce owner\\'s email.\\n \\n- \\`commerceType\\` (number): Identifier of the commerce type. To get valid values, consult the /base-info/commerce-types service. Make sure to provide a valid number for this field. This field is optional, and if not provided, it will default to \\\"1,\\\" which corresponds to the \\\"Store\\\" commerce type.\\n \\n- \\`commerceName\\` (string)\\`required\\`: The name of the commerce.\\n \\n- latitude (number): Latitude of the commerce location.\\n \\n- longitude (number): Longitude of the commerce location.\\n \\n- \\`address\\` (string)\\`required\\`: Commerce address. Since the field is of type string, the address can be provided in any standard format.\\n \\n- \\`cityName\\` (string)\\`required\\`: City name where the commerce is located. It is recommended to enter only valid city names. If no matches are found, \\'Bogota\\' will be used as the default city.\\n \\n\\n---\\n\\n#### Response Body\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code associated with the message.\\n \\n- \\`data\\` (object): An object containing the following fields:\\n \\n - \\`tokenType\\` (string): The type of token.\\n \\n - \\`token\\` (string): The token for authentication. It will not expire.\\n \\n - \\`userId\\` (number): The unique identifier of the user associated with the commerce.\\n \\n - \\`message\\` (string): A message related to the response.\n\nContexto: Endpoint: POST /commerce/register | Commerce > Register\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
396
- inputSchema: commerce_registerInputJsonSchema,
379
+ inputSchema: commerce_registerInputValidator,
397
380
  jsonSchema: commerce_registerInputJsonSchema,
398
381
  endpoint: '/commerce/register',
399
382
  method: 'POST',
@@ -402,12 +385,9 @@ export const commerce_registerTool = {
402
385
  handler: async (rawArgs) => {
403
386
  try {
404
387
  const normalizedArgs = rawArgs ?? {};
405
- // Extraer secretId del contexto (si viene del HTTP mode)
406
- const secretId = normalizedArgs._secretId;
407
- // Remover _secretId de los args antes de validar
408
- const { _secretId, ...argsToValidate } = normalizedArgs;
409
- const validatedInput = validateToolInput(commerce_registerInputValidator, argsToValidate);
388
+ const validatedInput = validateToolInput(commerce_registerInputValidator, normalizedArgs);
410
389
  const args = validatedInput;
390
+ const secretId = args._secretId;
411
391
  const bodyData = {};
412
392
  const nameValue = args.name !== undefined ? args.name : "Morty";
413
393
  if (nameValue !== undefined)
@@ -478,15 +458,14 @@ const commerce_get_infoInputJsonSchema = {
478
458
  },
479
459
  "required": []
480
460
  };
481
- const commerce_get_infoInputShape = {
461
+ const commerce_get_infoInputValidator = z.object({
482
462
  userId: z.number().optional().describe("Campo del body: userId")
483
- };
484
- const commerce_get_infoInputValidator = z.object(commerce_get_infoInputShape);
463
+ });
485
464
  // Herramienta: commerce_get_info
486
465
  export const commerce_get_infoTool = {
487
466
  name: 'commerce_get_info',
488
467
  description: "---\\n\\n### Description\\n\\nRetrieve detailed information about a commerce using its identification. This operation requires sending an object in the request body with the \\\"userId\\\" property specifying the user ID. The response will include information about balances, additional data, and more. Balances include: \\\"tmpBalance\\\" (Earnings Bag), \\\"posBalance\\\" (Multiproduct Bag), and \\\"debt\\\" (Debt Bag).\\n\\n---\\n\\n### Request Body\\n\\n- userId (number, required): The user ID for which detailed information is to be retrieved.\\n \\n\\n---\\n\\n### Response\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`additionalData\\`: Object containing user-related data (required)\\n \\n - \\`username\\`: String representing the username (required)\\n \\n - \\`token\\`: String representing the token. It will not expire. (required)\\n \\n - \\`balances\\`: Object containing balance-related data (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required) \\n debt: Number representing the debt amount (required)\n\nContexto: Endpoint: POST /commerce/get-info | Commerce > Get info\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
489
- inputSchema: commerce_get_infoInputJsonSchema,
468
+ inputSchema: commerce_get_infoInputValidator,
490
469
  jsonSchema: commerce_get_infoInputJsonSchema,
491
470
  endpoint: '/commerce/get-info',
492
471
  method: 'POST',
@@ -495,12 +474,9 @@ export const commerce_get_infoTool = {
495
474
  handler: async (rawArgs) => {
496
475
  try {
497
476
  const normalizedArgs = rawArgs ?? {};
498
- // Extraer secretId del contexto (si viene del HTTP mode)
499
- const secretId = normalizedArgs._secretId;
500
- // Remover _secretId de los args antes de validar
501
- const { _secretId, ...argsToValidate } = normalizedArgs;
502
- const validatedInput = validateToolInput(commerce_get_infoInputValidator, argsToValidate);
477
+ const validatedInput = validateToolInput(commerce_get_infoInputValidator, normalizedArgs);
503
478
  const args = validatedInput;
479
+ const secretId = args._secretId;
504
480
  const bodyData = {};
505
481
  const userIdValue = args.userId !== undefined ? args.userId : 348130;
506
482
  if (userIdValue !== undefined)
@@ -532,13 +508,12 @@ const commerce_usersInputJsonSchema = {
532
508
  "properties": {},
533
509
  "required": []
534
510
  };
535
- const commerce_usersInputShape = {};
536
- const commerce_usersInputValidator = z.object(commerce_usersInputShape);
511
+ const commerce_usersInputValidator = z.object({});
537
512
  // Herramienta: commerce_users
538
513
  export const commerce_usersTool = {
539
514
  name: 'commerce_users',
540
515
  description: "---\\n\\n### Description\\n\\nRetrieve a list of users associated with a commerce using the token provided in the request header. This method supports pagination and search by name or user id.\\n\\n---\\n\\n### Request Body\\n\\nThis endpoint does not require a request body.\\n\\n---\\n\\n### Response\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`items\\`: Array of objects containing the users associated with the commerce\n\nContexto: Endpoint: GET /commerce/users | Commerce > Users\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
541
- inputSchema: commerce_usersInputJsonSchema,
516
+ inputSchema: commerce_usersInputValidator,
542
517
  jsonSchema: commerce_usersInputJsonSchema,
543
518
  endpoint: '/commerce/users',
544
519
  method: 'GET',
@@ -547,12 +522,9 @@ export const commerce_usersTool = {
547
522
  handler: async (rawArgs) => {
548
523
  try {
549
524
  const normalizedArgs = rawArgs ?? {};
550
- // Extraer secretId del contexto (si viene del HTTP mode)
551
- const secretId = normalizedArgs._secretId;
552
- // Remover _secretId de los args antes de validar
553
- const { _secretId, ...argsToValidate } = normalizedArgs;
554
- const validatedInput = validateToolInput(commerce_usersInputValidator, argsToValidate);
525
+ const validatedInput = validateToolInput(commerce_usersInputValidator, normalizedArgs);
555
526
  const args = validatedInput;
527
+ const secretId = args._secretId;
556
528
  return await makeApiRequest('GET', '/commerce/users', undefined, undefined, secretId);
557
529
  }
558
530
  catch (error) {
@@ -591,16 +563,15 @@ const commerce_updatebalanceInputJsonSchema = {
591
563
  },
592
564
  "required": []
593
565
  };
594
- const commerce_updatebalanceInputShape = {
566
+ const commerce_updatebalanceInputValidator = z.object({
595
567
  token: z.string().optional().describe("Campo del body: token"),
596
568
  balance: z.number().optional().describe("Campo del body: balance")
597
- };
598
- const commerce_updatebalanceInputValidator = z.object(commerce_updatebalanceInputShape);
569
+ });
599
570
  // Herramienta: commerce_updatebalance
600
571
  export const commerce_updatebalanceTool = {
601
572
  name: 'commerce_updatebalance',
602
573
  description: "---\\n\\n### Update Commerce Balance\\n\\n---\\n\\n#### Description\\n\\n**UpdateBalance:**\\n\\nThis service allows loading balance to the different merchants created, by deducting from the Parent Merchant’s balance pool. The transactions generated will be reflected in the reports assigned to the merchant within the portal provided by Super Pagos.\\n\\nThe required sending parameters are the token and ID, which were returned when the merchant was created.\\n\\n---\\n\\n#### Request Body Schema\\n\\n- \\`token\\` (string)\\`required\\`: Owner\\'s balance of the commerce.\\n \\n- \\`balance\\` (number)\\`required\\`: Owner\\'s balance of the commerce.\\n \\n\\n---\\n\\n#### Response Body Schema\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code associated with the message.\n\nContexto: Endpoint: POST /commerce/updateBalance | Commerce > UpdateBalance\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
603
- inputSchema: commerce_updatebalanceInputJsonSchema,
574
+ inputSchema: commerce_updatebalanceInputValidator,
604
575
  jsonSchema: commerce_updatebalanceInputJsonSchema,
605
576
  endpoint: '/commerce/updateBalance',
606
577
  method: 'POST',
@@ -609,12 +580,9 @@ export const commerce_updatebalanceTool = {
609
580
  handler: async (rawArgs) => {
610
581
  try {
611
582
  const normalizedArgs = rawArgs ?? {};
612
- // Extraer secretId del contexto (si viene del HTTP mode)
613
- const secretId = normalizedArgs._secretId;
614
- // Remover _secretId de los args antes de validar
615
- const { _secretId, ...argsToValidate } = normalizedArgs;
616
- const validatedInput = validateToolInput(commerce_updatebalanceInputValidator, argsToValidate);
583
+ const validatedInput = validateToolInput(commerce_updatebalanceInputValidator, normalizedArgs);
617
584
  const args = validatedInput;
585
+ const secretId = args._secretId;
618
586
  const bodyData = {};
619
587
  const tokenValue = args.token !== undefined ? args.token : "MTcyNDY4NjE1MDY3OSQyYiQxMCRLeXZWVS9zdkF0ZzhPNTdoa1Z0dXVlME9mTHlVOWNacWREY1llUDIyL0k4N2hpazdKVmZFUw==";
620
588
  if (tokenValue !== undefined)
@@ -649,13 +617,12 @@ const base_info_commerce_typesInputJsonSchema = {
649
617
  "properties": {},
650
618
  "required": []
651
619
  };
652
- const base_info_commerce_typesInputShape = {};
653
- const base_info_commerce_typesInputValidator = z.object(base_info_commerce_typesInputShape);
620
+ const base_info_commerce_typesInputValidator = z.object({});
654
621
  // Herramienta: base_info_commerce_types
655
622
  export const base_info_commerce_typesTool = {
656
623
  name: 'base_info_commerce_types',
657
624
  description: "---\\n\\n### Retrieve Commerce Types\\n\\n---\\n\\n#### Description\\n\\nRetrieve the available commerce types in the application. This operation provides detailed information about the different types of commercial establishments that can operate on the platform.\\n\\n---\\n\\n#### Request Body\\n\\nThis endpoint does not require a request body.\\n\\n---\\n\\n#### Response Body\\n\\n- \\`message\\` (string): A message indicating the status of the response.\\n \\n- \\`messageCode\\` (string): A code associated with the message.\\n \\n- \\`data\\` (array): An array containing the commerce types information.\\n \\n - \\`id\\` (number): The unique identifier for the commerce type.\\n \\n - \\`name\\` (string): The name of the commerce type.\n\nContexto: Endpoint: GET /base-info/commerce-types | Base info > Commerce types\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
658
- inputSchema: base_info_commerce_typesInputJsonSchema,
625
+ inputSchema: base_info_commerce_typesInputValidator,
659
626
  jsonSchema: base_info_commerce_typesInputJsonSchema,
660
627
  endpoint: '/base-info/commerce-types',
661
628
  method: 'GET',
@@ -664,12 +631,9 @@ export const base_info_commerce_typesTool = {
664
631
  handler: async (rawArgs) => {
665
632
  try {
666
633
  const normalizedArgs = rawArgs ?? {};
667
- // Extraer secretId del contexto (si viene del HTTP mode)
668
- const secretId = normalizedArgs._secretId;
669
- // Remover _secretId de los args antes de validar
670
- const { _secretId, ...argsToValidate } = normalizedArgs;
671
- const validatedInput = validateToolInput(base_info_commerce_typesInputValidator, argsToValidate);
634
+ const validatedInput = validateToolInput(base_info_commerce_typesInputValidator, normalizedArgs);
672
635
  const args = validatedInput;
636
+ const secretId = args._secretId;
673
637
  return await makeApiRequest('GET', '/base-info/commerce-types', undefined, undefined, secretId);
674
638
  }
675
639
  catch (error) {
@@ -697,13 +661,12 @@ const report_detailsInputJsonSchema = {
697
661
  "properties": {},
698
662
  "required": []
699
663
  };
700
- const report_detailsInputShape = {};
701
- const report_detailsInputValidator = z.object(report_detailsInputShape);
664
+ const report_detailsInputValidator = z.object({});
702
665
  // Herramienta: report_details
703
666
  export const report_detailsTool = {
704
667
  name: 'report_details',
705
668
  description: "---\\n\\n### Retrieve Commerce Report Details\\n\\n---\\n\\n#### Description\\n\\nGet details to build a report. This service is responsible for returning the necessary details to generate a report. To provide more context about the service, it will return an array of objects. Each object in this array will contain attributes that are essential for the construction of a report. These attributes may include, but are not limited to, type of report, the bag to consult, options to load in a select and other relevant data that are needed for a complete and detailed report. The use of this method will facilitate the generation of reports by providing all the necessary data in a structured and easy-to-use way.\\n\\n---\\n\\n#### Request Body\\n\\n- No request body is required for this GET request.\\n \\n\\n---\\n\\n#### Response Body\\n\\n- \\`description\\` (string, optional): Description of the commerce report.\\n \\n- \\`form\\` (object):\\n \\n - \\`fields\\` (array):\\n \\n - \\`name\\` (string): Name of the field.\\n \\n - \\`type\\` (string): Type of the field.\\n \\n - \\`options\\` (array):\\n \\n - \\`label\\` (string): Label for the option.\\n \\n - \\`value\\` (null): Value of the option.\\n \\n - \\`label\\` (string): Label for the field.\\n \\n - \\`placeholder\\` (string): Placeholder for the field.\\n \\n - \\`required\\` (boolean): Indicates if the field is required.\\n \\n - \\`bag\\` (string): Bag information.\\n \\n - \\`typeReport\\` (string): Type of the report.\\n \\n- \\`endpoint\\` (string): The endpoint for the commerce report generate.\n\nContexto: Endpoint: GET /report/details | Report > Details\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
706
- inputSchema: report_detailsInputJsonSchema,
669
+ inputSchema: report_detailsInputValidator,
707
670
  jsonSchema: report_detailsInputJsonSchema,
708
671
  endpoint: '/report/details',
709
672
  method: 'GET',
@@ -712,12 +675,9 @@ export const report_detailsTool = {
712
675
  handler: async (rawArgs) => {
713
676
  try {
714
677
  const normalizedArgs = rawArgs ?? {};
715
- // Extraer secretId del contexto (si viene del HTTP mode)
716
- const secretId = normalizedArgs._secretId;
717
- // Remover _secretId de los args antes de validar
718
- const { _secretId, ...argsToValidate } = normalizedArgs;
719
- const validatedInput = validateToolInput(report_detailsInputValidator, argsToValidate);
678
+ const validatedInput = validateToolInput(report_detailsInputValidator, normalizedArgs);
720
679
  const args = validatedInput;
680
+ const secretId = args._secretId;
721
681
  return await makeApiRequest('GET', '/report/details', undefined, undefined, secretId);
722
682
  }
723
683
  catch (error) {
@@ -763,16 +723,15 @@ const report_generateInputJsonSchema = {
763
723
  },
764
724
  "required": []
765
725
  };
766
- const report_generateInputShape = {
726
+ const report_generateInputValidator = z.object({
767
727
  filters: z.record(z.any()).optional().describe("Campo del body: filters"),
768
728
  typeReport: z.string().optional().describe("Campo del body: typeReport")
769
- };
770
- const report_generateInputValidator = z.object(report_generateInputShape);
729
+ });
771
730
  // Herramienta: report_generate
772
731
  export const report_generateTool = {
773
732
  name: 'report_generate',
774
733
  description: "---\\n\\n### Sales report\\n\\n---\\n\\n#### Description\\n\\nThis service is responsible for generating different types of reports depending on the filters that are sent.\\n\\n#### Request Body\\n\\n- \\`filters\\` (object, \\`required\\`): Filters for the report\\n \\n - \\`dateStart\\` (string, \\`required\\`)\\n \\n - \\`dateEnd\\` (string, \\`required\\`)\\n \\n - \\`carrierId\\` (null, optional)\\n \\n - \\`number\\` (string, optional)\\n \\n - \\`status\\` (string, optional)\\n \\n - \\`bag\\` (string, optional)\\n \\n- \\`typeReport\\` (string, required): Type of the report\\n \\n\\n---\\n\\n#### Response\\n\\n- \\`messageCode\\` (string)\\n \\n- \\`message\\` (string)\\n \\n- \\`data\\` (object)\\n \\n - \\`title\\` (string)\\n \\n - \\`header\\` (array of strings)\\n \\n - \\`data\\` (array of arrays)\n\nContexto: Endpoint: POST /report/generate | Report > Generate\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
775
- inputSchema: report_generateInputJsonSchema,
734
+ inputSchema: report_generateInputValidator,
776
735
  jsonSchema: report_generateInputJsonSchema,
777
736
  endpoint: '/report/generate',
778
737
  method: 'POST',
@@ -781,12 +740,9 @@ export const report_generateTool = {
781
740
  handler: async (rawArgs) => {
782
741
  try {
783
742
  const normalizedArgs = rawArgs ?? {};
784
- // Extraer secretId del contexto (si viene del HTTP mode)
785
- const secretId = normalizedArgs._secretId;
786
- // Remover _secretId de los args antes de validar
787
- const { _secretId, ...argsToValidate } = normalizedArgs;
788
- const validatedInput = validateToolInput(report_generateInputValidator, argsToValidate);
743
+ const validatedInput = validateToolInput(report_generateInputValidator, normalizedArgs);
789
744
  const args = validatedInput;
745
+ const secretId = args._secretId;
790
746
  const bodyData = {};
791
747
  const filtersValue = args.filters !== undefined ? args.filters : { "dateStart": "2024-01-29", "dateEnd": "2024-02-28", "carrierId": null, "number": "", "status": "approve", "bag": "posBalance" };
792
748
  if (filtersValue !== undefined)
@@ -839,16 +795,15 @@ const generate_purchase_reportInputJsonSchema = {
839
795
  },
840
796
  "required": []
841
797
  };
842
- const generate_purchase_reportInputShape = {
798
+ const generate_purchase_reportInputValidator = z.object({
843
799
  filters: z.record(z.any()).optional().describe("Campo del body: filters"),
844
800
  typeReport: z.string().optional().describe("Campo del body: typeReport")
845
- };
846
- const generate_purchase_reportInputValidator = z.object(generate_purchase_reportInputShape);
801
+ });
847
802
  // Herramienta: generate_purchase_report
848
803
  export const generate_purchase_reportTool = {
849
804
  name: 'generate_purchase_report',
850
805
  description: "---\\n\\n# Purchase report\\n\\n---\\n\\n### Description\\n\\nThis service is responsible for generating different types of reports depending on the filters that are sent.\\n\\n---\\n\\n## Request Body\\n\\n- \\`filters\\` (object, \\`required\\`): Filters for the report\\n \\n - \\`dateStart\\` (string, \\`required\\`): Start date for the report.\\n \\n - \\`dateEnd\\` (string, \\`required\\`): End date for the report.\\n \\n - \\`carrierId\\` (string, optional): ID of the carrier.\\n \\n - \\`number\\` (string, optional): Commerce number.\\n \\n - \\`status\\` (string, optional): Status of the commerce.\\n \\n - \\`bag\\` (string, optional): Bag information.\\n \\n- \\`typeReport\\` (string, \\`required\\`): Type of the report.\\n \\n\\n---\\n\\n## Response\\n\\n- \\`messageCode\\` (string): Code for the message.\\n \\n- \\`message\\` (string): Details of the message.\\n \\n- \\`data\\` (object)\\n \\n - \\`title\\` (string): Title of the report.\\n \\n - \\`header\\` (array of strings): Headers for the report data.\\n \\n - \\`total\\` (number): Total count of the report data.\\n \\n - \\`data\\` (array of arrays): Report data.\n\nContexto: Endpoint: POST /report/generate | Report > Generate\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
851
- inputSchema: generate_purchase_reportInputJsonSchema,
806
+ inputSchema: generate_purchase_reportInputValidator,
852
807
  jsonSchema: generate_purchase_reportInputJsonSchema,
853
808
  endpoint: '/report/generate',
854
809
  method: 'POST',
@@ -857,12 +812,9 @@ export const generate_purchase_reportTool = {
857
812
  handler: async (rawArgs) => {
858
813
  try {
859
814
  const normalizedArgs = rawArgs ?? {};
860
- // Extraer secretId del contexto (si viene del HTTP mode)
861
- const secretId = normalizedArgs._secretId;
862
- // Remover _secretId de los args antes de validar
863
- const { _secretId, ...argsToValidate } = normalizedArgs;
864
- const validatedInput = validateToolInput(generate_purchase_reportInputValidator, argsToValidate);
815
+ const validatedInput = validateToolInput(generate_purchase_reportInputValidator, normalizedArgs);
865
816
  const args = validatedInput;
817
+ const secretId = args._secretId;
866
818
  const bodyData = {};
867
819
  const filtersValue = args.filters !== undefined ? args.filters : { "dateStart": "2024-01-29", "dateEnd": "2024-02-28", "carrierId": null, "number": "", "status": "approve", "bag": "posBalance" };
868
820
  if (filtersValue !== undefined)
@@ -915,16 +867,15 @@ const generate_statement_reportInputJsonSchema = {
915
867
  },
916
868
  "required": []
917
869
  };
918
- const generate_statement_reportInputShape = {
870
+ const generate_statement_reportInputValidator = z.object({
919
871
  filters: z.record(z.any()).optional().describe("Campo del body: filters"),
920
872
  typeReport: z.string().optional().describe("Campo del body: typeReport")
921
- };
922
- const generate_statement_reportInputValidator = z.object(generate_statement_reportInputShape);
873
+ });
923
874
  // Herramienta: generate_statement_report
924
875
  export const generate_statement_reportTool = {
925
876
  name: 'generate_statement_report',
926
877
  description: "---\\n\\n### Statement report\\n\\n---\\n\\n#### Description\\n\\nThis endpoint allows you to generate a report with the specified filters and report type.\\n\\n---\\n\\n#### Request Body\\n\\n- Type: JSON\\n \\n\\n| Parameter | Type | Description |\\n| --- | --- | --- |\\n| filters | object, \\`required\\` | An object containing filter parameters like date range, carrier ID, number, status, and bag. |\\n| typeReport | string, \\`required\\` | The type of report to be generated. |\\n\\n---\\n\\n#### Response\\n\\n- Type: JSON\\n \\n\\n| Property | Type | Description |\\n| --- | --- | --- |\\n| messageCode | string | A code associated with the response message. |\\n| message | string | A human-readable message providing information about the response. |\\n| data | object | An object containing report title, header, and totals. |\\n| title | string | The title of the report. |\\n| header | array | An array containing report headers. |\\n| totals | object | An object containing various total amounts for the report. |\\n| data | array | An array containing report data. |\\n\\n**Note**: The actual data in the response may vary based on the report generated.\n\nContexto: Endpoint: POST /report/generate | Report > Generate\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
927
- inputSchema: generate_statement_reportInputJsonSchema,
878
+ inputSchema: generate_statement_reportInputValidator,
928
879
  jsonSchema: generate_statement_reportInputJsonSchema,
929
880
  endpoint: '/report/generate',
930
881
  method: 'POST',
@@ -933,12 +884,9 @@ export const generate_statement_reportTool = {
933
884
  handler: async (rawArgs) => {
934
885
  try {
935
886
  const normalizedArgs = rawArgs ?? {};
936
- // Extraer secretId del contexto (si viene del HTTP mode)
937
- const secretId = normalizedArgs._secretId;
938
- // Remover _secretId de los args antes de validar
939
- const { _secretId, ...argsToValidate } = normalizedArgs;
940
- const validatedInput = validateToolInput(generate_statement_reportInputValidator, argsToValidate);
887
+ const validatedInput = validateToolInput(generate_statement_reportInputValidator, normalizedArgs);
941
888
  const args = validatedInput;
889
+ const secretId = args._secretId;
942
890
  const bodyData = {};
943
891
  const filtersValue = args.filters !== undefined ? args.filters : { "dateStart": "2024-01-29", "dateEnd": "2024-02-28", "carrierId": null, "number": "", "status": "approve", "bag": "tmpBalance" };
944
892
  if (filtersValue !== undefined)
@@ -991,16 +939,15 @@ const generate_payment_reportInputJsonSchema = {
991
939
  },
992
940
  "required": []
993
941
  };
994
- const generate_payment_reportInputShape = {
942
+ const generate_payment_reportInputValidator = z.object({
995
943
  filters: z.record(z.any()).optional().describe("Campo del body: filters"),
996
944
  typeReport: z.string().optional().describe("Campo del body: typeReport")
997
- };
998
- const generate_payment_reportInputValidator = z.object(generate_payment_reportInputShape);
945
+ });
999
946
  // Herramienta: generate_payment_report
1000
947
  export const generate_payment_reportTool = {
1001
948
  name: 'generate_payment_report',
1002
949
  description: "---\\n\\n### Payment report\\n\\n---\\n\\n#### Description\\n\\nThis service is responsible for generating different types of reports depending on the filters that are sent.\\n\\n---\\n\\n#### Request Body\\n\\n- Type: JSON\\n \\n\\n| Parameter | Type | Description |\\n| --- | --- | --- |\\n| filters | object, \\`required\\` | Object containing filter criteria including date range, carrier ID, number, status, and bag |\\n| typeReport | string, \\`required\\` | Type of the report to be generated |\\n\\n#### Response\\n\\n- Type: JSON\\n \\n\\n| Parameter | Type | Description |\\n| --- | --- | --- |\\n| messageCode | string | Code for the message |\\n| message | string | Details of the message |\\n| data | object | Object containing title, header, and data array |\n\nContexto: Endpoint: POST /report/generate | Report > Generate\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1003
- inputSchema: generate_payment_reportInputJsonSchema,
950
+ inputSchema: generate_payment_reportInputValidator,
1004
951
  jsonSchema: generate_payment_reportInputJsonSchema,
1005
952
  endpoint: '/report/generate',
1006
953
  method: 'POST',
@@ -1009,12 +956,9 @@ export const generate_payment_reportTool = {
1009
956
  handler: async (rawArgs) => {
1010
957
  try {
1011
958
  const normalizedArgs = rawArgs ?? {};
1012
- // Extraer secretId del contexto (si viene del HTTP mode)
1013
- const secretId = normalizedArgs._secretId;
1014
- // Remover _secretId de los args antes de validar
1015
- const { _secretId, ...argsToValidate } = normalizedArgs;
1016
- const validatedInput = validateToolInput(generate_payment_reportInputValidator, argsToValidate);
959
+ const validatedInput = validateToolInput(generate_payment_reportInputValidator, normalizedArgs);
1017
960
  const args = validatedInput;
961
+ const secretId = args._secretId;
1018
962
  const bodyData = {};
1019
963
  const filtersValue = args.filters !== undefined ? args.filters : { "dateStart": "2024-01-29", "dateEnd": "2024-02-28", "carrierId": null, "number": "", "status": "approve", "bag": "tmpBalance" };
1020
964
  if (filtersValue !== undefined)
@@ -1067,16 +1011,15 @@ const generate_transfer_reportInputJsonSchema = {
1067
1011
  },
1068
1012
  "required": []
1069
1013
  };
1070
- const generate_transfer_reportInputShape = {
1014
+ const generate_transfer_reportInputValidator = z.object({
1071
1015
  filters: z.record(z.any()).optional().describe("Campo del body: filters"),
1072
1016
  typeReport: z.string().optional().describe("Campo del body: typeReport")
1073
- };
1074
- const generate_transfer_reportInputValidator = z.object(generate_transfer_reportInputShape);
1017
+ });
1075
1018
  // Herramienta: generate_transfer_report
1076
1019
  export const generate_transfer_reportTool = {
1077
1020
  name: 'generate_transfer_report',
1078
1021
  description: "---\\n\\n# Transfer report\\n\\n---\\n\\n## Description\\n\\nThis endpoint allows you to generate a report based on the specified filters.\\n\\n---\\n\\n## Request Body\\n\\n- \\`filters\\` (object, required): An object containing the filters for the report.\\n \\n - \\`dateStart\\` (string, required): The start date for the report.\\n \\n - \\`dateEnd\\` (string, required): The end date for the report.\\n \\n - \\`carrierId\\` (null): The ID of the carrier for the report.\\n \\n - \\`number\\` (string): The report number.\\n \\n - \\`status\\` (string): The status for the report.\\n \\n - \\`bag\\` (string): The bag for the report.\\n \\n- \\`typeReport\\` (string, required): The type of report to be generated.\\n \\n\\n---\\n\\n## Response\\n\\n- \\`messageCode\\` (string): The code for the message.\\n \\n- \\`message\\` (string): The message related to the response.\\n \\n- \\`data\\` (object): An object containing the report data.\\n \\n - \\`title\\` (string): The title of the report.\\n \\n - \\`header\\` (array): An array containing the headers for the report data.\\n \\n - \\`data\\` (array): An array containing the report data.\n\nContexto: Endpoint: POST /report/generate | Report > Generate\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1079
- inputSchema: generate_transfer_reportInputJsonSchema,
1022
+ inputSchema: generate_transfer_reportInputValidator,
1080
1023
  jsonSchema: generate_transfer_reportInputJsonSchema,
1081
1024
  endpoint: '/report/generate',
1082
1025
  method: 'POST',
@@ -1085,12 +1028,9 @@ export const generate_transfer_reportTool = {
1085
1028
  handler: async (rawArgs) => {
1086
1029
  try {
1087
1030
  const normalizedArgs = rawArgs ?? {};
1088
- // Extraer secretId del contexto (si viene del HTTP mode)
1089
- const secretId = normalizedArgs._secretId;
1090
- // Remover _secretId de los args antes de validar
1091
- const { _secretId, ...argsToValidate } = normalizedArgs;
1092
- const validatedInput = validateToolInput(generate_transfer_reportInputValidator, argsToValidate);
1031
+ const validatedInput = validateToolInput(generate_transfer_reportInputValidator, normalizedArgs);
1093
1032
  const args = validatedInput;
1033
+ const secretId = args._secretId;
1094
1034
  const bodyData = {};
1095
1035
  const filtersValue = args.filters !== undefined ? args.filters : { "dateStart": "2024-01-29", "dateEnd": "2024-02-28", "carrierId": null, "number": "", "status": "approve", "bag": "tmpBalance" };
1096
1036
  if (filtersValue !== undefined)
@@ -1144,16 +1084,15 @@ const generate_reverse_reportInputJsonSchema = {
1144
1084
  },
1145
1085
  "required": []
1146
1086
  };
1147
- const generate_reverse_reportInputShape = {
1087
+ const generate_reverse_reportInputValidator = z.object({
1148
1088
  filters: z.record(z.any()).optional().describe("Campo del body: filters"),
1149
1089
  typeReport: z.string().optional().describe("Campo del body: typeReport")
1150
- };
1151
- const generate_reverse_reportInputValidator = z.object(generate_reverse_reportInputShape);
1090
+ });
1152
1091
  // Herramienta: generate_reverse_report
1153
1092
  export const generate_reverse_reportTool = {
1154
1093
  name: 'generate_reverse_report',
1155
1094
  description: "---\\n\\n# Reverse report\\n\\n---\\n\\n## Description\\n\\nThis endpoint allows you to generate a report based on the specified filters.\\n\\n---\\n\\n## Request Body\\n\\n- \\`filters\\` (object, required): An object containing the filters for the report.\\n \\n - \\`dateStart\\` (string, required): The start date for the report.\\n \\n - \\`dateEnd\\` (string, required): The end date for the report.\\n \\n - \\`carrierId\\` (null): The ID of the carrier for the report.\\n \\n - \\`number\\` (string): The report number.\\n \\n - \\`status\\` (string): The status for the report.\\n \\n - \\`bag\\` (string): The bag for the report.\\n \\n- \\`typeReport\\` (string, required): The type of report to be generated.\\n \\n\\n---\\n\\n## Response\\n\\n- \\`messageCode\\` (string): The code for the message.\\n \\n- \\`message\\` (string): The message related to the response.\\n \\n- \\`data\\` (object): An object containing the report data.\\n \\n - \\`title\\` (string): The title of the report.\\n \\n - \\`header\\` (array): An array containing the headers for the report data.\\n \\n - \\`data\\` (array): An array containing the report data.\n\nContexto: Endpoint: POST /report/generate | Report > Generate\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1156
- inputSchema: generate_reverse_reportInputJsonSchema,
1095
+ inputSchema: generate_reverse_reportInputValidator,
1157
1096
  jsonSchema: generate_reverse_reportInputJsonSchema,
1158
1097
  endpoint: '/report/generate',
1159
1098
  method: 'POST',
@@ -1162,12 +1101,9 @@ export const generate_reverse_reportTool = {
1162
1101
  handler: async (rawArgs) => {
1163
1102
  try {
1164
1103
  const normalizedArgs = rawArgs ?? {};
1165
- // Extraer secretId del contexto (si viene del HTTP mode)
1166
- const secretId = normalizedArgs._secretId;
1167
- // Remover _secretId de los args antes de validar
1168
- const { _secretId, ...argsToValidate } = normalizedArgs;
1169
- const validatedInput = validateToolInput(generate_reverse_reportInputValidator, argsToValidate);
1104
+ const validatedInput = validateToolInput(generate_reverse_reportInputValidator, normalizedArgs);
1170
1105
  const args = validatedInput;
1106
+ const secretId = args._secretId;
1171
1107
  const bodyData = {};
1172
1108
  const filtersValue = args.filters !== undefined ? args.filters : { "dateStart": "2024-01-29", "dateEnd": "2024-02-28", "carrierId": null, "number": "", "status": "approve", "type": "1", "bag": "posBalance" };
1173
1109
  if (filtersValue !== undefined)
@@ -1221,16 +1157,15 @@ const generate_consumption_reportInputJsonSchema = {
1221
1157
  },
1222
1158
  "required": []
1223
1159
  };
1224
- const generate_consumption_reportInputShape = {
1160
+ const generate_consumption_reportInputValidator = z.object({
1225
1161
  filters: z.record(z.any()).optional().describe("Campo del body: filters"),
1226
1162
  typeReport: z.string().optional().describe("Campo del body: typeReport")
1227
- };
1228
- const generate_consumption_reportInputValidator = z.object(generate_consumption_reportInputShape);
1163
+ });
1229
1164
  // Herramienta: generate_consumption_report
1230
1165
  export const generate_consumption_reportTool = {
1231
1166
  name: 'generate_consumption_report',
1232
1167
  description: "---\\n\\n# Consumption report\\n\\n---\\n\\n## Description\\n\\nThis endpoint allows you to generate a report based on the specified filters.\\n\\n---\\n\\n## Request Body\\n\\n- \\`filters\\` (object, required): An object containing the filters for the report.\\n \\n - \\`dateStart\\` (string, required): The start date for the report.\\n \\n - \\`dateEnd\\` (string, required): The end date for the report.\\n \\n - \\`carrierId\\` (null): The ID of the carrier for the report.\\n \\n - \\`number\\` (string): The report number.\\n \\n - \\`status\\` (string): The status for the report.\\n \\n - \\`bag\\` (string): The bag for the report.\\n \\n- \\`typeReport\\` (string, required): The type of report to be generated.\\n \\n\\n---\\n\\n## Response\\n\\n- \\`messageCode\\` (string): The code for the message.\\n \\n- \\`message\\` (string): The message related to the response.\\n \\n- \\`data\\` (object): An object containing the report data.\\n \\n - \\`title\\` (string): The title of the report.\\n \\n - \\`header\\` (array): An array containing the headers for the report data.\\n \\n - \\`data\\` (array): An array containing the report data.\n\nContexto: Endpoint: POST /report/generate | Report > Generate\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1233
- inputSchema: generate_consumption_reportInputJsonSchema,
1168
+ inputSchema: generate_consumption_reportInputValidator,
1234
1169
  jsonSchema: generate_consumption_reportInputJsonSchema,
1235
1170
  endpoint: '/report/generate',
1236
1171
  method: 'POST',
@@ -1239,12 +1174,9 @@ export const generate_consumption_reportTool = {
1239
1174
  handler: async (rawArgs) => {
1240
1175
  try {
1241
1176
  const normalizedArgs = rawArgs ?? {};
1242
- // Extraer secretId del contexto (si viene del HTTP mode)
1243
- const secretId = normalizedArgs._secretId;
1244
- // Remover _secretId de los args antes de validar
1245
- const { _secretId, ...argsToValidate } = normalizedArgs;
1246
- const validatedInput = validateToolInput(generate_consumption_reportInputValidator, argsToValidate);
1177
+ const validatedInput = validateToolInput(generate_consumption_reportInputValidator, normalizedArgs);
1247
1178
  const args = validatedInput;
1179
+ const secretId = args._secretId;
1248
1180
  const bodyData = {};
1249
1181
  const filtersValue = args.filters !== undefined ? args.filters : { "dateStart": "2024-01-29", "dateEnd": "2024-02-28", "carrierId": null, "number": "", "status": "approve", "type": "1", "bag": "tmpBalance" };
1250
1182
  if (filtersValue !== undefined)
@@ -1307,19 +1239,18 @@ const payment_generate_resourceInputJsonSchema = {
1307
1239
  },
1308
1240
  "required": []
1309
1241
  };
1310
- const payment_generate_resourceInputShape = {
1242
+ const payment_generate_resourceInputValidator = z.object({
1311
1243
  productId: z.number().optional().describe("Campo del body: productId"),
1312
1244
  amount: z.number().optional().describe("Campo del body: amount"),
1313
1245
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
1314
1246
  form: z.record(z.any()).optional().describe("Campo del body: form"),
1315
1247
  customerReference: z.string().optional().describe("Campo del body: customerReference")
1316
- };
1317
- const payment_generate_resourceInputValidator = z.object(payment_generate_resourceInputShape);
1248
+ });
1318
1249
  // Herramienta: payment_generate_resource
1319
1250
  export const payment_generate_resourceTool = {
1320
1251
  name: 'payment_generate_resource',
1321
1252
  description: "---\\n\\n### Description\\n\\nGenerates a payment resource in the system using the information provided in the request body. This method returns a response that includes details about the generated resource, such as the URL, reference, resource identifier, and expiration time.\\n\\n---\\n\\n### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`amount\\` (number, \\`required\\`): Amount of the resource to be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`form\\` (object): Optional form associated with the resource.\\n \\n - \\`cellphone\\` (string): The cellphone number.\\n \\n- \\`customerReference\\` (string, \\`required\\`): A reference to the customer.\\n \\n\\n---\\n\\n### Response Body\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code related to the message.\\n \\n- \\`data\\` (object): An object containing the response data.\\n \\n - \\`message\\` (string): A message related to the response data.\\n \\n - \\`date\\` (number): The date related to the response data.\\n \\n - \\`payload\\` (object): An object containing the payload data.\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): The reference of the generated resource.\\n \\n - \\`resourceId\\` (string): The identifier of the generated resource.\\n \\n - \\`expiresIn\\` (string): The expiration time of the generated resource.\\n \\n - \\`type\\` (string): The type of the generated resource.\\n \\n - \\`data\\` (string): Additional data related to the generated resource.\\n \\n - \\`status\\` (number): The status of the generated resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1322
- inputSchema: payment_generate_resourceInputJsonSchema,
1253
+ inputSchema: payment_generate_resourceInputValidator,
1323
1254
  jsonSchema: payment_generate_resourceInputJsonSchema,
1324
1255
  endpoint: '/payment/generate-resource',
1325
1256
  method: 'POST',
@@ -1328,12 +1259,9 @@ export const payment_generate_resourceTool = {
1328
1259
  handler: async (rawArgs) => {
1329
1260
  try {
1330
1261
  const normalizedArgs = rawArgs ?? {};
1331
- // Extraer secretId del contexto (si viene del HTTP mode)
1332
- const secretId = normalizedArgs._secretId;
1333
- // Remover _secretId de los args antes de validar
1334
- const { _secretId, ...argsToValidate } = normalizedArgs;
1335
- const validatedInput = validateToolInput(payment_generate_resourceInputValidator, argsToValidate);
1262
+ const validatedInput = validateToolInput(payment_generate_resourceInputValidator, normalizedArgs);
1336
1263
  const args = validatedInput;
1264
+ const secretId = args._secretId;
1337
1265
  const bodyData = {};
1338
1266
  const productIdValue = args.productId !== undefined ? args.productId : 304133;
1339
1267
  if (productIdValue !== undefined)
@@ -1405,19 +1333,18 @@ const generate_resource_nequiInputJsonSchema = {
1405
1333
  },
1406
1334
  "required": []
1407
1335
  };
1408
- const generate_resource_nequiInputShape = {
1336
+ const generate_resource_nequiInputValidator = z.object({
1409
1337
  productId: z.number().optional().describe("Campo del body: productId"),
1410
1338
  amount: z.number().optional().describe("Campo del body: amount"),
1411
1339
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
1412
1340
  form: z.record(z.any()).optional().describe("Campo del body: form"),
1413
1341
  customerReference: z.string().optional().describe("Campo del body: customerReference")
1414
- };
1415
- const generate_resource_nequiInputValidator = z.object(generate_resource_nequiInputShape);
1342
+ });
1416
1343
  // Herramienta: generate_resource_nequi
1417
1344
  export const generate_resource_nequiTool = {
1418
1345
  name: 'generate_resource_nequi',
1419
1346
  description: "---\\n\\n### Description\\n\\nGenerates a payment resource in the system using the information provided in the request body. This method returns a response that includes details about the generated resource, such as the URL, reference, resource identifier, and expiration time.\\n\\n---\\n\\n### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`amount\\` (number, \\`required\\`): Amount of the resource to be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`form\\` (object): Optional form associated with the resource.\\n \\n - \\`cellphone\\` (string): The cellphone number.\\n \\n- \\`customerReference\\` (string, \\`required\\`): A reference to the customer.\\n \\n\\n---\\n\\n### Response Body\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code associated with the message.\\n \\n- \\`data\\` (object): An object containing data related to the response.\\n \\n - \\`message\\` (string): A message related to the data.\\n \\n - \\`date\\` (number): The date associated with the data.\\n \\n - \\`payload\\` (object): An object containing the payload data.\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): The reference of the generated resource.\\n \\n - \\`resourceId\\` (string): The identifier of the generated resource.\\n \\n - \\`expiresIn\\` (string): The expiration time of the resource.\\n \\n - \\`type\\` (string): The type of the resource.\\n \\n - \\`data\\` (string): Additional data related to the resource.\\n \\n - \\`status\\` (number): The status of the resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1420
- inputSchema: generate_resource_nequiInputJsonSchema,
1347
+ inputSchema: generate_resource_nequiInputValidator,
1421
1348
  jsonSchema: generate_resource_nequiInputJsonSchema,
1422
1349
  endpoint: '/payment/generate-resource',
1423
1350
  method: 'POST',
@@ -1426,12 +1353,9 @@ export const generate_resource_nequiTool = {
1426
1353
  handler: async (rawArgs) => {
1427
1354
  try {
1428
1355
  const normalizedArgs = rawArgs ?? {};
1429
- // Extraer secretId del contexto (si viene del HTTP mode)
1430
- const secretId = normalizedArgs._secretId;
1431
- // Remover _secretId de los args antes de validar
1432
- const { _secretId, ...argsToValidate } = normalizedArgs;
1433
- const validatedInput = validateToolInput(generate_resource_nequiInputValidator, argsToValidate);
1356
+ const validatedInput = validateToolInput(generate_resource_nequiInputValidator, normalizedArgs);
1434
1357
  const args = validatedInput;
1358
+ const secretId = args._secretId;
1435
1359
  const bodyData = {};
1436
1360
  const productIdValue = args.productId !== undefined ? args.productId : 118;
1437
1361
  if (productIdValue !== undefined)
@@ -1508,19 +1432,18 @@ const generate_resource_daviplataInputJsonSchema = {
1508
1432
  },
1509
1433
  "required": []
1510
1434
  };
1511
- const generate_resource_daviplataInputShape = {
1435
+ const generate_resource_daviplataInputValidator = z.object({
1512
1436
  productId: z.number().optional().describe("Campo del body: productId"),
1513
1437
  amount: z.number().optional().describe("Campo del body: amount"),
1514
1438
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
1515
1439
  form: z.record(z.any()).optional().describe("Campo del body: form"),
1516
1440
  customerReference: z.string().optional().describe("Campo del body: customerReference")
1517
- };
1518
- const generate_resource_daviplataInputValidator = z.object(generate_resource_daviplataInputShape);
1441
+ });
1519
1442
  // Herramienta: generate_resource_daviplata
1520
1443
  export const generate_resource_daviplataTool = {
1521
1444
  name: 'generate_resource_daviplata',
1522
1445
  description: "---\\n\\n### Description\\n\\nGenerates a payment resource in the system using the information provided in the request body. This method returns a response that includes details about the generated resource, such as the URL, reference, resource identifier, and expiration time.\\n\\n---\\n\\n### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`amount\\` (number, \\`required\\`): Amount of the resource to be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`form\\` (object):\\n \\n - \\`typePerson\\` (string): Type of person.\\n \\n - \\`documentType\\` (string): Type of document.\\n \\n - \\`documentNumber\\` (string): Document number.\\n \\n - \\`name\\` (string): Name of the customer.\\n \\n - \\`email\\` (string): Email of the customer.\\n \\n - \\`cellphone\\` (string): Cellphone number of the customer.\\n \\n- \\`customerReference\\` (string, \\`required\\`): Reference related to the customer.\\n \\n\\n---\\n\\n### Response Body\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code related to the message.\\n \\n- \\`data\\` (object):\\n \\n - \\`message\\` (string): A message related to the data.\\n \\n - \\`date\\` (number): Date related to the data.\\n \\n - \\`payload\\` (object):\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): Reference of the resource.\\n \\n - \\`resourceId\\` (string): Identifier of the resource.\\n \\n - \\`expiresIn\\` (string): Expiration time of the resource.\\n \\n - \\`type\\` (string): Type of the resource.\\n \\n - \\`data\\` (string): Additional data related to the resource.\\n \\n - \\`status\\` (number): Status of the resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1523
- inputSchema: generate_resource_daviplataInputJsonSchema,
1446
+ inputSchema: generate_resource_daviplataInputValidator,
1524
1447
  jsonSchema: generate_resource_daviplataInputJsonSchema,
1525
1448
  endpoint: '/payment/generate-resource',
1526
1449
  method: 'POST',
@@ -1529,12 +1452,9 @@ export const generate_resource_daviplataTool = {
1529
1452
  handler: async (rawArgs) => {
1530
1453
  try {
1531
1454
  const normalizedArgs = rawArgs ?? {};
1532
- // Extraer secretId del contexto (si viene del HTTP mode)
1533
- const secretId = normalizedArgs._secretId;
1534
- // Remover _secretId de los args antes de validar
1535
- const { _secretId, ...argsToValidate } = normalizedArgs;
1536
- const validatedInput = validateToolInput(generate_resource_daviplataInputValidator, argsToValidate);
1455
+ const validatedInput = validateToolInput(generate_resource_daviplataInputValidator, normalizedArgs);
1537
1456
  const args = validatedInput;
1457
+ const secretId = args._secretId;
1538
1458
  const bodyData = {};
1539
1459
  const productIdValue = args.productId !== undefined ? args.productId : 148;
1540
1460
  if (productIdValue !== undefined)
@@ -1604,19 +1524,18 @@ const generate_resource_bancolombiaInputJsonSchema = {
1604
1524
  },
1605
1525
  "required": []
1606
1526
  };
1607
- const generate_resource_bancolombiaInputShape = {
1527
+ const generate_resource_bancolombiaInputValidator = z.object({
1608
1528
  productId: z.number().optional().describe("Campo del body: productId"),
1609
1529
  amount: z.number().optional().describe("Campo del body: amount"),
1610
1530
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
1611
1531
  form: z.record(z.any()).optional().describe("Campo del body: form"),
1612
1532
  customerReference: z.string().optional().describe("Campo del body: customerReference")
1613
- };
1614
- const generate_resource_bancolombiaInputValidator = z.object(generate_resource_bancolombiaInputShape);
1533
+ });
1615
1534
  // Herramienta: generate_resource_bancolombia
1616
1535
  export const generate_resource_bancolombiaTool = {
1617
1536
  name: 'generate_resource_bancolombia',
1618
1537
  description: "### Generate Payment Resource\\n\\n---\\n\\n#### Description\\n\\nCreates a payment resource in the system using the provided information.\\n\\n---\\n\\n#### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`amount\\` (number, \\`required\\`): Amount of the resource to be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`form\\` (object): Optional form associated with the resource.\\n \\n- \\`customerReference\\` (string): Customer reference information.\\n \\n\\n---\\n\\n#### Response Body\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code related to the message.\\n \\n- \\`data\\` (object): The response data.\\n \\n - \\`message\\` (string): A message related to the data.\\n \\n - \\`date\\` (number): The date related to the data.\\n \\n - \\`payload\\` (object): The payload data.\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): The reference of the resource.\\n \\n - \\`resourceId\\` (string): The identifier of the resource.\\n \\n - \\`expiresIn\\` (string): The expiration time of the resource.\\n \\n - \\`type\\` (string): The type of the resource.\\n \\n - \\`data\\` (string): Additional data related to the resource.\\n \\n - \\`status\\` (number): The status of the resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1619
- inputSchema: generate_resource_bancolombiaInputJsonSchema,
1538
+ inputSchema: generate_resource_bancolombiaInputValidator,
1620
1539
  jsonSchema: generate_resource_bancolombiaInputJsonSchema,
1621
1540
  endpoint: '/payment/generate-resource',
1622
1541
  method: 'POST',
@@ -1625,12 +1544,9 @@ export const generate_resource_bancolombiaTool = {
1625
1544
  handler: async (rawArgs) => {
1626
1545
  try {
1627
1546
  const normalizedArgs = rawArgs ?? {};
1628
- // Extraer secretId del contexto (si viene del HTTP mode)
1629
- const secretId = normalizedArgs._secretId;
1630
- // Remover _secretId de los args antes de validar
1631
- const { _secretId, ...argsToValidate } = normalizedArgs;
1632
- const validatedInput = validateToolInput(generate_resource_bancolombiaInputValidator, argsToValidate);
1547
+ const validatedInput = validateToolInput(generate_resource_bancolombiaInputValidator, normalizedArgs);
1633
1548
  const args = validatedInput;
1549
+ const secretId = args._secretId;
1634
1550
  const bodyData = {};
1635
1551
  const productIdValue = args.productId !== undefined ? args.productId : 87;
1636
1552
  if (productIdValue !== undefined)
@@ -1702,19 +1618,18 @@ const generate_resource_nequi_22InputJsonSchema = {
1702
1618
  },
1703
1619
  "required": []
1704
1620
  };
1705
- const generate_resource_nequi_22InputShape = {
1621
+ const generate_resource_nequi_22InputValidator = z.object({
1706
1622
  productId: z.number().optional().describe("Campo del body: productId"),
1707
1623
  amount: z.number().optional().describe("Campo del body: amount"),
1708
1624
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
1709
1625
  form: z.record(z.any()).optional().describe("Campo del body: form"),
1710
1626
  customerReference: z.string().optional().describe("Campo del body: customerReference")
1711
- };
1712
- const generate_resource_nequi_22InputValidator = z.object(generate_resource_nequi_22InputShape);
1627
+ });
1713
1628
  // Herramienta: generate_resource_nequi_22
1714
1629
  export const generate_resource_nequi_22Tool = {
1715
1630
  name: 'generate_resource_nequi_22',
1716
1631
  description: "---\\n\\n### Description\\n\\nGenerates a payment resource in the system using the information provided in the request body. This method returns a response that includes details about the generated resource, such as the URL, reference, resource identifier, and expiration time.\\n\\n---\\n\\n### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`amount\\` (number, \\`required\\`): Amount of the resource to be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`form\\` (object): Optional form associated with the resource.\\n \\n - \\`cellphone\\` (string): The cellphone number.\\n \\n- \\`customerReference\\` (string, \\`required\\`): A reference to the customer.\\n \\n\\n---\\n\\n### Response Body\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code associated with the message.\\n \\n- \\`data\\` (object): An object containing data related to the response.\\n \\n - \\`message\\` (string): A message related to the data.\\n \\n - \\`date\\` (number): The date associated with the data.\\n \\n - \\`payload\\` (object): An object containing the payload data.\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): The reference of the generated resource.\\n \\n - \\`resourceId\\` (string): The identifier of the generated resource.\\n \\n - \\`expiresIn\\` (string): The expiration time of the resource.\\n \\n - \\`type\\` (string): The type of the resource.\\n \\n - \\`data\\` (string): Additional data related to the resource.\\n \\n - \\`status\\` (number): The status of the resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1717
- inputSchema: generate_resource_nequi_22InputJsonSchema,
1632
+ inputSchema: generate_resource_nequi_22InputValidator,
1718
1633
  jsonSchema: generate_resource_nequi_22InputJsonSchema,
1719
1634
  endpoint: '/payment/generate-resource',
1720
1635
  method: 'POST',
@@ -1723,12 +1638,9 @@ export const generate_resource_nequi_22Tool = {
1723
1638
  handler: async (rawArgs) => {
1724
1639
  try {
1725
1640
  const normalizedArgs = rawArgs ?? {};
1726
- // Extraer secretId del contexto (si viene del HTTP mode)
1727
- const secretId = normalizedArgs._secretId;
1728
- // Remover _secretId de los args antes de validar
1729
- const { _secretId, ...argsToValidate } = normalizedArgs;
1730
- const validatedInput = validateToolInput(generate_resource_nequi_22InputValidator, argsToValidate);
1641
+ const validatedInput = validateToolInput(generate_resource_nequi_22InputValidator, normalizedArgs);
1731
1642
  const args = validatedInput;
1643
+ const secretId = args._secretId;
1732
1644
  const bodyData = {};
1733
1645
  const productIdValue = args.productId !== undefined ? args.productId : 88;
1734
1646
  if (productIdValue !== undefined)
@@ -1806,19 +1718,18 @@ const generate_resource_daviplata_23InputJsonSchema = {
1806
1718
  },
1807
1719
  "required": []
1808
1720
  };
1809
- const generate_resource_daviplata_23InputShape = {
1721
+ const generate_resource_daviplata_23InputValidator = z.object({
1810
1722
  productId: z.number().optional().describe("Campo del body: productId"),
1811
1723
  amount: z.number().optional().describe("Campo del body: amount"),
1812
1724
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
1813
1725
  form: z.record(z.any()).optional().describe("Campo del body: form"),
1814
1726
  customerReference: z.string().optional().describe("Campo del body: customerReference")
1815
- };
1816
- const generate_resource_daviplata_23InputValidator = z.object(generate_resource_daviplata_23InputShape);
1727
+ });
1817
1728
  // Herramienta: generate_resource_daviplata_23
1818
1729
  export const generate_resource_daviplata_23Tool = {
1819
1730
  name: 'generate_resource_daviplata_23',
1820
1731
  description: "---\\n\\n### Description\\n\\nGenerates a payment resource in the system using the information provided in the request body. This method returns a response that includes details about the generated resource, such as the URL, reference, resource identifier, and expiration time.\\n\\n---\\n\\n### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`amount\\` (number, \\`required\\`): Amount of the resource to be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`form\\` (object):\\n \\n - \\`typePerson\\` (string): Type of person.\\n \\n - \\`documentType\\` (string): Type of document.\\n \\n - \\`documentNumber\\` (string): Document number.\\n \\n - \\`name\\` (string): Name of the customer.\\n \\n - \\`email\\` (string): Email of the customer.\\n \\n - \\`cellphone\\` (string): Cellphone number of the customer.\\n \\n- \\`customerReference\\` (string, \\`required\\`): Reference related to the customer.\\n \\n\\n---\\n\\n### Response Body\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code related to the message.\\n \\n- \\`data\\` (object):\\n \\n - \\`message\\` (string): A message related to the data.\\n \\n - \\`date\\` (number): Date related to the data.\\n \\n - \\`payload\\` (object):\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): Reference of the resource.\\n \\n - \\`resourceId\\` (string): Identifier of the resource.\\n \\n - \\`expiresIn\\` (string): Expiration time of the resource.\\n \\n - \\`type\\` (string): Type of the resource.\\n \\n - \\`data\\` (string): Additional data related to the resource.\\n \\n - \\`status\\` (number): Status of the resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1821
- inputSchema: generate_resource_daviplata_23InputJsonSchema,
1732
+ inputSchema: generate_resource_daviplata_23InputValidator,
1822
1733
  jsonSchema: generate_resource_daviplata_23InputJsonSchema,
1823
1734
  endpoint: '/payment/generate-resource',
1824
1735
  method: 'POST',
@@ -1827,12 +1738,9 @@ export const generate_resource_daviplata_23Tool = {
1827
1738
  handler: async (rawArgs) => {
1828
1739
  try {
1829
1740
  const normalizedArgs = rawArgs ?? {};
1830
- // Extraer secretId del contexto (si viene del HTTP mode)
1831
- const secretId = normalizedArgs._secretId;
1832
- // Remover _secretId de los args antes de validar
1833
- const { _secretId, ...argsToValidate } = normalizedArgs;
1834
- const validatedInput = validateToolInput(generate_resource_daviplata_23InputValidator, argsToValidate);
1741
+ const validatedInput = validateToolInput(generate_resource_daviplata_23InputValidator, normalizedArgs);
1835
1742
  const args = validatedInput;
1743
+ const secretId = args._secretId;
1836
1744
  const bodyData = {};
1837
1745
  const productIdValue = args.productId !== undefined ? args.productId : 89;
1838
1746
  if (productIdValue !== undefined)
@@ -1910,19 +1818,18 @@ const generate_resource_pseInputJsonSchema = {
1910
1818
  },
1911
1819
  "required": []
1912
1820
  };
1913
- const generate_resource_pseInputShape = {
1821
+ const generate_resource_pseInputValidator = z.object({
1914
1822
  productId: z.number().optional().describe("Campo del body: productId"),
1915
1823
  amount: z.number().optional().describe("Campo del body: amount"),
1916
1824
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
1917
1825
  form: z.record(z.any()).optional().describe("Campo del body: form"),
1918
1826
  customerReference: z.string().optional().describe("Campo del body: customerReference")
1919
- };
1920
- const generate_resource_pseInputValidator = z.object(generate_resource_pseInputShape);
1827
+ });
1921
1828
  // Herramienta: generate_resource_pse
1922
1829
  export const generate_resource_pseTool = {
1923
1830
  name: 'generate_resource_pse',
1924
1831
  description: "---\\n\\n### Generate Payment Resource\\n\\n---\\n\\n#### Description\\n\\nThis endpoint allows you to generate a payment resource in the system.\\n\\n---\\n\\n#### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`amount\\` (number, \\`required\\`): Amount of the resource to be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`form\\` (object): Optional form associated with the resource.\\n \\n - \\`bankId\\` (string): The ID of the bank.\\n \\n - \\`typePerson\\` (string): The type of person.\\n \\n - \\`documentType\\` (string): The type of document.\\n \\n - \\`documentNumber\\` (string): The document number.\\n \\n - \\`name\\` (string): The name of the customer.\\n \\n - \\`email\\` (string): The email of the customer.\\n \\n - \\`cellphone\\` (string): The cellphone number of the customer.\\n \\n- \\`customerReference\\` (string, \\`required\\`): The reference for the customer.\\n \\n\\n---\\n\\n#### Response\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code related to the message.\\n \\n- \\`data\\` (object):\\n \\n - \\`message\\` (string): A message related to the data.\\n \\n - \\`date\\` (number): The date of the response.\\n \\n - \\`payload\\` (object):\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): The reference of the generated resource.\\n \\n - \\`resourceId\\` (string): The identifier of the generated resource.\\n \\n - \\`expiresIn\\` (string): The expiration time of the resource.\\n \\n - \\`type\\` (string): The type of the resource.\\n \\n - \\`data\\` (string): Additional data related to the resource.\\n \\n - \\`status\\` (number): The status of the resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
1925
- inputSchema: generate_resource_pseInputJsonSchema,
1832
+ inputSchema: generate_resource_pseInputValidator,
1926
1833
  jsonSchema: generate_resource_pseInputJsonSchema,
1927
1834
  endpoint: '/payment/generate-resource',
1928
1835
  method: 'POST',
@@ -1931,12 +1838,9 @@ export const generate_resource_pseTool = {
1931
1838
  handler: async (rawArgs) => {
1932
1839
  try {
1933
1840
  const normalizedArgs = rawArgs ?? {};
1934
- // Extraer secretId del contexto (si viene del HTTP mode)
1935
- const secretId = normalizedArgs._secretId;
1936
- // Remover _secretId de los args antes de validar
1937
- const { _secretId, ...argsToValidate } = normalizedArgs;
1938
- const validatedInput = validateToolInput(generate_resource_pseInputValidator, argsToValidate);
1841
+ const validatedInput = validateToolInput(generate_resource_pseInputValidator, normalizedArgs);
1939
1842
  const args = validatedInput;
1843
+ const secretId = args._secretId;
1940
1844
  const bodyData = {};
1941
1845
  const productIdValue = args.productId !== undefined ? args.productId : 56;
1942
1846
  if (productIdValue !== undefined)
@@ -2001,18 +1905,17 @@ const generate_res_ban_dir_al_bancoInputJsonSchema = {
2001
1905
  },
2002
1906
  "required": []
2003
1907
  };
2004
- const generate_res_ban_dir_al_bancoInputShape = {
1908
+ const generate_res_ban_dir_al_bancoInputValidator = z.object({
2005
1909
  productId: z.number().optional().describe("Campo del body: productId"),
2006
1910
  amount: z.number().optional().describe("Campo del body: amount"),
2007
1911
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
2008
1912
  customerReference: z.string().optional().describe("Campo del body: customerReference")
2009
- };
2010
- const generate_res_ban_dir_al_bancoInputValidator = z.object(generate_res_ban_dir_al_bancoInputShape);
1913
+ });
2011
1914
  // Herramienta: generate_res_ban_dir_al_banco
2012
1915
  export const generate_res_ban_dir_al_bancoTool = {
2013
1916
  name: 'generate_res_ban_dir_al_banco',
2014
1917
  description: "---\\n\\n### Description\\n\\nGenerates a payment resource in the system using the information provided in the request body. This method returns a response that includes details about the generated resource, such as the URL, reference, resource identifier, and expiration time.\\n\\n---\\n\\n### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`amount\\` (number, \\`required\\`): Amount of the resource to be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`customerReference\\` (string, \\`required\\`): A reference related to the customer.\\n \\n\\n---\\n\\n### Response Body\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code related to the message.\\n \\n- \\`data\\` (object)\\n \\n - \\`message\\` (string): A message related to the data.\\n \\n - \\`date\\` (number): The date related to the data.\\n \\n - \\`payload\\` (object)\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): The reference of the generated resource.\\n \\n - \\`resourceId\\` (string): The identifier of the generated resource.\\n \\n - \\`expiresIn\\` (string): The expiration time of the generated resource.\\n \\n - \\`type\\` (string): The type of the generated resource.\\n \\n - \\`data\\` (string): Additional data related to the generated resource.\\n \\n - \\`status\\` (number): The status of the generated resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2015
- inputSchema: generate_res_ban_dir_al_bancoInputJsonSchema,
1918
+ inputSchema: generate_res_ban_dir_al_bancoInputValidator,
2016
1919
  jsonSchema: generate_res_ban_dir_al_bancoInputJsonSchema,
2017
1920
  endpoint: '/payment/generate-resource',
2018
1921
  method: 'POST',
@@ -2021,12 +1924,9 @@ export const generate_res_ban_dir_al_bancoTool = {
2021
1924
  handler: async (rawArgs) => {
2022
1925
  try {
2023
1926
  const normalizedArgs = rawArgs ?? {};
2024
- // Extraer secretId del contexto (si viene del HTTP mode)
2025
- const secretId = normalizedArgs._secretId;
2026
- // Remover _secretId de los args antes de validar
2027
- const { _secretId, ...argsToValidate } = normalizedArgs;
2028
- const validatedInput = validateToolInput(generate_res_ban_dir_al_bancoInputValidator, argsToValidate);
1927
+ const validatedInput = validateToolInput(generate_res_ban_dir_al_bancoInputValidator, normalizedArgs);
2029
1928
  const args = validatedInput;
1929
+ const secretId = args._secretId;
2030
1930
  const bodyData = {};
2031
1931
  const productIdValue = args.productId !== undefined ? args.productId : 53;
2032
1932
  if (productIdValue !== undefined)
@@ -2088,18 +1988,17 @@ const generate_res_ban_esc_qrInputJsonSchema = {
2088
1988
  },
2089
1989
  "required": []
2090
1990
  };
2091
- const generate_res_ban_esc_qrInputShape = {
1991
+ const generate_res_ban_esc_qrInputValidator = z.object({
2092
1992
  productId: z.number().optional().describe("Campo del body: productId"),
2093
1993
  amount: z.number().optional().describe("Campo del body: amount"),
2094
1994
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
2095
1995
  customerReference: z.string().optional().describe("Campo del body: customerReference")
2096
- };
2097
- const generate_res_ban_esc_qrInputValidator = z.object(generate_res_ban_esc_qrInputShape);
1996
+ });
2098
1997
  // Herramienta: generate_res_ban_esc_qr
2099
1998
  export const generate_res_ban_esc_qrTool = {
2100
1999
  name: 'generate_res_ban_esc_qr',
2101
2000
  description: "---\\n\\n### Generate Payment Resource\\n\\n---\\n\\n#### Description\\n\\nGenerates a payment resource in the system using the information provided in the request body.\\n\\n---\\n\\n#### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`amount\\` (number, \\`required\\`): Amount of the resource to be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`customerReference\\` (string, \\`required\\`): Reference to the customer.\\n \\n\\n---\\n\\n#### Response\\n\\nThe response is a JSON object with the following properties:\\n\\n- \\`message\\` (string): A message, if any.\\n \\n- \\`messageCode\\` (string): A code associated with the message.\\n \\n- \\`data\\` (object): The data object containing the following properties:\\n \\n - \\`message\\` (string): A message, if any.\\n \\n - \\`date\\` (number): The date associated with the response.\\n \\n - \\`payload\\` (object): The payload object containing the following properties:\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): The reference of the resource.\\n \\n - \\`resourceId\\` (string): The identifier of the resource.\\n \\n - \\`expiresIn\\` (string): The expiration time of the resource.\\n \\n - \\`type\\` (string): The type of resource.\\n \\n - \\`data\\` (string): Additional data associated with the resource.\\n \\n - \\`status\\` (number): The status of the resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2102
- inputSchema: generate_res_ban_esc_qrInputJsonSchema,
2001
+ inputSchema: generate_res_ban_esc_qrInputValidator,
2103
2002
  jsonSchema: generate_res_ban_esc_qrInputJsonSchema,
2104
2003
  endpoint: '/payment/generate-resource',
2105
2004
  method: 'POST',
@@ -2108,12 +2007,9 @@ export const generate_res_ban_esc_qrTool = {
2108
2007
  handler: async (rawArgs) => {
2109
2008
  try {
2110
2009
  const normalizedArgs = rawArgs ?? {};
2111
- // Extraer secretId del contexto (si viene del HTTP mode)
2112
- const secretId = normalizedArgs._secretId;
2113
- // Remover _secretId de los args antes de validar
2114
- const { _secretId, ...argsToValidate } = normalizedArgs;
2115
- const validatedInput = validateToolInput(generate_res_ban_esc_qrInputValidator, argsToValidate);
2010
+ const validatedInput = validateToolInput(generate_res_ban_esc_qrInputValidator, normalizedArgs);
2116
2011
  const args = validatedInput;
2012
+ const secretId = args._secretId;
2117
2013
  const bodyData = {};
2118
2014
  const productIdValue = args.productId !== undefined ? args.productId : 54;
2119
2015
  if (productIdValue !== undefined)
@@ -2170,17 +2066,16 @@ const generate_resource_tarjeta_de_recaudoInputJsonSchema = {
2170
2066
  },
2171
2067
  "required": []
2172
2068
  };
2173
- const generate_resource_tarjeta_de_recaudoInputShape = {
2069
+ const generate_resource_tarjeta_de_recaudoInputValidator = z.object({
2174
2070
  productId: z.number().optional().describe("Campo del body: productId"),
2175
2071
  moduleId: z.number().optional().describe("Campo del body: moduleId"),
2176
2072
  customerReference: z.string().optional().describe("Campo del body: customerReference")
2177
- };
2178
- const generate_resource_tarjeta_de_recaudoInputValidator = z.object(generate_resource_tarjeta_de_recaudoInputShape);
2073
+ });
2179
2074
  // Herramienta: generate_resource_tarjeta_de_recaudo
2180
2075
  export const generate_resource_tarjeta_de_recaudoTool = {
2181
2076
  name: 'generate_resource_tarjeta_de_recaudo',
2182
2077
  description: "---\\n\\n### Description\\n\\nGenerates a payment resource in the system using the information provided in the request body. This method returns a response that includes details about the generated resource, such as the URL, reference, resource identifier, and expiration time.\\n\\n---\\n\\n### Request Body\\n\\n- \\`productId\\` (number, \\`required\\`): Identifier of the product for which the resource will be generated.\\n \\n- \\`moduleId\\` (number, \\`required\\`): Identifier of the module to which the generated resource will be associated.\\n \\n- \\`customerReference\\` (string): The reference of the customer.\\n \\n\\n---\\n\\n### Response\\n\\n- \\`message\\` (string): A message from the response.\\n \\n- \\`messageCode\\` (string): A code associated with the message.\\n \\n- \\`data\\` (object)\\n \\n - \\`message\\` (string): A message within the data object.\\n \\n - \\`date\\` (number): The date associated with the response.\\n \\n - \\`payload\\` (object)\\n \\n - \\`url\\` (string): The URL of the generated resource.\\n \\n - \\`reference\\` (string): The reference of the resource.\\n \\n - \\`resourceId\\` (string): The identifier of the resource.\\n \\n - \\`expiresIn\\` (string): The expiration time of the resource.\\n \\n - \\`type\\` (string): The type of the resource.\\n \\n - \\`data\\` (string): Additional data associated with the resource.\\n \\n - \\`status\\` (number): The status of the resource.\n\nContexto: Endpoint: POST /payment/generate-resource | Payment > Generate resource\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2183
- inputSchema: generate_resource_tarjeta_de_recaudoInputJsonSchema,
2078
+ inputSchema: generate_resource_tarjeta_de_recaudoInputValidator,
2184
2079
  jsonSchema: generate_resource_tarjeta_de_recaudoInputJsonSchema,
2185
2080
  endpoint: '/payment/generate-resource',
2186
2081
  method: 'POST',
@@ -2189,12 +2084,9 @@ export const generate_resource_tarjeta_de_recaudoTool = {
2189
2084
  handler: async (rawArgs) => {
2190
2085
  try {
2191
2086
  const normalizedArgs = rawArgs ?? {};
2192
- // Extraer secretId del contexto (si viene del HTTP mode)
2193
- const secretId = normalizedArgs._secretId;
2194
- // Remover _secretId de los args antes de validar
2195
- const { _secretId, ...argsToValidate } = normalizedArgs;
2196
- const validatedInput = validateToolInput(generate_resource_tarjeta_de_recaudoInputValidator, argsToValidate);
2087
+ const validatedInput = validateToolInput(generate_resource_tarjeta_de_recaudoInputValidator, normalizedArgs);
2197
2088
  const args = validatedInput;
2089
+ const secretId = args._secretId;
2198
2090
  const bodyData = {};
2199
2091
  const productIdValue = args.productId !== undefined ? args.productId : 90;
2200
2092
  if (productIdValue !== undefined)
@@ -2232,13 +2124,12 @@ const payment_get_resourceInputJsonSchema = {
2232
2124
  "properties": {},
2233
2125
  "required": []
2234
2126
  };
2235
- const payment_get_resourceInputShape = {};
2236
- const payment_get_resourceInputValidator = z.object(payment_get_resourceInputShape);
2127
+ const payment_get_resourceInputValidator = z.object({});
2237
2128
  // Herramienta: payment_get_resource
2238
2129
  export const payment_get_resourceTool = {
2239
2130
  name: 'payment_get_resource',
2240
2131
  description: "---\\n\\n### Retrieve Payment Resource\\n\\n---\\n\\n#### Description\\n\\nRetrieve a payment resource in the system using the provided customer reference as a parameter. This method returns a response that includes details about the retrieved resource.\\n\\n---\\n\\n#### Request Body Schema\\n\\n- There is no request body for this GET request.\\n \\n\\n---\\n\\n#### Response Body Schema\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code associated with the message.\\n \\n- \\`data\\` (object)\\n \\n - \\`payload\\` (object)\\n \\n - \\`url\\` (string): The URL associated with the resource.\\n \\n - \\`reference\\` (string): The reference of the resource.\\n \\n - \\`resourceId\\` (string): The ID of the resource.\\n \\n - \\`expiresIn\\` (string): The expiration time of the resource.\\n \\n - \\`type\\` (string): The type of the resource.\\n \\n - \\`data\\` (string): Additional data related to the resource.\\n \\n - \\`status\\` (number): The status of the resource.\\n \\n\\nThis method returns a response that includes details about the retrieved resource.\n\nContexto: Endpoint: GET /payment/get-resource/:customerReference | Payment > Get resource > :customerReference\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2241
- inputSchema: payment_get_resourceInputJsonSchema,
2132
+ inputSchema: payment_get_resourceInputValidator,
2242
2133
  jsonSchema: payment_get_resourceInputJsonSchema,
2243
2134
  endpoint: '/payment/get-resource/:customerReference',
2244
2135
  method: 'GET',
@@ -2247,12 +2138,9 @@ export const payment_get_resourceTool = {
2247
2138
  handler: async (rawArgs) => {
2248
2139
  try {
2249
2140
  const normalizedArgs = rawArgs ?? {};
2250
- // Extraer secretId del contexto (si viene del HTTP mode)
2251
- const secretId = normalizedArgs._secretId;
2252
- // Remover _secretId de los args antes de validar
2253
- const { _secretId, ...argsToValidate } = normalizedArgs;
2254
- const validatedInput = validateToolInput(payment_get_resourceInputValidator, argsToValidate);
2141
+ const validatedInput = validateToolInput(payment_get_resourceInputValidator, normalizedArgs);
2255
2142
  const args = validatedInput;
2143
+ const secretId = args._secretId;
2256
2144
  return await makeApiRequest('GET', '/payment/get-resource/:customerReference', undefined, undefined, secretId);
2257
2145
  }
2258
2146
  catch (error) {
@@ -2280,13 +2168,12 @@ const payment_pse_banksInputJsonSchema = {
2280
2168
  "properties": {},
2281
2169
  "required": []
2282
2170
  };
2283
- const payment_pse_banksInputShape = {};
2284
- const payment_pse_banksInputValidator = z.object(payment_pse_banksInputShape);
2171
+ const payment_pse_banksInputValidator = z.object({});
2285
2172
  // Herramienta: payment_pse_banks
2286
2173
  export const payment_pse_banksTool = {
2287
2174
  name: 'payment_pse_banks',
2288
2175
  description: "---\\n\\n### PSE Banks\\n\\n---\\n\\n#### Description\\n\\nThis service allows you to obtain the banks available to make PSE payments.\\n\\n---\\n\\n#### Request Body Schema\\n\\n- There is no request body for this GET request.\\n \\n\\n---\\n\\n#### Response Body Schema\\n\\n- \\`message\\` (string): A message related to the response.\\n \\n- \\`messageCode\\` (string): A code associated with the message.\\n \\n- \\`data\\` (object)\\n \\n - \\`banks\\`: An array of object with the banks information (id, name and image)\n\nContexto: Endpoint: GET /payment/pse-banks | Payment > Pse banks\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2289
- inputSchema: payment_pse_banksInputJsonSchema,
2176
+ inputSchema: payment_pse_banksInputValidator,
2290
2177
  jsonSchema: payment_pse_banksInputJsonSchema,
2291
2178
  endpoint: '/payment/pse-banks',
2292
2179
  method: 'GET',
@@ -2295,12 +2182,9 @@ export const payment_pse_banksTool = {
2295
2182
  handler: async (rawArgs) => {
2296
2183
  try {
2297
2184
  const normalizedArgs = rawArgs ?? {};
2298
- // Extraer secretId del contexto (si viene del HTTP mode)
2299
- const secretId = normalizedArgs._secretId;
2300
- // Remover _secretId de los args antes de validar
2301
- const { _secretId, ...argsToValidate } = normalizedArgs;
2302
- const validatedInput = validateToolInput(payment_pse_banksInputValidator, argsToValidate);
2185
+ const validatedInput = validateToolInput(payment_pse_banksInputValidator, normalizedArgs);
2303
2186
  const args = validatedInput;
2187
+ const secretId = args._secretId;
2304
2188
  return await makeApiRequest('GET', '/payment/pse-banks', undefined, undefined, secretId);
2305
2189
  }
2306
2190
  catch (error) {
@@ -2328,13 +2212,12 @@ const product_listInputJsonSchema = {
2328
2212
  "properties": {},
2329
2213
  "required": []
2330
2214
  };
2331
- const product_listInputShape = {};
2332
- const product_listInputValidator = z.object(product_listInputShape);
2215
+ const product_listInputValidator = z.object({});
2333
2216
  // Herramienta: product_list
2334
2217
  export const product_listTool = {
2335
2218
  name: 'product_list',
2336
2219
  description: "---\\n\\n### Retrieve Product List\\n\\nRetrieve a list of active products in the system. This service provides detailed information about the available products for querying. You can filter the results using the optional \\\"type\\\" parameter.\\n\\n---\\n\\n#### Query Parameters\\n\\n- \\`type\\` (optional): Type of products to list. If provided and set to \\\"bills,\\\" it will list products related to invoices; otherwise, it will list all products except those related to invoices and packages.\\n \\n\\n**Example**:\\n\\n\\`\\`\\`\\ntype: bills\\n\\n \\`\\`\\`\\n\\n---\\n\\n#### Response\\n\\nThe response of this request is a JSON schema representing the list of products. An example response schema is as follows:\\n\\n\\`\\`\\` json\\n{\\n \\\"message\\\": \\\"\\\",\\n \\\"messageCode\\\": \\\"\\\",\\n \\\"data\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"categoryId\\\": 0,\\n \\\"name\\\": \\\"\\\",\\n \\\"needValidation\\\": true,\\n \\\"moduleId\\\": 0,\\n \\\"maxFixedTip\\\": 0,\\n \\\"description\\\": \\\"\\\",\\n \\\"amount\\\": 0,\\n \\\"sort\\\": 0,\\n \\\"meta\\\": {},\\n \\\"image\\\": \\\"\\\",\\n \\\"status\\\": \\\"\\\"\\n }\\n ]\\n}\\n\\n \\`\\`\\`\\n\\nType of products to list. If provided and set to \\\"bills,\\\" it will list products related to invoices; otherwise, it will list all products except those related to invoices and packages.\\n\\n_Example_ : bills\n\nContexto: Endpoint: GET /product/list | Product > List\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2337
- inputSchema: product_listInputJsonSchema,
2220
+ inputSchema: product_listInputValidator,
2338
2221
  jsonSchema: product_listInputJsonSchema,
2339
2222
  endpoint: '/product/list',
2340
2223
  method: 'GET',
@@ -2343,12 +2226,9 @@ export const product_listTool = {
2343
2226
  handler: async (rawArgs) => {
2344
2227
  try {
2345
2228
  const normalizedArgs = rawArgs ?? {};
2346
- // Extraer secretId del contexto (si viene del HTTP mode)
2347
- const secretId = normalizedArgs._secretId;
2348
- // Remover _secretId de los args antes de validar
2349
- const { _secretId, ...argsToValidate } = normalizedArgs;
2350
- const validatedInput = validateToolInput(product_listInputValidator, argsToValidate);
2229
+ const validatedInput = validateToolInput(product_listInputValidator, normalizedArgs);
2351
2230
  const args = validatedInput;
2231
+ const secretId = args._secretId;
2352
2232
  return await makeApiRequest('GET', '/product/list', undefined, undefined, secretId);
2353
2233
  }
2354
2234
  catch (error) {
@@ -2376,13 +2256,12 @@ const product_packagesInputJsonSchema = {
2376
2256
  "properties": {},
2377
2257
  "required": []
2378
2258
  };
2379
- const product_packagesInputShape = {};
2380
- const product_packagesInputValidator = z.object(product_packagesInputShape);
2259
+ const product_packagesInputValidator = z.object({});
2381
2260
  // Herramienta: product_packages
2382
2261
  export const product_packagesTool = {
2383
2262
  name: 'product_packages',
2384
2263
  description: "---\\n\\n### Retrieve Available Packages\\n\\n---\\n\\n#### Description\\n\\nThis endpoint retrieves a list of available packages in the system. The response is in JSON format and provides detailed information about the packages, which may contain multiple products.\\n\\n**Note:** It is necessary to use this service to keep the packages updated for any changes that occur.\\n\\n---\\n\\n#### Response\\n\\nThe response for this request can be documented as a JSON schema:\\n\\n\\`\\`\\` json\\n{\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"message\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"messageCode\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"data\\\": {\\n \\\"type\\\": \\\"array\\\",\\n \\\"items\\\": {\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"id\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"name\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"description\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"categories\\\": {\\n \\\"type\\\": \\\"array\\\",\\n \\\"items\\\": {\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"id\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"name\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"description\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"products\\\": {\\n \\\"type\\\": \\\"array\\\",\\n \\\"items\\\": {\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"id\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"categoryId\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"name\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"needValidation\\\": {\\n \\\"type\\\": \\\"boolean\\\"\\n },\\n \\\"moduleId\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"maxFixedTip\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"description\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"amount\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"sort\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"meta\\\": {\\n \\\"type\\\": \\\"object\\\"\\n },\\n \\\"image\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"status\\\": {\\n \\\"type\\\": \\\"string\\\"\\n }\\n },\\n \\\"required\\\": [\\n \\\"id\\\",\\n \\\"categoryId\\\",\\n \\\"name\\\",\\n \\\"needValidation\\\",\\n \\\"moduleId\\\",\\n \\\"maxFixedTip\\\",\\n \\\"description\\\",\\n \\\"amount\\\",\\n \\\"sort\\\",\\n \\\"meta\\\",\\n \\\"image\\\",\\n \\\"status\\\"\\n ]\\n }\\n },\\n \\\"internalName\\\": {\\n \\\"type\\\": \\\"string\\\"\\n }\\n },\\n \\\"required\\\": [\\n \\\"id\\\",\\n \\\"name\\\",\\n \\\"description\\\",\\n \\\"products\\\",\\n \\\"internalName\\\"\\n ]\\n }\\n },\\n \\\"internalName\\\": {\\n \\\"type\\\": \\\"string\\\"\\n }\\n },\\n \\\"required\\\": [\\n \\\"id\\\",\\n \\\"name\\\",\\n \\\"description\\\",\\n \\\"categories\\\",\\n \\\"internalName\\\"\\n ]\\n }\\n }\\n },\\n \\\"required\\\": [\\n \\\"message\\\",\\n \\\"messageCode\\\",\\n \\\"data\\\"\\n ]\\n}\\n\\n \\`\\`\\`\n\nContexto: Endpoint: GET /product/packages | Product > Packages\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2385
- inputSchema: product_packagesInputJsonSchema,
2264
+ inputSchema: product_packagesInputValidator,
2386
2265
  jsonSchema: product_packagesInputJsonSchema,
2387
2266
  endpoint: '/product/packages',
2388
2267
  method: 'GET',
@@ -2391,12 +2270,9 @@ export const product_packagesTool = {
2391
2270
  handler: async (rawArgs) => {
2392
2271
  try {
2393
2272
  const normalizedArgs = rawArgs ?? {};
2394
- // Extraer secretId del contexto (si viene del HTTP mode)
2395
- const secretId = normalizedArgs._secretId;
2396
- // Remover _secretId de los args antes de validar
2397
- const { _secretId, ...argsToValidate } = normalizedArgs;
2398
- const validatedInput = validateToolInput(product_packagesInputValidator, argsToValidate);
2273
+ const validatedInput = validateToolInput(product_packagesInputValidator, normalizedArgs);
2399
2274
  const args = validatedInput;
2275
+ const secretId = args._secretId;
2400
2276
  return await makeApiRequest('GET', '/product/packages', undefined, undefined, secretId);
2401
2277
  }
2402
2278
  catch (error) {
@@ -2424,13 +2300,12 @@ const product_commissionsInputJsonSchema = {
2424
2300
  "properties": {},
2425
2301
  "required": []
2426
2302
  };
2427
- const product_commissionsInputShape = {};
2428
- const product_commissionsInputValidator = z.object(product_commissionsInputShape);
2303
+ const product_commissionsInputValidator = z.object({});
2429
2304
  // Herramienta: product_commissions
2430
2305
  export const product_commissionsTool = {
2431
2306
  name: 'product_commissions',
2432
2307
  description: "---\\n\\n### Retrieve Product Commissions\\n\\n---\\n\\n#### Description\\n\\nRetrieve detailed information about the commissions associated with registered products.\\n\\n---\\n\\n#### Response\\n\\nThe response for this request is a JSON object with the following schema:\\n\\n\\`\\`\\` json\\n{\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"message\\\": {\\\"type\\\": \\\"string\\\"},\\n \\\"messageCode\\\": {\\\"type\\\": \\\"string\\\"},\\n \\\"data\\\": {\\n \\\"type\\\": \\\"array\\\",\\n \\\"items\\\": {\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"id\\\": {\\\"type\\\": \\\"number\\\"},\\n \\\"name\\\": {\\\"type\\\": \\\"string\\\"},\\n \\\"image\\\": {\\\"type\\\": \\\"string\\\"},\\n \\\"fixedCommission\\\": {\\\"type\\\": \\\"object\\\"},\\n \\\"maxFixedCommission\\\": {\\\"type\\\": \\\"number\\\"},\\n \\\"commission\\\": {\\\"type\\\": \\\"number\\\"},\\n \\\"commissionType\\\": {\\\"type\\\": \\\"string\\\"},\\n \\\"amount\\\": {\\\"type\\\": \\\"object\\\"},\\n \\\"category\\\": {\\\"type\\\": \\\"string\\\"},\\n \\\"key\\\": {\\\"type\\\": \\\"string\\\"},\\n \\\"overdraft\\\": {\\\"type\\\": \\\"number\\\"}\\n }\\n }\\n }\\n }\\n}\\n\\n \\`\\`\\`\n\nContexto: Endpoint: GET /product/commissions | Product > Commissions\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2433
- inputSchema: product_commissionsInputJsonSchema,
2308
+ inputSchema: product_commissionsInputValidator,
2434
2309
  jsonSchema: product_commissionsInputJsonSchema,
2435
2310
  endpoint: '/product/commissions',
2436
2311
  method: 'GET',
@@ -2439,12 +2314,9 @@ export const product_commissionsTool = {
2439
2314
  handler: async (rawArgs) => {
2440
2315
  try {
2441
2316
  const normalizedArgs = rawArgs ?? {};
2442
- // Extraer secretId del contexto (si viene del HTTP mode)
2443
- const secretId = normalizedArgs._secretId;
2444
- // Remover _secretId de los args antes de validar
2445
- const { _secretId, ...argsToValidate } = normalizedArgs;
2446
- const validatedInput = validateToolInput(product_commissionsInputValidator, argsToValidate);
2317
+ const validatedInput = validateToolInput(product_commissionsInputValidator, normalizedArgs);
2447
2318
  const args = validatedInput;
2319
+ const secretId = args._secretId;
2448
2320
  return await makeApiRequest('GET', '/product/commissions', undefined, undefined, secretId);
2449
2321
  }
2450
2322
  catch (error) {
@@ -2472,13 +2344,12 @@ const product_categoriesInputJsonSchema = {
2472
2344
  "properties": {},
2473
2345
  "required": []
2474
2346
  };
2475
- const product_categoriesInputShape = {};
2476
- const product_categoriesInputValidator = z.object(product_categoriesInputShape);
2347
+ const product_categoriesInputValidator = z.object({});
2477
2348
  // Herramienta: product_categories
2478
2349
  export const product_categoriesTool = {
2479
2350
  name: 'product_categories',
2480
2351
  description: "---\\n\\n### Retrieve Product Categories\\n\\n---\\n\\n#### Description\\n\\nThis service provides detailed information on the categories and their subcategories.\\n\\n---\\n\\n#### Response\\n\\nThe response for this request can be documented as a JSON schema:\\n\\n\\`\\`\\` json\\n{\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"message\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"messageCode\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"data\\\": {\\n \\\"type\\\": \\\"array\\\",\\n \\\"items\\\": {\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"id\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"name\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"description\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"categories\\\": {\\n \\\"type\\\": \\\"array\\\",\\n \\\"items\\\": {\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"id\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"name\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"description\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"products\\\": {\\n \\\"type\\\": \\\"array\\\",\\n \\\"items\\\": {\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"id\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"categoryId\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"name\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"needValidation\\\": {\\n \\\"type\\\": \\\"boolean\\\"\\n },\\n \\\"moduleId\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"maxFixedTip\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"description\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"amount\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"sort\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"meta\\\": {\\n \\\"type\\\": \\\"object\\\"\\n },\\n \\\"image\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"status\\\": {\\n \\\"type\\\": \\\"string\\\"\\n }\\n },\\n \\\"required\\\": [\\n \\\"id\\\",\\n \\\"categoryId\\\",\\n \\\"name\\\",\\n \\\"needValidation\\\",\\n \\\"moduleId\\\",\\n \\\"maxFixedTip\\\",\\n \\\"description\\\",\\n \\\"amount\\\",\\n \\\"sort\\\",\\n \\\"meta\\\",\\n \\\"image\\\",\\n \\\"status\\\"\\n ]\\n }\\n }\\n },\\n \\\"required\\\": [\\n \\\"id\\\",\\n \\\"name\\\",\\n \\\"description\\\",\\n \\\"products\\\"\\n ]\\n }\\n },\\n \\\"internalName\\\": {\\n \\\"type\\\": \\\"string\\\"\\n }\\n },\\n \\\"required\\\": [\\n \\\"id\\\",\\n \\\"name\\\",\\n \\\"description\\\",\\n \\\"categories\\\",\\n \\\"internalName\\\"\\n ]\\n }\\n }\\n },\\n \\\"required\\\": [\\n \\\"message\\\",\\n \\\"messageCode\\\",\\n \\\"data\\\"\\n ]\\n}\\n\\n \\`\\`\\`\n\nContexto: Endpoint: GET /product/categories | Product > Categories\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2481
- inputSchema: product_categoriesInputJsonSchema,
2352
+ inputSchema: product_categoriesInputValidator,
2482
2353
  jsonSchema: product_categoriesInputJsonSchema,
2483
2354
  endpoint: '/product/categories',
2484
2355
  method: 'GET',
@@ -2487,12 +2358,9 @@ export const product_categoriesTool = {
2487
2358
  handler: async (rawArgs) => {
2488
2359
  try {
2489
2360
  const normalizedArgs = rawArgs ?? {};
2490
- // Extraer secretId del contexto (si viene del HTTP mode)
2491
- const secretId = normalizedArgs._secretId;
2492
- // Remover _secretId de los args antes de validar
2493
- const { _secretId, ...argsToValidate } = normalizedArgs;
2494
- const validatedInput = validateToolInput(product_categoriesInputValidator, argsToValidate);
2361
+ const validatedInput = validateToolInput(product_categoriesInputValidator, normalizedArgs);
2495
2362
  const args = validatedInput;
2363
+ const secretId = args._secretId;
2496
2364
  return await makeApiRequest('GET', '/product/categories', undefined, undefined, secretId);
2497
2365
  }
2498
2366
  catch (error) {
@@ -2526,15 +2394,14 @@ const product_searchInputJsonSchema = {
2526
2394
  },
2527
2395
  "required": []
2528
2396
  };
2529
- const product_searchInputShape = {
2397
+ const product_searchInputValidator = z.object({
2530
2398
  query: z.string().optional().describe("Campo del body: query")
2531
- };
2532
- const product_searchInputValidator = z.object(product_searchInputShape);
2399
+ });
2533
2400
  // Herramienta: product_search
2534
2401
  export const product_searchTool = {
2535
2402
  name: 'product_search',
2536
2403
  description: "---\\n\\n### Search Product\\n\\n---\\n\\n#### Description\\n\\nAllows searching for invoice agreements on the platform using specific terms. Send the request body with the necessary parameters in the format specified by the SearchBody object. The operation returns results that match the provided search terms.\\n\\n---\\n\\n#### Request Body\\n\\n- The request body should be in JSON format with the following parameter:\\n \\n - \\`query\\`: The search term.\\n \\n\\n---\\n\\n#### Response\\n\\nThe response will be a JSON object with the following properties:\\n\\n- \\`message\\`: A message related to the response.\\n \\n- \\`messageCode\\`: A code related to the message.\\n \\n- \\`data\\`: An array of objects containing product information with the following properties:\\n \\n - \\`id\\`: The ID of the product.\\n \\n - \\`name\\`: The name of the product.\\n \\n - \\`key\\`: The key of the product.\\n \\n - \\`productId\\`: The ID of the product.\\n \\n - \\`needsAmountInQuery:\\` Boolean value that indicates wheter the invoice value should be include in the query.\\n \\n - \\`form:\\` Array of objects that shows me the necessary references to consult the invoice. In case it arrives empty you must send a reference of preference.\n\nContexto: Endpoint: POST /product/search | Product > Search\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2537
- inputSchema: product_searchInputJsonSchema,
2404
+ inputSchema: product_searchInputValidator,
2538
2405
  jsonSchema: product_searchInputJsonSchema,
2539
2406
  endpoint: '/product/search',
2540
2407
  method: 'POST',
@@ -2543,12 +2410,9 @@ export const product_searchTool = {
2543
2410
  handler: async (rawArgs) => {
2544
2411
  try {
2545
2412
  const normalizedArgs = rawArgs ?? {};
2546
- // Extraer secretId del contexto (si viene del HTTP mode)
2547
- const secretId = normalizedArgs._secretId;
2548
- // Remover _secretId de los args antes de validar
2549
- const { _secretId, ...argsToValidate } = normalizedArgs;
2550
- const validatedInput = validateToolInput(product_searchInputValidator, argsToValidate);
2413
+ const validatedInput = validateToolInput(product_searchInputValidator, normalizedArgs);
2551
2414
  const args = validatedInput;
2415
+ const secretId = args._secretId;
2552
2416
  const bodyData = {};
2553
2417
  const queryValue = args.query !== undefined ? args.query : "enel";
2554
2418
  if (queryValue !== undefined)
@@ -2602,18 +2466,17 @@ const product_queryInputJsonSchema = {
2602
2466
  },
2603
2467
  "required": []
2604
2468
  };
2605
- const product_queryInputShape = {
2469
+ const product_queryInputValidator = z.object({
2606
2470
  productId: z.number().optional().describe("Campo del body: productId"),
2607
2471
  queryType: z.string().optional().describe("Campo del body: queryType"),
2608
2472
  ownAgreementId: z.any().optional().describe("Campo del body: ownAgreementId"),
2609
2473
  data: z.record(z.any()).optional().describe("Campo del body: data")
2610
- };
2611
- const product_queryInputValidator = z.object(product_queryInputShape);
2474
+ });
2612
2475
  // Herramienta: product_query
2613
2476
  export const product_queryTool = {
2614
2477
  name: 'product_query',
2615
2478
  description: "---\\n\\n### Description\\n\\nThis HTTP POST request is used to perform a custom query on the platform. The request body should be sent with the necessary parameters for the query in the format specified by the QueryBody object. The response will include the results of the query in case of success.\\n\\nIt is important that when the request fails with the errorCode \\\"product.errors.disabled\\\" or similar indicating that the product is inactive, the agreements are consulted again using the search.\\n\\n---\\n\\n### Request Body Schema\\n\\n- productId (number) \\`required\\`: Identifier of the product to perform the query.\\n \\n- queryType (string) \\`required\\`: Type of query to be performed.\\n \\n- ownAgreementId (null): Identifier of the own agreement, if applicable.\\n \\n- data (object) \\`required\\`: Additional data for the query.\\n \\n - reference (string) \\`required\\`: Reference for the query.\\n \\n\\n---\\n\\n### Response Body Schema\\n\\n- message (string): Response message.\\n \\n- messageCode (string): Code related to the response message.\\n \\n- data (object): Response data object.\\n \\n - payload (object): Payload data.\\n \\n - amount (number): Amount related to the product.\\n \\n - productId (number): ID of the product.\\n \\n - productName (string): Name of the product.\\n \\n - reference (string): Reference related to the query.\\n \\n - hashEchoData (string): Hash echo data.\\n \\n - hash (string): Hash value.\\n \\n - amountEditable (boolean): Indicates if the amount is editable.\n\nContexto: Endpoint: POST /product/query | Product > Query\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2616
- inputSchema: product_queryInputJsonSchema,
2479
+ inputSchema: product_queryInputValidator,
2617
2480
  jsonSchema: product_queryInputJsonSchema,
2618
2481
  endpoint: '/product/query',
2619
2482
  method: 'POST',
@@ -2622,12 +2485,9 @@ export const product_queryTool = {
2622
2485
  handler: async (rawArgs) => {
2623
2486
  try {
2624
2487
  const normalizedArgs = rawArgs ?? {};
2625
- // Extraer secretId del contexto (si viene del HTTP mode)
2626
- const secretId = normalizedArgs._secretId;
2627
- // Remover _secretId de los args antes de validar
2628
- const { _secretId, ...argsToValidate } = normalizedArgs;
2629
- const validatedInput = validateToolInput(product_queryInputValidator, argsToValidate);
2488
+ const validatedInput = validateToolInput(product_queryInputValidator, normalizedArgs);
2630
2489
  const args = validatedInput;
2490
+ const secretId = args._secretId;
2631
2491
  const bodyData = {};
2632
2492
  const productIdValue = args.productId !== undefined ? args.productId : 52204;
2633
2493
  if (productIdValue !== undefined)
@@ -2688,18 +2548,17 @@ const query_claro_telefoniaInputJsonSchema = {
2688
2548
  },
2689
2549
  "required": []
2690
2550
  };
2691
- const query_claro_telefoniaInputShape = {
2551
+ const query_claro_telefoniaInputValidator = z.object({
2692
2552
  productId: z.number().optional().describe("Campo del body: productId"),
2693
2553
  queryType: z.string().optional().describe("Campo del body: queryType"),
2694
2554
  ownAgreementId: z.any().optional().describe("Campo del body: ownAgreementId"),
2695
2555
  data: z.record(z.any()).optional().describe("Campo del body: data")
2696
- };
2697
- const query_claro_telefoniaInputValidator = z.object(query_claro_telefoniaInputShape);
2556
+ });
2698
2557
  // Herramienta: query_claro_telefonia
2699
2558
  export const query_claro_telefoniaTool = {
2700
2559
  name: 'query_claro_telefonia',
2701
2560
  description: "---\\n\\n### Product Query\\n\\n---\\n\\n#### Description\\n\\nAllows performing a custom query on the platform. Send the request body with the necessary parameters for the query in the format specified by the QueryBody object. The response will include the results of the query in case of success.\\n\\n---\\n\\n**Request Body:**\\n\\n- \\`productId\\` (integer, required): Identifier of the product to perform the query.\\n \\n- \\`queryType\\` (string, required): The type of query to be performed.\\n \\n- \\`ownAgreementId\\` (string, optional): Identifier of the own agreement, if applicable.\\n \\n- \\`data\\` (object, required): Additional data for the query in object format.\\n \\n - \\`reference\\` (string, required): The reference for the query data.\\n \\n\\n---\\n\\n**Response JSON Schema:**\\n\\n\\`\\`\\` json\\n{\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"message\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"messageCode\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"data\\\": {\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"payload\\\": {\\n \\\"type\\\": \\\"object\\\",\\n \\\"properties\\\": {\\n \\\"amount\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"productId\\\": {\\n \\\"type\\\": \\\"integer\\\"\\n },\\n \\\"productName\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"reference\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"hashEchoData\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"hash\\\": {\\n \\\"type\\\": \\\"string\\\"\\n },\\n \\\"amountEditable\\\": {\\n \\\"type\\\": \\\"boolean\\\"\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n \\`\\`\\`\n\nContexto: Endpoint: POST /product/query | Product > Query\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2702
- inputSchema: query_claro_telefoniaInputJsonSchema,
2561
+ inputSchema: query_claro_telefoniaInputValidator,
2703
2562
  jsonSchema: query_claro_telefoniaInputJsonSchema,
2704
2563
  endpoint: '/product/query',
2705
2564
  method: 'POST',
@@ -2708,12 +2567,9 @@ export const query_claro_telefoniaTool = {
2708
2567
  handler: async (rawArgs) => {
2709
2568
  try {
2710
2569
  const normalizedArgs = rawArgs ?? {};
2711
- // Extraer secretId del contexto (si viene del HTTP mode)
2712
- const secretId = normalizedArgs._secretId;
2713
- // Remover _secretId de los args antes de validar
2714
- const { _secretId, ...argsToValidate } = normalizedArgs;
2715
- const validatedInput = validateToolInput(query_claro_telefoniaInputValidator, argsToValidate);
2570
+ const validatedInput = validateToolInput(query_claro_telefoniaInputValidator, normalizedArgs);
2716
2571
  const args = validatedInput;
2572
+ const secretId = args._secretId;
2717
2573
  const bodyData = {};
2718
2574
  const productIdValue = args.productId !== undefined ? args.productId : 52683;
2719
2575
  if (productIdValue !== undefined)
@@ -2774,18 +2630,17 @@ const query_acueducto_de_bogotaInputJsonSchema = {
2774
2630
  },
2775
2631
  "required": []
2776
2632
  };
2777
- const query_acueducto_de_bogotaInputShape = {
2633
+ const query_acueducto_de_bogotaInputValidator = z.object({
2778
2634
  productId: z.number().optional().describe("Campo del body: productId"),
2779
2635
  queryType: z.string().optional().describe("Campo del body: queryType"),
2780
2636
  ownAgreementId: z.any().optional().describe("Campo del body: ownAgreementId"),
2781
2637
  data: z.record(z.any()).optional().describe("Campo del body: data")
2782
- };
2783
- const query_acueducto_de_bogotaInputValidator = z.object(query_acueducto_de_bogotaInputShape);
2638
+ });
2784
2639
  // Herramienta: query_acueducto_de_bogota
2785
2640
  export const query_acueducto_de_bogotaTool = {
2786
2641
  name: 'query_acueducto_de_bogota',
2787
2642
  description: "---\\n\\n### HTTP POST /product/query\\n\\n---\\n\\n#### Description\\n\\nAllows performing a custom query on the platform.\\n\\n---\\n\\n#### Request Body\\n\\n- raw (application/json)\\n \\n - productId (number, \\`required\\`): Identifier of the product to perform the query.\\n \\n - queryType (string. \\`required\\`): Additional data for the query in object format.\\n \\n - ownAgreementId (number, \\`optional\\`): Identifier of the own agreement, if applicable\\n \\n - data (object): Additional data for the query in object format.\\n \\n - reference (string): Reference data.\\n \\n\\n---\\n\\n#### Response\\n\\nThe response will include the results of the query in case of success.\\n\\n#### Response Schema\\n\\n- message (string): The message from the response.\\n \\n- messageCode (string): The code related to the message.\\n \\n- data (object)\\n \\n - payload (object)\\n \\n - amount (number): The amount related to the query result.\\n \\n - productId (number): The ID of the product related to the query result.\\n \\n - productName (string): The name of the product related to the query result.\\n \\n - reference (string): The reference related to the query result.\\n \\n - hashEchoData (string): The echoed hash data.\\n \\n - hash (string): The hash data.\\n \\n - amountEditable (boolean): Indicates whether the amount is editable or not.\\n \\n- code (string): The code from the response.\\n \\n- errorCode (string): The error code from the response.\\n \\n- statusCode (number): The status code from the response.\\n \\n- timestamp (number): The timestamp of the response.\n\nContexto: Endpoint: POST /product/query | Product > Query\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2788
- inputSchema: query_acueducto_de_bogotaInputJsonSchema,
2643
+ inputSchema: query_acueducto_de_bogotaInputValidator,
2789
2644
  jsonSchema: query_acueducto_de_bogotaInputJsonSchema,
2790
2645
  endpoint: '/product/query',
2791
2646
  method: 'POST',
@@ -2794,12 +2649,9 @@ export const query_acueducto_de_bogotaTool = {
2794
2649
  handler: async (rawArgs) => {
2795
2650
  try {
2796
2651
  const normalizedArgs = rawArgs ?? {};
2797
- // Extraer secretId del contexto (si viene del HTTP mode)
2798
- const secretId = normalizedArgs._secretId;
2799
- // Remover _secretId de los args antes de validar
2800
- const { _secretId, ...argsToValidate } = normalizedArgs;
2801
- const validatedInput = validateToolInput(query_acueducto_de_bogotaInputValidator, argsToValidate);
2652
+ const validatedInput = validateToolInput(query_acueducto_de_bogotaInputValidator, normalizedArgs);
2802
2653
  const args = validatedInput;
2654
+ const secretId = args._secretId;
2803
2655
  const bodyData = {};
2804
2656
  const productIdValue = args.productId !== undefined ? args.productId : 52204;
2805
2657
  if (productIdValue !== undefined)
@@ -2861,18 +2713,17 @@ const query_convenio_vendoInputJsonSchema = {
2861
2713
  },
2862
2714
  "required": []
2863
2715
  };
2864
- const query_convenio_vendoInputShape = {
2716
+ const query_convenio_vendoInputValidator = z.object({
2865
2717
  productId: z.number().optional().describe("Campo del body: productId"),
2866
2718
  queryType: z.string().optional().describe("Campo del body: queryType"),
2867
2719
  ownAgreementId: z.number().optional().describe("Campo del body: ownAgreementId"),
2868
2720
  data: z.record(z.any()).optional().describe("Campo del body: data")
2869
- };
2870
- const query_convenio_vendoInputValidator = z.object(query_convenio_vendoInputShape);
2721
+ });
2871
2722
  // Herramienta: query_convenio_vendo
2872
2723
  export const query_convenio_vendoTool = {
2873
2724
  name: 'query_convenio_vendo',
2874
2725
  description: "---\\n\\n### Description\\n\\nThis HTTP POST request is used to perform a custom query on the platform. The request body should be sent with the necessary parameters for the query in the format specified by the QueryBody object. The response will include the results of the query in case of success.\\n\\n---\\n\\n### Request Body Schema\\n\\n- productId (number) \\`required\\`: Identifier of the product to perform the query.\\n \\n- queryType (string) \\`required\\`: Type of query to be performed.\\n \\n- ownAgreementId (null): Identifier of the own agreement, if applicable.\\n \\n- data (object) \\`required\\`: Additional data for the query.\\n \\n - reference (string) \\`required\\`: Reference for the query.\\n \\n\\n---\\n\\n### Response Body Schema\\n\\n- message (string): Response message.\\n \\n- messageCode (string): Code related to the response message.\\n \\n- data (object): Response data object.\\n \\n - payload (object): Payload data.\\n \\n - amount (number): Amount related to the product.\\n \\n - productId (number): ID of the product.\\n \\n - productName (string): Name of the product.\\n \\n - reference (string): Reference related to the query.\\n \\n - hashEchoData (string): Hash echo data.\\n \\n - hash (string): Hash value.\\n \\n - amountEditable (boolean): Indicates if the amount is editable.\n\nContexto: Endpoint: POST /product/query | Product > Query\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2875
- inputSchema: query_convenio_vendoInputJsonSchema,
2726
+ inputSchema: query_convenio_vendoInputValidator,
2876
2727
  jsonSchema: query_convenio_vendoInputJsonSchema,
2877
2728
  endpoint: '/product/query',
2878
2729
  method: 'POST',
@@ -2881,12 +2732,9 @@ export const query_convenio_vendoTool = {
2881
2732
  handler: async (rawArgs) => {
2882
2733
  try {
2883
2734
  const normalizedArgs = rawArgs ?? {};
2884
- // Extraer secretId del contexto (si viene del HTTP mode)
2885
- const secretId = normalizedArgs._secretId;
2886
- // Remover _secretId de los args antes de validar
2887
- const { _secretId, ...argsToValidate } = normalizedArgs;
2888
- const validatedInput = validateToolInput(query_convenio_vendoInputValidator, argsToValidate);
2735
+ const validatedInput = validateToolInput(query_convenio_vendoInputValidator, normalizedArgs);
2889
2736
  const args = validatedInput;
2737
+ const secretId = args._secretId;
2890
2738
  const bodyData = {};
2891
2739
  const productIdValue = args.productId !== undefined ? args.productId : 1100000;
2892
2740
  if (productIdValue !== undefined)
@@ -2932,15 +2780,14 @@ const product_act_val_pro_stateInputJsonSchema = {
2932
2780
  },
2933
2781
  "required": []
2934
2782
  };
2935
- const product_act_val_pro_stateInputShape = {
2783
+ const product_act_val_pro_stateInputValidator = z.object({
2936
2784
  body: z.string().optional().describe("Body del request")
2937
- };
2938
- const product_act_val_pro_stateInputValidator = z.object(product_act_val_pro_stateInputShape);
2785
+ });
2939
2786
  // Herramienta: product_act_val_pro_state
2940
2787
  export const product_act_val_pro_stateTool = {
2941
2788
  name: 'product_act_val_pro_state',
2942
2789
  description: "---\\n\\n### Description\\n\\nAllows users to verify the activation status of a special product. The user making the request can determine the stage of their special product activation request. Below is a list of status codes along with their corresponding messages, indicating whether the request is pending review, approved, rejected, confirmed, managed by the affiliations area, or if the linking process for the product has already started. This information is useful for keeping the user informed about the progress of their request and for them to take necessary actions based on the current process status.\\n\\nThe following is a list of product status codes and their messages.\\n\\n\\`\\`\\`\\n | id | name | message |\\n |----|------------|-------------------------------------------------------------------------------------------------------|\\n | P | PENDING | Your application is pending review |\\n | A | APPROVED | Your application has been approved, we are waiting for the supplier to review your documents |\\n | R | REJECTED | Your application has been rejected, please contact your advisor. |\\n | M | MANAGEMENT | Your application is being handled by the linking area. |\\n | C | CONFIRM | Your application is confirmed, you can now sell your product. |\\n | S | STARTED | You have already tried to complete the linking process for this product, continue filling in the data |\\n\\n \\`\\`\\`\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`categoryId\\`: Number representing the category identifier (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`status\\`: String representing the status\\n \\n - \\`state\\`: Boolean indicating the state\\n \\n - \\`message\\`: String containing an additional message\\n \\n - \\`stateCode\\`: String representing a state code\n\nContexto: Endpoint: POST /product/activation/validate-product-state | Product > Activation > Validate product state\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2943
- inputSchema: product_act_val_pro_stateInputJsonSchema,
2790
+ inputSchema: product_act_val_pro_stateInputValidator,
2944
2791
  jsonSchema: product_act_val_pro_stateInputJsonSchema,
2945
2792
  endpoint: '/product/activation/validate-product-state',
2946
2793
  method: 'POST',
@@ -2949,12 +2796,9 @@ export const product_act_val_pro_stateTool = {
2949
2796
  handler: async (rawArgs) => {
2950
2797
  try {
2951
2798
  const normalizedArgs = rawArgs ?? {};
2952
- // Extraer secretId del contexto (si viene del HTTP mode)
2953
- const secretId = normalizedArgs._secretId;
2954
- // Remover _secretId de los args antes de validar
2955
- const { _secretId, ...argsToValidate } = normalizedArgs;
2956
- const validatedInput = validateToolInput(product_act_val_pro_stateInputValidator, argsToValidate);
2799
+ const validatedInput = validateToolInput(product_act_val_pro_stateInputValidator, normalizedArgs);
2957
2800
  const args = validatedInput;
2801
+ const secretId = args._secretId;
2958
2802
  const bodyData = args.body || {};
2959
2803
  return await makeApiRequest('POST', '/product/activation/validate-product-state', undefined, undefined, secretId);
2960
2804
  }
@@ -2988,15 +2832,14 @@ const product_act_get_pro_requirementsInputJsonSchema = {
2988
2832
  },
2989
2833
  "required": []
2990
2834
  };
2991
- const product_act_get_pro_requirementsInputShape = {
2835
+ const product_act_get_pro_requirementsInputValidator = z.object({
2992
2836
  body: z.string().optional().describe("Body del request")
2993
- };
2994
- const product_act_get_pro_requirementsInputValidator = z.object(product_act_get_pro_requirementsInputShape);
2837
+ });
2995
2838
  // Herramienta: product_act_get_pro_requirements
2996
2839
  export const product_act_get_pro_requirementsTool = {
2997
2840
  name: 'product_act_get_pro_requirements',
2998
2841
  description: "---\\n\\n## Description\\n\\nAllows retrieving all the necessary and mandatory requirements to complete the activation process of a special product. The requirements are divided into categories, each with a specific description. Each category contains a list of detailed requirements, such as personal data, merchant information, and additional documents. Requirements may include document uploads, information validation, or contract signing. These requirements are essential for the user to access the special product, and this method provides the necessary information for the user to successfully complete the activation process.\\n\\nIn the response for each requirement, you\\'ll find the \\'type\\' attribute. This attribute determines the type of data required to construct the form that the user must complete. Some common data types include:\\n\\n\\`\\`\\`\\n | type | description |\\n |-----------------------|-----------------------------------------------------------------------------------------------------|\\n | text | For entering text information, such as names, surnames, etc. |\\n | file | Allows uploading files, such as images or documents. |\\n | select | Presents options for the user to choose from. |\\n | downloadAndUpload | Provides a link to download one file and then upload another related file. |\\n | securityQuestions | Provides security questions for authentication. |\\n | checkboxLink | For accepting terms and conditions through a verification link. |\\n | loanApplicationPolicy | Information and acceptance of the loan application policy. |\\n | location | Allows the user to enter or select their location. |\\n | metamap | Redirects the user to the Metamap process for identity validation. |\\n | bankAccount | Provides the basic structure to build the form for a banking process. |\\n | | It includes selecting the bank entity, entering the account number, and selecting the account type. |\\n\\n \\`\\`\\`\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`categoryId\\`: Number representing the category identifier (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`id\\`: Number representing the identifier\\n \\n - \\`name\\`: String representing the name\\n \\n - \\`description\\`: String containing the description\\n \\n - \\`requirements\\`: Array of requirement objects\\n \\n - \\`id\\`: Number representing the requirement identifier\\n \\n - \\`name\\`: String representing the requirement name\\n \\n - \\`description\\`: String containing the requirement description\\n \\n - \\`form\\`: Object containing form data\n\nContexto: Endpoint: POST /product/activation/get-process-requirements | Product > Activation > Get process requirements\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
2999
- inputSchema: product_act_get_pro_requirementsInputJsonSchema,
2842
+ inputSchema: product_act_get_pro_requirementsInputValidator,
3000
2843
  jsonSchema: product_act_get_pro_requirementsInputJsonSchema,
3001
2844
  endpoint: '/product/activation/get-process-requirements',
3002
2845
  method: 'POST',
@@ -3005,12 +2848,9 @@ export const product_act_get_pro_requirementsTool = {
3005
2848
  handler: async (rawArgs) => {
3006
2849
  try {
3007
2850
  const normalizedArgs = rawArgs ?? {};
3008
- // Extraer secretId del contexto (si viene del HTTP mode)
3009
- const secretId = normalizedArgs._secretId;
3010
- // Remover _secretId de los args antes de validar
3011
- const { _secretId, ...argsToValidate } = normalizedArgs;
3012
- const validatedInput = validateToolInput(product_act_get_pro_requirementsInputValidator, argsToValidate);
2851
+ const validatedInput = validateToolInput(product_act_get_pro_requirementsInputValidator, normalizedArgs);
3013
2852
  const args = validatedInput;
2853
+ const secretId = args._secretId;
3014
2854
  const bodyData = args.body || {};
3015
2855
  return await makeApiRequest('POST', '/product/activation/get-process-requirements', undefined, undefined, secretId);
3016
2856
  }
@@ -3061,15 +2901,14 @@ const product_activation_updateInputJsonSchema = {
3061
2901
  },
3062
2902
  "required": []
3063
2903
  };
3064
- const product_activation_updateInputShape = {
2904
+ const product_activation_updateInputValidator = z.object({
3065
2905
  requirements: z.record(z.any()).optional().describe("Campo del body: requirements")
3066
- };
3067
- const product_activation_updateInputValidator = z.object(product_activation_updateInputShape);
2906
+ });
3068
2907
  // Herramienta: product_activation_update
3069
2908
  export const product_activation_updateTool = {
3070
2909
  name: 'product_activation_update',
3071
2910
  description: "---\\n\\n## Description\\n\\nAllows updating the information of the requirements completed by the user for the activation process of a special product. Users can modify the information provided in each of the requirements to ensure it is up-to-date and accurate. Updating the information of the requirements is essential to progress in the activation process of the special product. Once the information is updated, it is evaluated again to determine if all necessary requirements are met to continue or complete the activation process.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`requirements\\`: Object containing requirement data (required)\\n \\n - Each key is a string representing a requirement ID\\n \\n - Each value is an object with arbitrary properties\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`errors\\`: Array of error objects\\n \\n - \\`id\\`: Number representing the error identifier\\n \\n - \\`message\\`: String containing the error message\n\nContexto: Endpoint: POST /product/activation/update | Product > Activation > Update\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3072
- inputSchema: product_activation_updateInputJsonSchema,
2911
+ inputSchema: product_activation_updateInputValidator,
3073
2912
  jsonSchema: product_activation_updateInputJsonSchema,
3074
2913
  endpoint: '/product/activation/update',
3075
2914
  method: 'POST',
@@ -3078,12 +2917,9 @@ export const product_activation_updateTool = {
3078
2917
  handler: async (rawArgs) => {
3079
2918
  try {
3080
2919
  const normalizedArgs = rawArgs ?? {};
3081
- // Extraer secretId del contexto (si viene del HTTP mode)
3082
- const secretId = normalizedArgs._secretId;
3083
- // Remover _secretId de los args antes de validar
3084
- const { _secretId, ...argsToValidate } = normalizedArgs;
3085
- const validatedInput = validateToolInput(product_activation_updateInputValidator, argsToValidate);
2920
+ const validatedInput = validateToolInput(product_activation_updateInputValidator, normalizedArgs);
3086
2921
  const args = validatedInput;
2922
+ const secretId = args._secretId;
3087
2923
  const bodyData = {};
3088
2924
  const requirementsValue = args.requirements !== undefined ? args.requirements : { "1": { "name": "Leonardo" }, "9": { "lastName": "Baquerp" }, "10": { "cellphone": "3015874029" }, "46": { "fundsOrigin": true }, "48": { "checkDataTreatment": "true" } };
3089
2925
  if (requirementsValue !== undefined)
@@ -3115,13 +2951,12 @@ const product_activation_upload_fileInputJsonSchema = {
3115
2951
  "properties": {},
3116
2952
  "required": []
3117
2953
  };
3118
- const product_activation_upload_fileInputShape = {};
3119
- const product_activation_upload_fileInputValidator = z.object(product_activation_upload_fileInputShape);
2954
+ const product_activation_upload_fileInputValidator = z.object({});
3120
2955
  // Herramienta: product_activation_upload_file
3121
2956
  export const product_activation_upload_fileTool = {
3122
2957
  name: 'product_activation_upload_file',
3123
2958
  description: "---\\n\\n### Description\\n\\nAllows users to upload files necessary to meet the requirements of the activation process for a special product. The uploaded files can be documents in PDF format, images in JPG, JPEG, or PNG formats, or Word documents in DOC or DOCX format. Before uploading a file, validations are performed to ensure that it meets the established type and size requirements. Once uploaded, the file can be subsequently validated as part of the special product activation process. If the file meets the requirements, it will contribute to the progress of the process; otherwise, it will be indicated as invalid, and a new upload will be requested.\\n\\n---\\n\\n### Response schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`errors\\`: Array of error objects\\n \\n - \\`id\\`: Number representing the error identifier\\n \\n - \\`message\\`: String containing the error message\n\nContexto: Endpoint: POST /product/activation/upload/file | Product > Activation > Upload > File\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3124
- inputSchema: product_activation_upload_fileInputJsonSchema,
2959
+ inputSchema: product_activation_upload_fileInputValidator,
3125
2960
  jsonSchema: product_activation_upload_fileInputJsonSchema,
3126
2961
  endpoint: '/product/activation/upload/file',
3127
2962
  method: 'POST',
@@ -3130,12 +2965,9 @@ export const product_activation_upload_fileTool = {
3130
2965
  handler: async (rawArgs) => {
3131
2966
  try {
3132
2967
  const normalizedArgs = rawArgs ?? {};
3133
- // Extraer secretId del contexto (si viene del HTTP mode)
3134
- const secretId = normalizedArgs._secretId;
3135
- // Remover _secretId de los args antes de validar
3136
- const { _secretId, ...argsToValidate } = normalizedArgs;
3137
- const validatedInput = validateToolInput(product_activation_upload_fileInputValidator, argsToValidate);
2968
+ const validatedInput = validateToolInput(product_activation_upload_fileInputValidator, normalizedArgs);
3138
2969
  const args = validatedInput;
2970
+ const secretId = args._secretId;
3139
2971
  const bodyData = args.body || {};
3140
2972
  return await makeApiRequest('POST', '/product/activation/upload/file', undefined, undefined, secretId);
3141
2973
  }
@@ -3186,18 +3018,17 @@ const queryInputJsonSchema = {
3186
3018
  },
3187
3019
  "required": []
3188
3020
  };
3189
- const queryInputShape = {
3021
+ const queryInputValidator = z.object({
3190
3022
  productId: z.number().optional().describe("Campo del body: productId"),
3191
3023
  queryType: z.string().optional().describe("Campo del body: queryType"),
3192
3024
  ownAgreementId: z.any().optional().describe("Campo del body: ownAgreementId"),
3193
3025
  data: z.record(z.any()).optional().describe("Campo del body: data")
3194
- };
3195
- const queryInputValidator = z.object(queryInputShape);
3026
+ });
3196
3027
  // Herramienta: query
3197
3028
  export const queryTool = {
3198
3029
  name: 'query',
3199
3030
  description: "POST /product/query\n\nContexto: Endpoint: POST /product/query | Product > Query\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3200
- inputSchema: queryInputJsonSchema,
3031
+ inputSchema: queryInputValidator,
3201
3032
  jsonSchema: queryInputJsonSchema,
3202
3033
  endpoint: '/product/query',
3203
3034
  method: 'POST',
@@ -3206,12 +3037,9 @@ export const queryTool = {
3206
3037
  handler: async (rawArgs) => {
3207
3038
  try {
3208
3039
  const normalizedArgs = rawArgs ?? {};
3209
- // Extraer secretId del contexto (si viene del HTTP mode)
3210
- const secretId = normalizedArgs._secretId;
3211
- // Remover _secretId de los args antes de validar
3212
- const { _secretId, ...argsToValidate } = normalizedArgs;
3213
- const validatedInput = validateToolInput(queryInputValidator, argsToValidate);
3040
+ const validatedInput = validateToolInput(queryInputValidator, normalizedArgs);
3214
3041
  const args = validatedInput;
3042
+ const secretId = args._secretId;
3215
3043
  const bodyData = {};
3216
3044
  const productIdValue = args.productId !== undefined ? args.productId : 1000075;
3217
3045
  if (productIdValue !== undefined)
@@ -3272,18 +3100,17 @@ const sells_sellInputJsonSchema = {
3272
3100
  },
3273
3101
  "required": []
3274
3102
  };
3275
- const sells_sellInputShape = {
3103
+ const sells_sellInputValidator = z.object({
3276
3104
  productId: z.number().optional().describe("Campo del body: productId"),
3277
3105
  queryType: z.string().optional().describe("Campo del body: queryType"),
3278
3106
  ownAgreementId: z.any().optional().describe("Campo del body: ownAgreementId"),
3279
3107
  data: z.record(z.any()).optional().describe("Campo del body: data")
3280
- };
3281
- const sells_sellInputValidator = z.object(sells_sellInputShape);
3108
+ });
3282
3109
  // Herramienta: sells_sell
3283
3110
  export const sells_sellTool = {
3284
3111
  name: 'sells_sell',
3285
3112
  description: "---\\n\\n## Description\\n\\nAllows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\n\\n**Note**: To make this request in the case of selling invoices, we need the hash and hashEchoData provided by the query response for the reference.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`amount\\`: Number representing the amount of the payment (required)\\n \\n- \\`sellType\\`: String indicating the type of the sell operation (required)\\n \\n- \\`hash\\`: String containing the hash value for the operation (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`reference\\`: String containing the reference number for the payment (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number associated with the payment (required)\\n \\n - \\`hashEchoData\\`: String containing the hash echo data for the operation (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3286
- inputSchema: sells_sellInputJsonSchema,
3113
+ inputSchema: sells_sellInputValidator,
3287
3114
  jsonSchema: sells_sellInputJsonSchema,
3288
3115
  endpoint: '/sells/sell',
3289
3116
  method: 'POST',
@@ -3292,12 +3119,9 @@ export const sells_sellTool = {
3292
3119
  handler: async (rawArgs) => {
3293
3120
  try {
3294
3121
  const normalizedArgs = rawArgs ?? {};
3295
- // Extraer secretId del contexto (si viene del HTTP mode)
3296
- const secretId = normalizedArgs._secretId;
3297
- // Remover _secretId de los args antes de validar
3298
- const { _secretId, ...argsToValidate } = normalizedArgs;
3299
- const validatedInput = validateToolInput(sells_sellInputValidator, argsToValidate);
3122
+ const validatedInput = validateToolInput(sells_sellInputValidator, normalizedArgs);
3300
3123
  const args = validatedInput;
3124
+ const secretId = args._secretId;
3301
3125
  const bodyData = {};
3302
3126
  const productIdValue = args.productId !== undefined ? args.productId : 1002657;
3303
3127
  if (productIdValue !== undefined)
@@ -3367,20 +3191,19 @@ const query_axaInputJsonSchema = {
3367
3191
  },
3368
3192
  "required": []
3369
3193
  };
3370
- const query_axaInputShape = {
3194
+ const query_axaInputValidator = z.object({
3371
3195
  queryType: z.string().optional().describe("Campo del body: queryType"),
3372
3196
  productId: z.number().optional().describe("Campo del body: productId"),
3373
3197
  docType: z.string().optional().describe("Campo del body: docType"),
3374
3198
  document: z.string().optional().describe("Campo del body: document"),
3375
3199
  cellphone: z.string().optional().describe("Campo del body: cellphone"),
3376
3200
  license: z.string().optional().describe("Campo del body: license")
3377
- };
3378
- const query_axaInputValidator = z.object(query_axaInputShape);
3201
+ });
3379
3202
  // Herramienta: query_axa
3380
3203
  export const query_axaTool = {
3381
3204
  name: 'query_axa',
3382
3205
  description: "Here you will find all the endpoints related to the sale of SOAT AXA COLPATRIA.\\n\\n**Note:** This product includes an administrative cost for each sale made. For more information, please contact your commercial agent.\\n\\n**For AXA service testing:** It is required to indicate in the documentation that a test environment must be requested from the commercial agent at least 15 days in advance.\\n\\n## Timeout Configuration\\n\\nThe following timeout values are configured for AXA provider operations:\\n\\n| Operation | Min (seconds) | Max (seconds) | Timeout (seconds) |\\n| --- | --- | --- | --- |\\n| AXA | 0 | 15 | 50 |\\n\\n**Important:** These timeout values should be considered when implementing integrations with AXA COLPATRIA services to ensure proper error handling and user experience.\\n\\n \\`Allows performing a custom query on the platform. Send the request body with the necessary parameters for the query in the format specified by the QueryBody object. The response will include the results of the query in case of success.\\`\\n\\nBelow is an example of a request for vehicle SOAT insurance. The following necessary data must be provided: productId (in this case, 91), queryType (in this case SOATData), type of document, document number, vehicle plate, and phone number.\\n\\n**Note:**\\n\\nIt is important to remember that in the response of this product, several of its data points are crucial as they must be sent in the service that performs the sale (/sells/sell). The necessary data are as follows: amount, cifrateAmount, and hashEchoData.\\n\\nBelow are the valid document types for the consultation process:\\n\\n- CC: Cédula de ciudadanía\\n \\n- CE: Cédula de extranjería\\n \\n- NIT: Número de identificación tributaria\\n \\n- PS: Pasaporte\\n \\n- RC: Registro civil\\n \\n- TI: Tarjeta de identidad\\n \\n- CD: Carné diplomático\\n \\n\\n### Payload for Custom Query\\n\\nThe following payload is required for performing a custom query:\\n\\n- \\`queryType\\`: (string, required) Specifies the type of query to be performed.\\n \\n- \\`productId\\`: (number, required) Identifies the product for which the query is being made.\\n \\n- \\`docType\\`: (string, required) Specifies the type of document being used for identification.\\n \\n- \\`document\\`: (string, required) The document number for identification purposes.\\n \\n- \\`cellphone\\`: (string, required) The phone number associated with the query.\\n \\n- \\`license\\`: (string, optional) The license plate of the vehicle.\n\nContexto: Endpoint: POST /product/query | Product > Query\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3383
- inputSchema: query_axaInputJsonSchema,
3206
+ inputSchema: query_axaInputValidator,
3384
3207
  jsonSchema: query_axaInputJsonSchema,
3385
3208
  endpoint: '/product/query',
3386
3209
  method: 'POST',
@@ -3389,12 +3212,9 @@ export const query_axaTool = {
3389
3212
  handler: async (rawArgs) => {
3390
3213
  try {
3391
3214
  const normalizedArgs = rawArgs ?? {};
3392
- // Extraer secretId del contexto (si viene del HTTP mode)
3393
- const secretId = normalizedArgs._secretId;
3394
- // Remover _secretId de los args antes de validar
3395
- const { _secretId, ...argsToValidate } = normalizedArgs;
3396
- const validatedInput = validateToolInput(query_axaInputValidator, argsToValidate);
3215
+ const validatedInput = validateToolInput(query_axaInputValidator, normalizedArgs);
3397
3216
  const args = validatedInput;
3217
+ const secretId = args._secretId;
3398
3218
  const bodyData = {};
3399
3219
  const queryTypeValue = args.queryType !== undefined ? args.queryType : "SOATData";
3400
3220
  if (queryTypeValue !== undefined)
@@ -3484,17 +3304,16 @@ const sell_axaInputJsonSchema = {
3484
3304
  },
3485
3305
  "required": []
3486
3306
  };
3487
- const sell_axaInputShape = {
3307
+ const sell_axaInputValidator = z.object({
3488
3308
  productId: z.number().optional().describe("Campo del body: productId"),
3489
3309
  data: z.record(z.any()).optional().describe("Campo del body: data"),
3490
3310
  amount: z.number().optional().describe("Campo del body: amount")
3491
- };
3492
- const sell_axaInputValidator = z.object(sell_axaInputShape);
3311
+ });
3493
3312
  // Herramienta: sell_axa
3494
3313
  export const sell_axaTool = {
3495
3314
  name: 'sell_axa',
3496
3315
  description: "Here you will find all the endpoints related to the sale of SOAT AXA COLPATRIA.\\n\\n**Note:** This product includes an administrative cost for each sale made. For more information, please contact your commercial agent.\\n\\n**For AXA service testing:** It is required to indicate in the documentation that a test environment must be requested from the commercial agent at least 15 days in advance.\\n\\n## Timeout Configuration\\n\\nThe following timeout values are configured for AXA provider operations:\\n\\n| Operation | Min (seconds) | Max (seconds) | Timeout (seconds) |\\n| --- | --- | --- | --- |\\n| AXA | 0 | 15 | 50 |\\n\\n**Important:** These timeout values should be considered when implementing integrations with AXA COLPATRIA services to ensure proper error handling and user experience.\\n\\n \\`Allows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\`\\n\\nExample of a payment request for the AXA Colpatria product. The necessary information is provided, such as the productId (in this case, 91) and other relevant data, all attributes are mandatory.\\n\\n**Note:** \\nIn order to sell this product, it is important to bear in mind that it is part of a special product. Therefore, before being able to use it, it is necessary to complete the entire product activation process. This can be achieved by using the following services: \\`/product/activation/....\\` \\nIt is important to remember that to perform a sale using this service, several crucial data points must be sent. Some of these data points are obtained from the \\`/products/query\\` service. The necessary data are as follows: \\`amount\\`, \\`cifrateAmount\\`, and \\`hashEchoData\\`.\\n\\n### Payload for Custom Sell\\n\\nThe following payload is required for performing a custom sell:\\n\\n- \\`productId\\`: (number, required) Identifies the product for which the sale is being made.\\n \\n- \\`data\\`: (object, required) Contains specific sale data.\\n \\n - \\`terminal\\`:\\n \\n - \\`id\\`: A unique identifier for the merchant (POS) that is generating the SOAT sale transaction for the API client. If there is no merchant under the API client\\'s network, the same merchant ID assigned by Refacil should be sent in the \\`id\\` field.\\n \\n - \\`amount\\`: (object, required) Details about the sale amount.\\n \\n - \\`amount\\`: (number, required) Total amount of the sale.\\n \\n - \\`runt\\`: (number) Value for RUNT.\\n \\n - \\`prima\\`: (number) Prima value.\\n \\n - \\`contributions\\`: (number) Contributions.\\n \\n - \\`valueDiscountLaw\\`: (number) Value of law discount.\\n \\n - \\`valueDiscountTotal\\`: (number) Total discount value.\\n \\n - \\`valuePayDiscount\\`: (number) Amount to pay with discount.\\n \\n - \\`amountAdministrative\\`: (number) Administrative amount.\\n \\n - \\`amountTotal\\`: (number) Total amount.\\n \\n - \\`dateStart\\`: (string) Start date.\\n \\n - \\`dateEnd\\`: (string) End date.\\n \\n - \\`discount\\`: (number) Discount.\\n \\n - \\`license\\`: (string) Vehicle license plate.\\n \\n - \\`hashEchoData\\`: (string) Hash data.\\n \\n - \\`cifrateAmount\\`: (object) Encrypted amount.\\n \\n - \\`hash\\`: (string) Hash.\\n \\n - \\`hashEchoData\\`: (string) Hash data.\\n \\n - \\`userDetail\\`: (object, required) User details.\\n \\n - \\`cellphone\\`: (string, required) User\\'s cellphone number.\\n \\n - \\`email\\`: (string) User\\'s email.\\n \\n - \\`document\\`: (string, required) User\\'s document number.\\n \\n - \\`docType\\`: (string, required) Type of user\\'s document.\\n \\n- \\`amount\\`: (number, required) Total amount of the sale.\\n \\n- \\`moveTmpBalance\\`: (boolean) Indicates whether to move temporary balance.\\n \\n\\nAfter the sale has been successfully completed, the response will follow a structure similar to the following. In this response, important information is provided, such as the balance of the main wallet and the balance of the profit wallet. Additionally, within the \\'billData\\' object, you will find the fundamental information necessary to generate the sales receipt that will be delivered to the end customer. It is important to note that this step is mandatory, as it is a direct requirement from AXA Colpatria.\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3497
- inputSchema: sell_axaInputJsonSchema,
3316
+ inputSchema: sell_axaInputValidator,
3498
3317
  jsonSchema: sell_axaInputJsonSchema,
3499
3318
  endpoint: '/sells/sell',
3500
3319
  method: 'POST',
@@ -3503,12 +3322,9 @@ export const sell_axaTool = {
3503
3322
  handler: async (rawArgs) => {
3504
3323
  try {
3505
3324
  const normalizedArgs = rawArgs ?? {};
3506
- // Extraer secretId del contexto (si viene del HTTP mode)
3507
- const secretId = normalizedArgs._secretId;
3508
- // Remover _secretId de los args antes de validar
3509
- const { _secretId, ...argsToValidate } = normalizedArgs;
3510
- const validatedInput = validateToolInput(sell_axaInputValidator, argsToValidate);
3325
+ const validatedInput = validateToolInput(sell_axaInputValidator, normalizedArgs);
3511
3326
  const args = validatedInput;
3327
+ const secretId = args._secretId;
3512
3328
  const bodyData = {};
3513
3329
  const productIdValue = args.productId !== undefined ? args.productId : 91;
3514
3330
  if (productIdValue !== undefined)
@@ -3572,19 +3388,18 @@ const query_quoteInputJsonSchema = {
3572
3388
  },
3573
3389
  "required": []
3574
3390
  };
3575
- const query_quoteInputShape = {
3391
+ const query_quoteInputValidator = z.object({
3576
3392
  productId: z.number().optional().describe("Campo del body: productId"),
3577
3393
  documentType: z.number().optional().describe("Campo del body: documentType"),
3578
3394
  document: z.string().optional().describe("Campo del body: document"),
3579
3395
  queryType: z.string().optional().describe("Campo del body: queryType"),
3580
3396
  license: z.string().optional().describe("Campo del body: license")
3581
- };
3582
- const query_quoteInputValidator = z.object(query_quoteInputShape);
3397
+ });
3583
3398
  // Herramienta: query_quote
3584
3399
  export const query_quoteTool = {
3585
3400
  name: 'query_quote',
3586
3401
  description: "Here you will find all the endpoints related to the sale of SOAT PREVISORA.\\n\\n## Timeout Configuration\\n\\nThe following timeout values are configured for PREVISORA provider operations:\\n\\n| Provider | Min (seconds) | Max (seconds) | Timeout (seconds) |\\n| --- | --- | --- | --- |\\n| PREVISORA | 0 | 300 | 300 |\\n\\n**Important:**\\n\\nBased on the current operation of the insurance company **PREVISORA**, the waiting time (timeout) for sales processing has been adjusted to **5 minutes (300 seconds)**. This change addresses the need to ensure that all transactions are processed correctly, even in scenarios where delays may occur.\\n\\nIn addition, the API guarantees up to **2 automatic retries** in case a timeout occurs during processing. Although this behavior is not common in the API solution, it has been implemented to ensure the continuity and success of sales operations.\\n\\nIt is recommended to take this configuration into account when implementing integrations with PREVISORA services, in order to ensure proper error handling and an optimal user experience.\\n\\n## Test Environment\\n\\n### Available Test Scenarios\\n\\nTo test error scenarios and different response types, the following vehicle license plates are available:\\n\\n#### Error Handling\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| All | TIM001 | Timeout | Simulates timeout scenario |\\n| All | ERR400 | System Error | Ocurrió un error inesperado. Consulte con el Administrador del sistema |\\n| All | ERR401 | Authentication Error | No ha sido posible autenticarse, el token es incorrecto o el usuario no se encuentra activo |\\n\\n#### Quote Operations\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| Quote | ABC123 | Success Standard | Success: Vehículo, camioneta, bus |\\n| Quote | ABC124 | Success with Discount | Standard vehicle with discount applied |\\n| Quote | ABC125 | Electric Vehicle | Electric car pricing |\\n| Quote | ABC126 | Law Discount | Legal discount application |\\n| Quote | ABC127 | Transit Authority Error | La placa no está asociada a algún organismo de tránsito |\\n\\n#### Issue Operations\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| Issue | ABC123 | Success Standard | Success: Vehículo, camioneta, bus |\\n| Issue | ABC124 | Success with Discount | Successfully issued with discount |\\n\\n#### Consult Operations\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| Consult | ABC123 | Issued | Policy has been issued |\\n| Consult | ABC124 | Not Issued | Policy has not been issued |\\n\\n### Usage Notes\\n\\n- **Test Plates**: Use the provided test plates to simulate different scenarios during development and testing\\n \\n- **Error Simulation**: TIM001 and ERR-prefixed plates are specifically designed to test error handling\\n \\n- **Success Flows**: ABC123 generally represents successful operations across different methods\\n \\n- **Edge Cases**: ABC124-ABC127 cover various business scenarios including discounts and restrictions\\n \\n- There is a complementary file containing additional test scenarios not listed in this documentation. You can access it here: ⁠[Additional Test Scenarios Folder](https://refacil01-my.sharepoint.com/:f:/g/personal/w_sarmiento_refacil_com/EnvRlRK92WlHuuBfU6Zyom0BvCFmPG_OzhU-te-6ZQ0jMw)\\n\\n \\`Allows performing a custom query on the platform. Send the request body with the necessary parameters for the query in the format specified by the QueryBody object. The response will include the results of the query in case of success.\\`\\n\\nThe following is an example of a SOAT insurance request for a vehicle. The following required data must be provided: productId (in this case, 1014006), queryType (in this case SOATFullData), document number and vehicle registration number.\\n\\n**Note:**\\n\\nIt is important to remember that in the response of this product, several of its data points are crucial as they must be sent in the service that performs the sale (/sells/sell). The necessary data are as follows: amount, vehDetail, and userDetail.\\n\\n### Payload for Custom Query\\n\\nThe following payload is required for performing a custom query:\\n\\n- \\`productId\\`: (number, required) Identifies the product for which the query is being made.\\n\\n- \\`documentType\\`: (number, required) Specifies the type of document. Allowed values:\\n \\n - \\`1\\`: CEDULA DE CIUDADANIA\\n - \\`2\\`: CEDULA DE EXTRANJERIA\\n - \\`3\\`: NIT\\n - \\`4\\`: TARJETA DE IDENTIDAD\\n \\n- \\`document\\`: (string, required) The document number for identification purposes.\\n \\n Length validation rules based on \\`documentType\\`:\\n \\n - **For \\`documentType = 1\\` (CEDULA DE CIUDADANIA)**:\\n - Minimum length: 7 numeric characters\\n - Maximum length: 10 numeric characters\\n \\n - **For \\`documentType = 2\\` (CEDULA DE EXTRANJERIA)**:\\n - Minimum length: 5 characters (alphanumeric allowed)\\n - Maximum length: 15 characters (alphanumeric allowed)\\n \\n - **For \\`documentType = 3\\` (NIT)**:\\n - Minimum length: 6 numeric characters (includes verification digit – VD)\\n - Maximum length: 11 numeric characters (includes VD)\\n - Must be sent **without hyphen (-)** and must include the verification digit.\\n \\n Additional rules based on length:\\n - If length is 11, must start with \\\"1\\\" → (new CC + VD)\\n - If length is 10, must start with \\\"8\\\" or \\\"9\\\" → (NIT + VD)\\n - If length is 9 or less, can start with any digit → (old CC + VD)\\n \\n 💡 **VD (Verification Digit)**: A verification digit is a number mathematically calculated by DIAN (Dirección de Impuestos y Aduanas Nacionales) to validate that the NIT was entered correctly. It is included as part of the document number.\\n \\n - **For \\`documentType = 4\\` (TARJETA DE IDENTIDAD)**:\\n - Minimum length: 10 numeric characters\\n - Maximum length: 11 numeric characters\\n \\n \\n- \\`queryType\\`: (string, required) Specifies the type of query to be performed.\\n \\n- \\`license\\`: (string, required) The license plate of the vehicle.\n\nContexto: Endpoint: POST /product/query | Product > Query\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3587
- inputSchema: query_quoteInputJsonSchema,
3402
+ inputSchema: query_quoteInputValidator,
3588
3403
  jsonSchema: query_quoteInputJsonSchema,
3589
3404
  endpoint: '/product/query',
3590
3405
  method: 'POST',
@@ -3593,12 +3408,9 @@ export const query_quoteTool = {
3593
3408
  handler: async (rawArgs) => {
3594
3409
  try {
3595
3410
  const normalizedArgs = rawArgs ?? {};
3596
- // Extraer secretId del contexto (si viene del HTTP mode)
3597
- const secretId = normalizedArgs._secretId;
3598
- // Remover _secretId de los args antes de validar
3599
- const { _secretId, ...argsToValidate } = normalizedArgs;
3600
- const validatedInput = validateToolInput(query_quoteInputValidator, argsToValidate);
3411
+ const validatedInput = validateToolInput(query_quoteInputValidator, normalizedArgs);
3601
3412
  const args = validatedInput;
3413
+ const secretId = args._secretId;
3602
3414
  const bodyData = {};
3603
3415
  const productIdValue = args.productId !== undefined ? args.productId : 1014006;
3604
3416
  if (productIdValue !== undefined)
@@ -3658,17 +3470,16 @@ const query_consultInputJsonSchema = {
3658
3470
  },
3659
3471
  "required": []
3660
3472
  };
3661
- const query_consultInputShape = {
3473
+ const query_consultInputValidator = z.object({
3662
3474
  productId: z.number().optional().describe("Campo del body: productId"),
3663
3475
  queryType: z.string().optional().describe("Campo del body: queryType"),
3664
3476
  license: z.string().optional().describe("Campo del body: license")
3665
- };
3666
- const query_consultInputValidator = z.object(query_consultInputShape);
3477
+ });
3667
3478
  // Herramienta: query_consult
3668
3479
  export const query_consultTool = {
3669
3480
  name: 'query_consult',
3670
3481
  description: "Here you will find all the endpoints related to the sale of SOAT PREVISORA.\\n\\n## Timeout Configuration\\n\\nThe following timeout values are configured for PREVISORA provider operations:\\n\\n| Provider | Min (seconds) | Max (seconds) | Timeout (seconds) |\\n| --- | --- | --- | --- |\\n| PREVISORA | 0 | 300 | 300 |\\n\\n**Important:**\\n\\nBased on the current operation of the insurance company **PREVISORA**, the waiting time (timeout) for sales processing has been adjusted to **5 minutes (300 seconds)**. This change addresses the need to ensure that all transactions are processed correctly, even in scenarios where delays may occur.\\n\\nIn addition, the API guarantees up to **2 automatic retries** in case a timeout occurs during processing. Although this behavior is not common in the API solution, it has been implemented to ensure the continuity and success of sales operations.\\n\\nIt is recommended to take this configuration into account when implementing integrations with PREVISORA services, in order to ensure proper error handling and an optimal user experience.\\n\\n## Test Environment\\n\\n### Available Test Scenarios\\n\\nTo test error scenarios and different response types, the following vehicle license plates are available:\\n\\n#### Error Handling\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| All | TIM001 | Timeout | Simulates timeout scenario |\\n| All | ERR400 | System Error | Ocurrió un error inesperado. Consulte con el Administrador del sistema |\\n| All | ERR401 | Authentication Error | No ha sido posible autenticarse, el token es incorrecto o el usuario no se encuentra activo |\\n\\n#### Quote Operations\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| Quote | ABC123 | Success Standard | Success: Vehículo, camioneta, bus |\\n| Quote | ABC124 | Success with Discount | Standard vehicle with discount applied |\\n| Quote | ABC125 | Electric Vehicle | Electric car pricing |\\n| Quote | ABC126 | Law Discount | Legal discount application |\\n| Quote | ABC127 | Transit Authority Error | La placa no está asociada a algún organismo de tránsito |\\n\\n#### Issue Operations\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| Issue | ABC123 | Success Standard | Success: Vehículo, camioneta, bus |\\n| Issue | ABC124 | Success with Discount | Successfully issued with discount |\\n\\n#### Consult Operations\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| Consult | ABC123 | Issued | Policy has been issued |\\n| Consult | ABC124 | Not Issued | Policy has not been issued |\\n\\n### Usage Notes\\n\\n- **Test Plates**: Use the provided test plates to simulate different scenarios during development and testing\\n \\n- **Error Simulation**: TIM001 and ERR-prefixed plates are specifically designed to test error handling\\n \\n- **Success Flows**: ABC123 generally represents successful operations across different methods\\n \\n- **Edge Cases**: ABC124-ABC127 cover various business scenarios including discounts and restrictions\\n \\n- There is a complementary file containing additional test scenarios not listed in this documentation. You can access it here: ⁠[Additional Test Scenarios Folder](https://refacil01-my.sharepoint.com/:f:/g/personal/w_sarmiento_refacil_com/EnvRlRK92WlHuuBfU6Zyom0BvCFmPG_OzhU-te-6ZQ0jMw)\\n\\n \\`Returns the information of the last policy issued for the license plate. If the policy is queried on days after its issuance, the service will not return the requested information. It is important to clarify that this endpoint does not retrieve failed sales in the system.\\`\\n\\n### Payload for Consult Query\\n\\nThe following payload is required for performing a custom query:\\n\\n- \\`productId\\`: (number, required) Identifies the product for which the query is being made.\\n \\n- \\`queryType\\`: (string, required) Specifies the type of query to be performed, in this case have to be \\\\\\`SOATPolicy\\\\\\`.\\n \\n- \\`license\\`: (string, required) The license plate of the vehicle.\n\nContexto: Endpoint: POST /product/query | Product > Query\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3671
- inputSchema: query_consultInputJsonSchema,
3482
+ inputSchema: query_consultInputValidator,
3672
3483
  jsonSchema: query_consultInputJsonSchema,
3673
3484
  endpoint: '/product/query',
3674
3485
  method: 'POST',
@@ -3677,12 +3488,9 @@ export const query_consultTool = {
3677
3488
  handler: async (rawArgs) => {
3678
3489
  try {
3679
3490
  const normalizedArgs = rawArgs ?? {};
3680
- // Extraer secretId del contexto (si viene del HTTP mode)
3681
- const secretId = normalizedArgs._secretId;
3682
- // Remover _secretId de los args antes de validar
3683
- const { _secretId, ...argsToValidate } = normalizedArgs;
3684
- const validatedInput = validateToolInput(query_consultInputValidator, argsToValidate);
3491
+ const validatedInput = validateToolInput(query_consultInputValidator, normalizedArgs);
3685
3492
  const args = validatedInput;
3493
+ const secretId = args._secretId;
3686
3494
  const bodyData = {};
3687
3495
  const productIdValue = args.productId !== undefined ? args.productId : 1014006;
3688
3496
  if (productIdValue !== undefined)
@@ -3817,17 +3625,16 @@ const sell_previsoraInputJsonSchema = {
3817
3625
  },
3818
3626
  "required": []
3819
3627
  };
3820
- const sell_previsoraInputShape = {
3628
+ const sell_previsoraInputValidator = z.object({
3821
3629
  productId: z.number().optional().describe("Campo del body: productId"),
3822
3630
  data: z.record(z.any()).optional().describe("Campo del body: data"),
3823
3631
  amount: z.number().optional().describe("Campo del body: amount")
3824
- };
3825
- const sell_previsoraInputValidator = z.object(sell_previsoraInputShape);
3632
+ });
3826
3633
  // Herramienta: sell_previsora
3827
3634
  export const sell_previsoraTool = {
3828
3635
  name: 'sell_previsora',
3829
3636
  description: "Here you will find all the endpoints related to the sale of SOAT PREVISORA.\\n\\n## Timeout Configuration\\n\\nThe following timeout values are configured for PREVISORA provider operations:\\n\\n| Provider | Min (seconds) | Max (seconds) | Timeout (seconds) |\\n| --- | --- | --- | --- |\\n| PREVISORA | 0 | 300 | 300 |\\n\\n**Important:**\\n\\nBased on the current operation of the insurance company **PREVISORA**, the waiting time (timeout) for sales processing has been adjusted to **5 minutes (300 seconds)**. This change addresses the need to ensure that all transactions are processed correctly, even in scenarios where delays may occur.\\n\\nIn addition, the API guarantees up to **2 automatic retries** in case a timeout occurs during processing. Although this behavior is not common in the API solution, it has been implemented to ensure the continuity and success of sales operations.\\n\\nIt is recommended to take this configuration into account when implementing integrations with PREVISORA services, in order to ensure proper error handling and an optimal user experience.\\n\\n## Test Environment\\n\\n### Available Test Scenarios\\n\\nTo test error scenarios and different response types, the following vehicle license plates are available:\\n\\n#### Error Handling\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| All | TIM001 | Timeout | Simulates timeout scenario |\\n| All | ERR400 | System Error | Ocurrió un error inesperado. Consulte con el Administrador del sistema |\\n| All | ERR401 | Authentication Error | No ha sido posible autenticarse, el token es incorrecto o el usuario no se encuentra activo |\\n\\n#### Quote Operations\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| Quote | ABC123 | Success Standard | Success: Vehículo, camioneta, bus |\\n| Quote | ABC124 | Success with Discount | Standard vehicle with discount applied |\\n| Quote | ABC125 | Electric Vehicle | Electric car pricing |\\n| Quote | ABC126 | Law Discount | Legal discount application |\\n| Quote | ABC127 | Transit Authority Error | La placa no está asociada a algún organismo de tránsito |\\n\\n#### Issue Operations\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| Issue | ABC123 | Success Standard | Success: Vehículo, camioneta, bus |\\n| Issue | ABC124 | Success with Discount | Successfully issued with discount |\\n\\n#### Consult Operations\\n\\n| Method | Plate | Scenario | Description |\\n| --- | --- | --- | --- |\\n| Consult | ABC123 | Issued | Policy has been issued |\\n| Consult | ABC124 | Not Issued | Policy has not been issued |\\n\\n### Usage Notes\\n\\n- **Test Plates**: Use the provided test plates to simulate different scenarios during development and testing\\n \\n- **Error Simulation**: TIM001 and ERR-prefixed plates are specifically designed to test error handling\\n \\n- **Success Flows**: ABC123 generally represents successful operations across different methods\\n \\n- **Edge Cases**: ABC124-ABC127 cover various business scenarios including discounts and restrictions\\n \\n- There is a complementary file containing additional test scenarios not listed in this documentation. You can access it here: ⁠[Additional Test Scenarios Folder](https://refacil01-my.sharepoint.com/:f:/g/personal/w_sarmiento_refacil_com/EnvRlRK92WlHuuBfU6Zyom0BvCFmPG_OzhU-te-6ZQ0jMw)\\n\\n \\`Allows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\`\\n\\n**Product restrictions**\\n\\n- Allows selling SOAT in the name of a person who is not the owner of the vehicle.\\n \\n- SOAT can be sold for a PRIVATE CAR.\\n \\n- SOAT can be sold for a PRIVATE MOTORCYCLE.\\n \\n- SOAT can be sold for a PUBLIC SERVICE VEHICLE.\\n \\n- SOAT cannot be sold to vehicles with 0 KM.\\n \\n- Sales hours are from 12:30 AM to 11:30 PM.\\n \\n- SOAT can be sold up to 30 days before its expiration.\\n \\n- The definition of the Administrative Cost and Commission for the sale of SOAT can be validated with your Refacil Commercial Advisor.\\n \\n- The insurance companies are directly responsible for sending the issued SOAT via email. The API provides a URL from the provider for downloading the SOAT.\\n \\n\\nExample of a payment request for the Previsora product. The necessary information is provided, such as the productId (in this case, 1014006) and other relevant data, all attributes are mandatory.\\n\\n**Note:**\\n\\nIt is important to remember that to perform a sale using this service, several crucial data points must be sent. Some of these data points are obtained from the \\`/products/query\\` Quote Service. The necessary data are as follows: \\`amount\\`, \\`vehDetail\\`, and \\`userDetail\\`.\\n\\nSome data obtained from the /products/query service may be null; however, this data is mandatory for the sale process and must be filled in.\\n\\nIn addition to the \\`userDetail\\` object, three additional attributes must be sent: \\`gender\\`, \\`RegimenTypeId\\`, and \\`RutId\\`.\\n\\nThe possible values for each of the aforementioned attributes are as follows:\\n\\n- \\`gender\\`:\\n \\n - M = Male\\n \\n - F = Female\\n \\n- \\`RegimenTypeId\\`:\\n \\n - 1 = Responsible for IVA\\n \\n - 2 = Not responsible for IVA\\n \\n- \\`RutId\\`:\\n \\n - 1 = Large taxpayer\\n \\n - 2 = Self-withholding agent\\n \\n - 3 = IVA withholding agent\\n \\n - 4 = Simple taxation regime\\n \\n - 5 = Not applicable\\n \\n - 6 = Large taxpayer-Self-withholding agent-IVA withholding agent\\n \\n - 7 = Self-withholding agent-IVA withholding agent\\n \\n - 8 = Large taxpayer-IVA withholding agent\\n \\n- \\`cityCode\\`: DANE code\\n \\n- \\`stateCode\\`: This field is populated based on the **state** sheet [here.](https://refacil01-my.sharepoint.com/:f:/g/personal/w_sarmiento_refacil_com/EnvRlRK92WlHuuBfU6Zyom0BvCFmPG_OzhU-te-6ZQ0jMw)\\n \\n- To check the values for the other parameters, please refer [here.](https://refacil01-my.sharepoint.com/:f:/g/personal/w_sarmiento_refacil_com/EnvRlRK92WlHuuBfU6Zyom0BvCFmPG_OzhU-te-6ZQ0jMw)\\n \\n\\n## Field Validations\\n\\n### **Name and Last Name Format Requirements**\\n\\nThe validation rules for the \\`name\\` and \\`lastName\\` fields in the \\`userDetail\\` object depend on the person type:\\n\\n**For Natural Persons (Personas Naturales):**\\n\\n- Must contain only letters (uppercase and lowercase)\\n \\n- Allows letters with accents: \\`á, é, í, ó, ú, Á, É, Í, Ó, Ú\\`\\n \\n- Allows Spanish special characters: \\`ñ, Ñ, ü, Ü\\`\\n \\n- Allows spaces between words (for compound names)\\n \\n- Minimum length of 3 characters\\n \\n- Does not allow numbers\\n \\n- Does not allow special characters such as \\`@\\`, \\`#\\`\\n \\n\\n**For Legal Entities (Personas Jurídicas):**\\n\\n- Allows alphanumeric characters (letters and numbers)\\n \\n- Allows letters with accents: \\`á, é, í, ó, ú, Á, É, Í, Ó, Ú\\`\\n \\n- Allows Spanish special characters: \\`ñ, Ñ, ü, Ü\\`\\n \\n- Allows spaces between words\\n \\n- Minimum length of 3 characters\\n \\n- Does not allow special characters such as \\`@\\`, \\`#\\`\\n \\n\\n### Email Format Requirements\\n\\nThe \\`email\\` field must comply with strict validation rules to prevent errors during the issuance process:\\n\\n- Must contain only letters and numbers (no accents or special characters like á, é, etc.)\\n \\n- Allows only single separators: \\`.\\` (period), \\`_\\` (underscore), \\`-\\` (hyphen)\\n \\n- Cannot have consecutive separators (e.g., \\`..\\` or \\`--\\`)\\n \\n- Cannot start or end with separators\\n \\n- Domain must have at least 2 characters in the top-level domain (TLD)\\n \\n- Must not contain spaces or the \\`@\\` symbol except as the domain separator\\n \\n\\n**Valid examples:**\\n\\n- \\`usuario@gmail.com\\`\\n \\n- \\`nombre.apellido@empresa.co\\`\\n \\n- \\`user_name@dominio.com\\`\\n \\n- \\`user-123@test.com.co\\`\\n \\n\\n**Invalid examples:**\\n\\n- \\`usuario.@gmail.com\\` (separator at the end before @)\\n \\n- \\`user..name@domain.com\\` (consecutive separators)\\n \\n- \\`@domain.com\\` (missing local part)\\n \\n- \\`usuarioá@gmail.com\\` (contains accented characters)\\n \\n- \\`campohernández@gmail.com\\` (contains special characters with encoding issues)\\n \\n- \\`johndoe@---gmail.com\\` (multiple consecutive hyphens)\\n \\n\\n### Address Format Requirements\\n\\nThe \\`address\\` field must comply with the following validation rules:\\n\\n### Validation Rules\\n\\n1. **Cannot start with numeric characters** - The first character after trimming cannot be a digit (0-9)\\n2. **First character must be**:\\n - A letter (uppercase or lowercase): \\`A-Z\\`, \\`a-z\\`\\n - A vowel with Spanish acute accent: \\`á\\`, \\`é\\`, \\`í\\`, \\`ó\\`, \\`ú\\`, \\`Á\\`, \\`É\\`, \\`Í\\`, \\`Ó\\`, \\`Ú\\`\\n - The letter ñ/Ñ\\n - The letter ü/Ü (with diaeresis)\\n - A whitespace character (space, tab, etc.) — though after \\`trim()\\`, this is effectively not possible at the start\\n3. **Subsequent characters (position 2 onwards) can be**:\\n - All characters allowed for the first position, plus:\\n - Digits: \\`0-9\\`\\n - Special address characters: \\`#\\`, \\`-\\`, \\`.\\`, \\`,\\`\\n\\n### Allowed Characters Summary\\n\\n| Category | Characters |\\n| --- | --- |\\n| Letters (no accent) | \\`A-Z\\`, \\`a-z\\` |\\n| Accented vowels | \\`á\\`, \\`é\\`, \\`í\\`, \\`ó\\`, \\`ú\\`, \\`Á\\`, \\`É\\`, \\`Í\\`, \\`Ó\\`, \\`Ú\\` |\\n| Special Spanish letters | \\`ñ\\`, \\`Ñ\\`, \\`ü\\`, \\`Ü\\` |\\n| Digits (not at start) | \\`0-9\\` |\\n| Whitespace | Space, tab, etc. |\\n| Address symbols | \\`#\\`, \\`-\\`, \\`.\\`, \\`,\\` |\\n\\n### NOT Allowed Characters\\n\\n| Category | Examples |\\n| --- | --- |\\n| Other punctuation | \\`; : ! ? ¡ ¿ \\\" \\' ( ) [ ] { }\\` |\\n| Mathematical/monetary | \\`+ * / % = < > ^ ~ € $ @ &\\` |\\n| Underscore and separators | \\`_ | \\\\\\` |\\n| Other accented letters | \\`ç\\`, \\`ã\\`, \\`õ\\`, \\`ô\\`, \\`ä\\`, \\`ö\\`, \\`ê\\`, \\`â\\`, \\`î\\`, \\`û\\` |\\n| Non-Latin alphabets | Cyrillic, Greek, Arabic, Chinese, etc. |\\n| Emojis | 🙂 😁 🏠 |\\n\\n### Valid Examples\\n\\n- \\`Calle 123 #45-67\\`\\n- \\`Carrera 7 Bis #8-24\\`\\n- \\`Avenida Principal, Casa 5\\`\\n- \\`Avenida Pérez Galdós\\`\\n- \\`Av. Simón Bolívar 123\\`\\n- \\`Cl 10 Sur #45-20\\`\\n- \\`Urbanización La Ñora, Bloque 3\\`\\n\\n### Invalid Examples\\n\\n| Address | Reason |\\n| --- | --- |\\n| \\`123 Calle Principal\\` | Starts with a number |\\n| \\`Calle @Principal\\` | Contains \\`@\\` (not allowed) |\\n| \\`Dirección <>\\` | Contains angle brackets |\\n| \\`Calle_45 #12-34\\` | Contains underscore \\`_\\` |\\n| \\`Calle 5 #12-34!\\` | Contains exclamation mark \\`!\\` |\\n| \\`Rua São Paulo 10\\` | Contains \\`ã\\` (not in allowed accents) |\\n| \\`Avenida (Frente al parque)\\` | Contains parentheses \\`()\\` |\\n \\n\\n### Payload for Custom Sell\\n\\nThe following payload is required for performing a custom sell:\\n\\n> **Note:** According to the provider\\'s official documentation, the \\`name\\` and \\`lastName\\` fields are mandatory. \\n \\n\\n- \\`productId\\`: (number, required) Identifies the product for which the sale is being made.\\n \\n- \\`data\\`: (object, required) Contains specific sale data.\\n \\n - \\`license\\`: (string, required) License plate of the vehicle.\\n \\n - \\`productId\\`: (string, required) Product identification (empty in this example).\\n \\n - \\`cellphone\\`: (string, required) User\\'s cellphone number.\\n \\n - \\`document\\`: (string, required) User\\'s document number. For NIT, this field must include the verification digit and must be sent **without hyphen (-)**.\\n \\n - \\`terminal\\`:\\n \\n - \\`id\\`: A unique identifier for the merchant (POS) that is generating the SOAT sale transaction for the API client. If there is no merchant under the API client\\'s network, the same merchant ID assigned by Refacil should be sent in the \\`id\\` field.\\n \\n - \\`amount\\`: (object, required) Details about the sale amount.\\n \\n - \\`TariffCode\\`: (string, required) Tariff code.\\n \\n - \\`InsurancePremium\\`: (number, required) Insurance premium.\\n \\n - \\`InsuranceTax\\`: (number, required) Insurance tax.\\n \\n - \\`InsuranceFine\\`: (number, required) Insurance fine.\\n \\n - \\`Total\\`: (number, required) Total.\\n \\n - \\`TotalWithDiscountAmount\\`: (number, required) Total with discount amount.\\n \\n - \\`DiscountAmount\\`: (number, required) Discount amount.\\n \\n - \\`ElectricDiscount\\`: (numbe, requiredr) Electric discount.\\n \\n - \\`PercentageElectricDiscount\\`: (number, required) Percentage electric discount.\\n \\n - \\`InsurancePremiumFormatted\\`: (string, required) Formatted insurance premium.\\n \\n - \\`InsuranceTaxFormatted\\`: (string, required) Formatted insurance tax.\\n \\n - \\`InsuranceFineFormatted\\`: (string, required) Formatted insurance fine.\\n \\n - \\`TotalFormatted\\`: (string, required) Formatted total.\\n \\n - \\`DiscountAmountFormatted\\`: (string, required) Formatted discount amount.\\n \\n - \\`TotalWithDiscountAmountFormatted\\`: (string, required) Formatted total with discount amount.\\n \\n - \\`createdAt\\`: (string, required) Creation date.\\n \\n - \\`dateStart\\`: (string, required) Start date.\\n \\n - \\`dateEnd\\`: (string, required) End date.\\n \\n - \\`amount\\`: (number, required) Amount.\\n \\n - \\`amountDiscount\\`: (number, required) Discount amount.\\n \\n - \\`amountOthers\\`: (number, required) Other amounts.\\n \\n - \\`amountTotal\\`: (number, required) Total amount.\\n \\n - \\`hash\\`: (string, required) Hash.\\n \\n - \\`runt\\`: (number, required) Value for RUNT.\\n \\n - \\`codeFasecolda\\`: (number, required) Fasecolda code.\\n \\n - \\`typeCost\\`: (number, required) Cost type.\\n \\n - \\`Law2161Discount\\`: (number, required) Law 2161 discount.\\n \\n - \\`discount\\`: (number, required) Discount.\\n \\n - \\`vehDetail\\`: (object) Vehicle details.\\n \\n - \\`vehicleLineId\\`: (number, required) Vehicle line ID.\\n \\n - \\`vehicleClassId\\`: (number, required) Vehicle class ID.\\n \\n - \\`vehicleClassMinistryId\\`: (number, required) Vehicle class ID (Ministry).\\n \\n - \\`serviceTypeId\\`: (number, required) Service type ID.\\n \\n - \\`vehicleBodyTypeId\\`: (number, required) Vehicle body type ID.\\n \\n - \\`vehicleDescription\\`: (string, required) Vehicle description.\\n \\n - \\`vehDescription\\`: (string, required) Vehicle description.\\n \\n - \\`queryId\\`: (string, required) Query ID.\\n \\n - \\`noSerie\\`: (string, required) Serial number.\\n \\n - \\`noMotor\\`: (string, required) Motor number. If this field is empty, it must be filled with the value from the VIN field.\\n \\n - \\`noChasis\\`: (string, required) Chassis number.\\n \\n - \\`cc\\`: (number, required) Cubic centimeters.\\n \\n - \\`type\\`: (string, required) Type.\\n \\n - \\`gas\\`: (string, required) Gas.\\n \\n - \\`year\\`: (number, required) Year.\\n \\n - \\`passengers\\`: (number, required) Passengers.\\n \\n - \\`brand\\`: (string, required) Brand.\\n \\n - \\`brandId\\`: (number, required) Brand ID.\\n \\n - \\`vin\\`: (string, required) Vehicle identification number (VIN).\\n \\n - \\`lineCode\\`: (string, required) Line code.\\n \\n - \\`service\\`: (string, required) Service.\\n \\n - \\`zone\\`: (string, required) Zone.\\n \\n - \\`weight\\`: (number, required) Weight.\\n \\n - \\`cityId\\`: (number, required) City ID.\\n \\n - \\`userDetail\\`: (object, required) User details.\\n \\n - \\`name\\`: (string) User\\'s name.\\n \\n - Must have at least **3 characters** and cannot contain special characters.\\n \\n - No maximum length is configured.\\n \\n - \\`lastName\\`: (string, required) User\\'s last name.\\n \\n - Must have at least **3 characters** and cannot contain special characters.\\n \\n - No maximum length is configured.\\n \\n - \\`docNumber\\`: (string, required) User\\'s document number.\\n \\n - \\`cellphone\\`: (string) User\\'s cellphone number. Must be a valid Colombian cellphone number starting with \\\"3\\\" followed by exactly 9 digits (e.g., \\\"3001234567\\\").\\n \\n - \\`email\\`: (string, required) User\\'s email. Must be a valid email address format (e.g., \\\"[user@domain.com](https://mailto:user@domain.com)\\\").\\n \\n - \\`phone\\`: (string) User\\'s phone.\\n \\n - \\`docType\\`: (number, required) User\\'s document type.\\n \\n - \\`address\\`: (string, required) User\\'s address.\\n \\n - \\`cityCode\\`: (integer, required) User\\'s city code.\\n \\n - \\`stateCode\\`: (integer, required) User\\'s state code.\\n \\n - \\`addressType\\`: (number, required) User\\'s address type.\\n \\n - \\`typePerson\\`: (string) Type of person (e.g., \\'F\\' for natural person, \\'J\\' for legal person).\\n \\n - \\`gender\\`: (string) User\\'s gender.\\n \\n - \\`RegimenTypeId\\`: (string, required) User\\'s regime type ID.\\n \\n - \\`RutId\\`: (number, required) User\\'s RUT ID.\\n \\n- \\`amount\\`: (number, required) Total amount of the sale.\\n \\n- \\`moveTmpBalance\\`: (boolean) Indicates whether to move temporary balance.\\n \\n\\n\\`Note\\`: If the VIN data is not available, the API will use the chassis number as a replacement.\\n\\nAfter the sale has been successfully completed, the response will follow a structure similar to the following. **This response will be returned within a timeout of 120,000 milliseconds (2 minutes).** In this response, important information is provided, such as the balance of the main wallet and the balance of the profit wallet. Additionally, within the \\'billData\\' object, you will find the fundamental information necessary to generate the sales receipt that will be delivered to the end customer.\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3830
- inputSchema: sell_previsoraInputJsonSchema,
3637
+ inputSchema: sell_previsoraInputValidator,
3831
3638
  jsonSchema: sell_previsoraInputJsonSchema,
3832
3639
  endpoint: '/sells/sell',
3833
3640
  method: 'POST',
@@ -3836,12 +3643,9 @@ export const sell_previsoraTool = {
3836
3643
  handler: async (rawArgs) => {
3837
3644
  try {
3838
3645
  const normalizedArgs = rawArgs ?? {};
3839
- // Extraer secretId del contexto (si viene del HTTP mode)
3840
- const secretId = normalizedArgs._secretId;
3841
- // Remover _secretId de los args antes de validar
3842
- const { _secretId, ...argsToValidate } = normalizedArgs;
3843
- const validatedInput = validateToolInput(sell_previsoraInputValidator, argsToValidate);
3646
+ const validatedInput = validateToolInput(sell_previsoraInputValidator, normalizedArgs);
3844
3647
  const args = validatedInput;
3648
+ const secretId = args._secretId;
3845
3649
  const bodyData = {};
3846
3650
  const productIdValue = args.productId !== undefined ? args.productId : 1014006;
3847
3651
  if (productIdValue !== undefined)
@@ -3898,17 +3702,16 @@ const sell_luck_and_chance_rushbetInputJsonSchema = {
3898
3702
  },
3899
3703
  "required": []
3900
3704
  };
3901
- const sell_luck_and_chance_rushbetInputShape = {
3705
+ const sell_luck_and_chance_rushbetInputValidator = z.object({
3902
3706
  productId: z.number().optional().describe("Campo del body: productId"),
3903
3707
  amount: z.number().optional().describe("Campo del body: amount"),
3904
3708
  data: z.record(z.any()).optional().describe("Campo del body: data")
3905
- };
3906
- const sell_luck_and_chance_rushbetInputValidator = z.object(sell_luck_and_chance_rushbetInputShape);
3709
+ });
3907
3710
  // Herramienta: sell_luck_and_chance_rushbet
3908
3711
  export const sell_luck_and_chance_rushbetTool = {
3909
3712
  name: 'sell_luck_and_chance_rushbet',
3910
3713
  description: "Allows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\n\\n**Note**: To make this request in the case of selling invoices, we need the hash and hashEchoData provided by the query response for the reference.\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3911
- inputSchema: sell_luck_and_chance_rushbetInputJsonSchema,
3714
+ inputSchema: sell_luck_and_chance_rushbetInputValidator,
3912
3715
  jsonSchema: sell_luck_and_chance_rushbetInputJsonSchema,
3913
3716
  endpoint: '/sells/sell',
3914
3717
  method: 'POST',
@@ -3917,12 +3720,9 @@ export const sell_luck_and_chance_rushbetTool = {
3917
3720
  handler: async (rawArgs) => {
3918
3721
  try {
3919
3722
  const normalizedArgs = rawArgs ?? {};
3920
- // Extraer secretId del contexto (si viene del HTTP mode)
3921
- const secretId = normalizedArgs._secretId;
3922
- // Remover _secretId de los args antes de validar
3923
- const { _secretId, ...argsToValidate } = normalizedArgs;
3924
- const validatedInput = validateToolInput(sell_luck_and_chance_rushbetInputValidator, argsToValidate);
3723
+ const validatedInput = validateToolInput(sell_luck_and_chance_rushbetInputValidator, normalizedArgs);
3925
3724
  const args = validatedInput;
3725
+ const secretId = args._secretId;
3926
3726
  const bodyData = {};
3927
3727
  const productIdValue = args.productId !== undefined ? args.productId : 603;
3928
3728
  if (productIdValue !== undefined)
@@ -3973,16 +3773,15 @@ const sell_packages_movistarInputJsonSchema = {
3973
3773
  },
3974
3774
  "required": []
3975
3775
  };
3976
- const sell_packages_movistarInputShape = {
3776
+ const sell_packages_movistarInputValidator = z.object({
3977
3777
  productId: z.number().optional().describe("Campo del body: productId"),
3978
3778
  data: z.record(z.any()).optional().describe("Campo del body: data")
3979
- };
3980
- const sell_packages_movistarInputValidator = z.object(sell_packages_movistarInputShape);
3779
+ });
3981
3780
  // Herramienta: sell_packages_movistar
3982
3781
  export const sell_packages_movistarTool = {
3983
3782
  name: 'sell_packages_movistar',
3984
3783
  description: "Allows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\n\\n**Note**: To make this request in the case of selling invoices, we need the hash and hashEchoData provided by the query response for the reference.\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
3985
- inputSchema: sell_packages_movistarInputJsonSchema,
3784
+ inputSchema: sell_packages_movistarInputValidator,
3986
3785
  jsonSchema: sell_packages_movistarInputJsonSchema,
3987
3786
  endpoint: '/sells/sell',
3988
3787
  method: 'POST',
@@ -3991,12 +3790,9 @@ export const sell_packages_movistarTool = {
3991
3790
  handler: async (rawArgs) => {
3992
3791
  try {
3993
3792
  const normalizedArgs = rawArgs ?? {};
3994
- // Extraer secretId del contexto (si viene del HTTP mode)
3995
- const secretId = normalizedArgs._secretId;
3996
- // Remover _secretId de los args antes de validar
3997
- const { _secretId, ...argsToValidate } = normalizedArgs;
3998
- const validatedInput = validateToolInput(sell_packages_movistarInputValidator, argsToValidate);
3793
+ const validatedInput = validateToolInput(sell_packages_movistarInputValidator, normalizedArgs);
3999
3794
  const args = validatedInput;
3795
+ const secretId = args._secretId;
4000
3796
  const bodyData = {};
4001
3797
  const productIdValue = args.productId !== undefined ? args.productId : 200034;
4002
3798
  if (productIdValue !== undefined)
@@ -4054,18 +3850,17 @@ const sellInputJsonSchema = {
4054
3850
  },
4055
3851
  "required": []
4056
3852
  };
4057
- const sellInputShape = {
3853
+ const sellInputValidator = z.object({
4058
3854
  productId: z.number().optional().describe("Campo del body: productId"),
4059
3855
  amount: z.number().optional().describe("Campo del body: amount"),
4060
3856
  data: z.record(z.any()).optional().describe("Campo del body: data"),
4061
3857
  _preventDuplicate: z.boolean().optional().describe("Campo del body: _preventDuplicate")
4062
- };
4063
- const sellInputValidator = z.object(sellInputShape);
3858
+ });
4064
3859
  // Herramienta: sell
4065
3860
  export const sellTool = {
4066
3861
  name: 'sell',
4067
3862
  description: "---\\n\\n## Description\\n\\nAllows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\n\\n**Note**: To make this request in the case of selling invoices, we need the hash and hashEchoData provided by the query response for the reference.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`amount\\`: Number representing the amount of the payment (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n- \\`_preventDuplicate\\`: Boolean to disable duplicate transaction prevention, i.e. if the value is \\`true\\`, duplicate transactions will not be validated, allowing to send bulk reloads. (optional)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`statusCode\\`: Number representing the HTTP status code (required)\\n \\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n- \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`posBalance\\`: String representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: String representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`value\\`: String or Number representing the field value (required)\\n \\n - \\`type\\`: String representing the field type (optional)\\n \\n - \\`labelLink\\`: String representing the label link (optional)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`type\\`: String representing the cost type (optional)\\n \\n - \\`labelLink\\`: String representing the label link (optional)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\\n \\n - \\`sale\\`: Object containing sale information (required)\\n \\n - \\`id\\`: Number representing the sale ID (required)\\n \\n - \\`userId\\`: Number representing the user ID (required)\\n \\n - \\`amount\\`: Number representing the sale amount (required)\\n \\n - \\`serviceNumber\\`: String representing the service number (required)\\n \\n - \\`status\\`: Number representing the sale status (required)\\n \\n - \\`productId\\`: Number representing the product ID (required)\\n \\n - \\`createdAt\\`: String representing the creation timestamp (required)\\n \\n - \\`transactionId\\`: String representing the transaction ID (required)\\n \\n - \\`extra\\`: String representing additional information (optional)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4068
- inputSchema: sellInputJsonSchema,
3863
+ inputSchema: sellInputValidator,
4069
3864
  jsonSchema: sellInputJsonSchema,
4070
3865
  endpoint: '/sells/sell',
4071
3866
  method: 'POST',
@@ -4074,12 +3869,9 @@ export const sellTool = {
4074
3869
  handler: async (rawArgs) => {
4075
3870
  try {
4076
3871
  const normalizedArgs = rawArgs ?? {};
4077
- // Extraer secretId del contexto (si viene del HTTP mode)
4078
- const secretId = normalizedArgs._secretId;
4079
- // Remover _secretId de los args antes de validar
4080
- const { _secretId, ...argsToValidate } = normalizedArgs;
4081
- const validatedInput = validateToolInput(sellInputValidator, argsToValidate);
3872
+ const validatedInput = validateToolInput(sellInputValidator, normalizedArgs);
4082
3873
  const args = validatedInput;
3874
+ const secretId = args._secretId;
4083
3875
  const bodyData = {};
4084
3876
  const productIdValue = args.productId !== undefined ? args.productId : 40;
4085
3877
  if (productIdValue !== undefined)
@@ -4138,17 +3930,16 @@ const product_directtv_prepagoInputJsonSchema = {
4138
3930
  },
4139
3931
  "required": []
4140
3932
  };
4141
- const product_directtv_prepagoInputShape = {
3933
+ const product_directtv_prepagoInputValidator = z.object({
4142
3934
  data: z.record(z.any()).optional().describe("Campo del body: data"),
4143
3935
  productId: z.number().optional().describe("Campo del body: productId"),
4144
3936
  amount: z.number().optional().describe("Campo del body: amount")
4145
- };
4146
- const product_directtv_prepagoInputValidator = z.object(product_directtv_prepagoInputShape);
3937
+ });
4147
3938
  // Herramienta: product_directtv_prepago
4148
3939
  export const product_directtv_prepagoTool = {
4149
3940
  name: 'product_directtv_prepago',
4150
3941
  description: "---\\n\\n## Description\\n\\nAllows performing a bill payment operation on the platform. Send the request body with the necessary parameters for the payment in the format specified by the PaymentBody object. The response will include the results of the operation in case of success.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`amount\\`: Number representing the amount of the payment (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4151
- inputSchema: product_directtv_prepagoInputJsonSchema,
3942
+ inputSchema: product_directtv_prepagoInputValidator,
4152
3943
  jsonSchema: product_directtv_prepagoInputJsonSchema,
4153
3944
  endpoint: '/sells/sell',
4154
3945
  method: 'POST',
@@ -4157,12 +3948,9 @@ export const product_directtv_prepagoTool = {
4157
3948
  handler: async (rawArgs) => {
4158
3949
  try {
4159
3950
  const normalizedArgs = rawArgs ?? {};
4160
- // Extraer secretId del contexto (si viene del HTTP mode)
4161
- const secretId = normalizedArgs._secretId;
4162
- // Remover _secretId de los args antes de validar
4163
- const { _secretId, ...argsToValidate } = normalizedArgs;
4164
- const validatedInput = validateToolInput(product_directtv_prepagoInputValidator, argsToValidate);
3951
+ const validatedInput = validateToolInput(product_directtv_prepagoInputValidator, normalizedArgs);
4165
3952
  const args = validatedInput;
3953
+ const secretId = args._secretId;
4166
3954
  const bodyData = {};
4167
3955
  const dataValue = args.data !== undefined ? args.data : { "cellphone": "3015874044" };
4168
3956
  if (dataValue !== undefined)
@@ -4219,17 +4007,16 @@ const sell_netflixInputJsonSchema = {
4219
4007
  },
4220
4008
  "required": []
4221
4009
  };
4222
- const sell_netflixInputShape = {
4010
+ const sell_netflixInputValidator = z.object({
4223
4011
  productId: z.number().optional().describe("Campo del body: productId"),
4224
4012
  amount: z.number().optional().describe("Campo del body: amount"),
4225
4013
  data: z.record(z.any()).optional().describe("Campo del body: data")
4226
- };
4227
- const sell_netflixInputValidator = z.object(sell_netflixInputShape);
4014
+ });
4228
4015
  // Herramienta: sell_netflix
4229
4016
  export const sell_netflixTool = {
4230
4017
  name: 'sell_netflix',
4231
4018
  description: "---\\n\\n## Description\\n\\nAllows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\n\\n**Note**: To make this request in the case of selling invoices, we need the hash and hashEchoData provided by the query response for the reference.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`amount\\`: Number representing the amount for the transaction (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n - \\`email\\`: String containing the email address (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4232
- inputSchema: sell_netflixInputJsonSchema,
4019
+ inputSchema: sell_netflixInputValidator,
4233
4020
  jsonSchema: sell_netflixInputJsonSchema,
4234
4021
  endpoint: '/sells/sell',
4235
4022
  method: 'POST',
@@ -4238,12 +4025,9 @@ export const sell_netflixTool = {
4238
4025
  handler: async (rawArgs) => {
4239
4026
  try {
4240
4027
  const normalizedArgs = rawArgs ?? {};
4241
- // Extraer secretId del contexto (si viene del HTTP mode)
4242
- const secretId = normalizedArgs._secretId;
4243
- // Remover _secretId de los args antes de validar
4244
- const { _secretId, ...argsToValidate } = normalizedArgs;
4245
- const validatedInput = validateToolInput(sell_netflixInputValidator, argsToValidate);
4028
+ const validatedInput = validateToolInput(sell_netflixInputValidator, normalizedArgs);
4246
4029
  const args = validatedInput;
4030
+ const secretId = args._secretId;
4247
4031
  const bodyData = {};
4248
4032
  const productIdValue = args.productId !== undefined ? args.productId : 202;
4249
4033
  if (productIdValue !== undefined)
@@ -4311,19 +4095,18 @@ const sell_netflix_errorInputJsonSchema = {
4311
4095
  },
4312
4096
  "required": []
4313
4097
  };
4314
- const sell_netflix_errorInputShape = {
4098
+ const sell_netflix_errorInputValidator = z.object({
4315
4099
  productId: z.number().optional().describe("Campo del body: productId"),
4316
4100
  hash: z.any().optional().describe("Campo del body: hash"),
4317
4101
  sellType: z.any().optional().describe("Campo del body: sellType"),
4318
4102
  amount: z.number().optional().describe("Campo del body: amount"),
4319
4103
  data: z.record(z.any()).optional().describe("Campo del body: data")
4320
- };
4321
- const sell_netflix_errorInputValidator = z.object(sell_netflix_errorInputShape);
4104
+ });
4322
4105
  // Herramienta: sell_netflix_error
4323
4106
  export const sell_netflix_errorTool = {
4324
4107
  name: 'sell_netflix_error',
4325
4108
  description: "---\\n\\n## Description\\n\\nAllows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\n\\n**Note**: To make this request in the case of selling invoices, we need the hash and hashEchoData provided by the query response for the reference.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`moveTmpBalance\\`: Boolean flag to move temporary balance (required)\\n \\n- \\`hash\\`: String containing the hash value for the operation (nullable)\\n \\n- \\`sellType\\`: String indicating the type of the sell operation (nullable)\\n \\n- \\`amount\\`: Number representing the amount of the payment (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n - \\`email\\`: String containing the email address (required)\\n \\n - \\`document\\`: String containing the document number (required)\\n \\n - \\`reference\\`: String containing the reference number for the payment (nullable)\\n \\n - \\`hashEchoData\\`: String containing the hash echo data for the operation (nullable)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4326
- inputSchema: sell_netflix_errorInputJsonSchema,
4109
+ inputSchema: sell_netflix_errorInputValidator,
4327
4110
  jsonSchema: sell_netflix_errorInputJsonSchema,
4328
4111
  endpoint: '/sells/sell',
4329
4112
  method: 'POST',
@@ -4332,12 +4115,9 @@ export const sell_netflix_errorTool = {
4332
4115
  handler: async (rawArgs) => {
4333
4116
  try {
4334
4117
  const normalizedArgs = rawArgs ?? {};
4335
- // Extraer secretId del contexto (si viene del HTTP mode)
4336
- const secretId = normalizedArgs._secretId;
4337
- // Remover _secretId de los args antes de validar
4338
- const { _secretId, ...argsToValidate } = normalizedArgs;
4339
- const validatedInput = validateToolInput(sell_netflix_errorInputValidator, argsToValidate);
4118
+ const validatedInput = validateToolInput(sell_netflix_errorInputValidator, normalizedArgs);
4340
4119
  const args = validatedInput;
4120
+ const secretId = args._secretId;
4341
4121
  const bodyData = {};
4342
4122
  const productIdValue = args.productId !== undefined ? args.productId : 202;
4343
4123
  if (productIdValue !== undefined)
@@ -4396,17 +4176,16 @@ const sell_xbox_gamepass_core_3_mesesInputJsonSchema = {
4396
4176
  },
4397
4177
  "required": []
4398
4178
  };
4399
- const sell_xbox_gamepass_core_3_mesesInputShape = {
4179
+ const sell_xbox_gamepass_core_3_mesesInputValidator = z.object({
4400
4180
  productId: z.number().optional().describe("Campo del body: productId"),
4401
4181
  amount: z.number().optional().describe("Campo del body: amount"),
4402
4182
  data: z.record(z.any()).optional().describe("Campo del body: data")
4403
- };
4404
- const sell_xbox_gamepass_core_3_mesesInputValidator = z.object(sell_xbox_gamepass_core_3_mesesInputShape);
4183
+ });
4405
4184
  // Herramienta: sell_xbox_gamepass_core_3_meses
4406
4185
  export const sell_xbox_gamepass_core_3_mesesTool = {
4407
4186
  name: 'sell_xbox_gamepass_core_3_meses',
4408
4187
  description: "---\\n\\n## Description\\n\\nAllows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\n\\n**Note**: To make this request in the case of selling invoices, we need the hash and hashEchoData provided by the query response for the reference.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`amount\\`: Number representing the amount of the payment (required)\\n \\n- \\`moveTmpBalance\\`: Boolean flag to move temporary balance (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n - \\`email\\`: String containing the email address (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`statusCode\\`: Number representing the status code (required)\\n \\n - \\`message\\`: String containing a message about the transaction (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`value\\`: String or Number representing the field value (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4409
- inputSchema: sell_xbox_gamepass_core_3_mesesInputJsonSchema,
4188
+ inputSchema: sell_xbox_gamepass_core_3_mesesInputValidator,
4410
4189
  jsonSchema: sell_xbox_gamepass_core_3_mesesInputJsonSchema,
4411
4190
  endpoint: '/sells/sell',
4412
4191
  method: 'POST',
@@ -4415,12 +4194,9 @@ export const sell_xbox_gamepass_core_3_mesesTool = {
4415
4194
  handler: async (rawArgs) => {
4416
4195
  try {
4417
4196
  const normalizedArgs = rawArgs ?? {};
4418
- // Extraer secretId del contexto (si viene del HTTP mode)
4419
- const secretId = normalizedArgs._secretId;
4420
- // Remover _secretId de los args antes de validar
4421
- const { _secretId, ...argsToValidate } = normalizedArgs;
4422
- const validatedInput = validateToolInput(sell_xbox_gamepass_core_3_mesesInputValidator, argsToValidate);
4197
+ const validatedInput = validateToolInput(sell_xbox_gamepass_core_3_mesesInputValidator, normalizedArgs);
4423
4198
  const args = validatedInput;
4199
+ const secretId = args._secretId;
4424
4200
  const bodyData = {};
4425
4201
  const productIdValue = args.productId !== undefined ? args.productId : 807;
4426
4202
  if (productIdValue !== undefined)
@@ -4472,16 +4248,15 @@ const product_directtv_go_1014005InputJsonSchema = {
4472
4248
  },
4473
4249
  "required": []
4474
4250
  };
4475
- const product_directtv_go_1014005InputShape = {
4251
+ const product_directtv_go_1014005InputValidator = z.object({
4476
4252
  data: z.record(z.any()).optional().describe("Campo del body: data"),
4477
4253
  productId: z.number().optional().describe("Campo del body: productId")
4478
- };
4479
- const product_directtv_go_1014005InputValidator = z.object(product_directtv_go_1014005InputShape);
4254
+ });
4480
4255
  // Herramienta: product_directtv_go_1014005
4481
4256
  export const product_directtv_go_1014005Tool = {
4482
4257
  name: 'product_directtv_go_1014005',
4483
4258
  description: "---\\n\\n## Description\\n\\nAllows performing a bill payment operation on the platform. Send the request body with the necessary parameters for the payment in the format specified by the PaymentBody object. The response will include the results of the operation in case of success.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n - \\`email\\`: String containing the email address (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4484
- inputSchema: product_directtv_go_1014005InputJsonSchema,
4259
+ inputSchema: product_directtv_go_1014005InputValidator,
4485
4260
  jsonSchema: product_directtv_go_1014005InputJsonSchema,
4486
4261
  endpoint: '/sells/sell',
4487
4262
  method: 'POST',
@@ -4490,12 +4265,9 @@ export const product_directtv_go_1014005Tool = {
4490
4265
  handler: async (rawArgs) => {
4491
4266
  try {
4492
4267
  const normalizedArgs = rawArgs ?? {};
4493
- // Extraer secretId del contexto (si viene del HTTP mode)
4494
- const secretId = normalizedArgs._secretId;
4495
- // Remover _secretId de los args antes de validar
4496
- const { _secretId, ...argsToValidate } = normalizedArgs;
4497
- const validatedInput = validateToolInput(product_directtv_go_1014005InputValidator, argsToValidate);
4268
+ const validatedInput = validateToolInput(product_directtv_go_1014005InputValidator, normalizedArgs);
4498
4269
  const args = validatedInput;
4270
+ const secretId = args._secretId;
4499
4271
  const bodyData = {};
4500
4272
  const dataValue = args.data !== undefined ? args.data : { "cellphone": "3104784242", "email": "fake@refacil.com" };
4501
4273
  if (dataValue !== undefined)
@@ -4544,16 +4316,15 @@ const product_directtv_go_100777InputJsonSchema = {
4544
4316
  },
4545
4317
  "required": []
4546
4318
  };
4547
- const product_directtv_go_100777InputShape = {
4319
+ const product_directtv_go_100777InputValidator = z.object({
4548
4320
  data: z.record(z.any()).optional().describe("Campo del body: data"),
4549
4321
  productId: z.number().optional().describe("Campo del body: productId")
4550
- };
4551
- const product_directtv_go_100777InputValidator = z.object(product_directtv_go_100777InputShape);
4322
+ });
4552
4323
  // Herramienta: product_directtv_go_100777
4553
4324
  export const product_directtv_go_100777Tool = {
4554
4325
  name: 'product_directtv_go_100777',
4555
4326
  description: "---\\n\\n## Description\\n\\nAllows performing a bill payment operation on the platform. Send the request body with the necessary parameters for the payment in the format specified by the PaymentBody object. The response will include the results of the operation in case of success.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n - \\`email\\`: String containing the email address (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4556
- inputSchema: product_directtv_go_100777InputJsonSchema,
4327
+ inputSchema: product_directtv_go_100777InputValidator,
4557
4328
  jsonSchema: product_directtv_go_100777InputJsonSchema,
4558
4329
  endpoint: '/sells/sell',
4559
4330
  method: 'POST',
@@ -4562,12 +4333,9 @@ export const product_directtv_go_100777Tool = {
4562
4333
  handler: async (rawArgs) => {
4563
4334
  try {
4564
4335
  const normalizedArgs = rawArgs ?? {};
4565
- // Extraer secretId del contexto (si viene del HTTP mode)
4566
- const secretId = normalizedArgs._secretId;
4567
- // Remover _secretId de los args antes de validar
4568
- const { _secretId, ...argsToValidate } = normalizedArgs;
4569
- const validatedInput = validateToolInput(product_directtv_go_100777InputValidator, argsToValidate);
4336
+ const validatedInput = validateToolInput(product_directtv_go_100777InputValidator, normalizedArgs);
4570
4337
  const args = validatedInput;
4338
+ const secretId = args._secretId;
4571
4339
  const bodyData = {};
4572
4340
  const dataValue = args.data !== undefined ? args.data : { "cellphone": "3104784242", "email": "fake@refacil.com" };
4573
4341
  if (dataValue !== undefined)
@@ -4616,16 +4384,15 @@ const product_directtv_go_1014004InputJsonSchema = {
4616
4384
  },
4617
4385
  "required": []
4618
4386
  };
4619
- const product_directtv_go_1014004InputShape = {
4387
+ const product_directtv_go_1014004InputValidator = z.object({
4620
4388
  data: z.record(z.any()).optional().describe("Campo del body: data"),
4621
4389
  productId: z.number().optional().describe("Campo del body: productId")
4622
- };
4623
- const product_directtv_go_1014004InputValidator = z.object(product_directtv_go_1014004InputShape);
4390
+ });
4624
4391
  // Herramienta: product_directtv_go_1014004
4625
4392
  export const product_directtv_go_1014004Tool = {
4626
4393
  name: 'product_directtv_go_1014004',
4627
4394
  description: "---\\n\\n## Description\\n\\nAllows performing a bill payment operation on the platform. Send the request body with the necessary parameters for the payment in the format specified by the PaymentBody object. The response will include the results of the operation in case of success.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n - \\`email\\`: String containing the email address (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4628
- inputSchema: product_directtv_go_1014004InputJsonSchema,
4395
+ inputSchema: product_directtv_go_1014004InputValidator,
4629
4396
  jsonSchema: product_directtv_go_1014004InputJsonSchema,
4630
4397
  endpoint: '/sells/sell',
4631
4398
  method: 'POST',
@@ -4634,12 +4401,9 @@ export const product_directtv_go_1014004Tool = {
4634
4401
  handler: async (rawArgs) => {
4635
4402
  try {
4636
4403
  const normalizedArgs = rawArgs ?? {};
4637
- // Extraer secretId del contexto (si viene del HTTP mode)
4638
- const secretId = normalizedArgs._secretId;
4639
- // Remover _secretId de los args antes de validar
4640
- const { _secretId, ...argsToValidate } = normalizedArgs;
4641
- const validatedInput = validateToolInput(product_directtv_go_1014004InputValidator, argsToValidate);
4404
+ const validatedInput = validateToolInput(product_directtv_go_1014004InputValidator, normalizedArgs);
4642
4405
  const args = validatedInput;
4406
+ const secretId = args._secretId;
4643
4407
  const bodyData = {};
4644
4408
  const dataValue = args.data !== undefined ? args.data : { "cellphone": "3104784242", "email": "fake@refacil.com" };
4645
4409
  if (dataValue !== undefined)
@@ -4695,17 +4459,16 @@ const sell_essaInputJsonSchema = {
4695
4459
  },
4696
4460
  "required": []
4697
4461
  };
4698
- const sell_essaInputShape = {
4462
+ const sell_essaInputValidator = z.object({
4699
4463
  productId: z.number().optional().describe("Campo del body: productId"),
4700
4464
  amount: z.number().optional().describe("Campo del body: amount"),
4701
4465
  data: z.record(z.any()).optional().describe("Campo del body: data")
4702
- };
4703
- const sell_essaInputValidator = z.object(sell_essaInputShape);
4466
+ });
4704
4467
  // Herramienta: sell_essa
4705
4468
  export const sell_essaTool = {
4706
4469
  name: 'sell_essa',
4707
- description: "---\\n\\n## Description\\n\\nAllows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\n\\n**Note**: To make this request in the case of selling invoices, we need the hash and hashEchoData provided by the query response for the reference.\\n\\n### Timeout Configuration\\n\\nThe timeout value specified below is directly established by the provider and must be taken into account in integrations.\\n\\n| Parameter | Value |\\n|-----------|-------|\\n| **Maximum Timeout** | 150 seconds |\\n\\n---\\n\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`amount\\`: Number representing the amount of the payment (required)\\n \\n- \\`sellType\\`: String indicating the type of the sell operation (required)\\n \\n- \\`hash\\`: String containing the hash value for the operation (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`reference\\`: String containing the reference number for the payment (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number associated with the payment (required)\\n \\n - \\`hashEchoData\\`: String containing the hash echo data for the operation (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4708
- inputSchema: sell_essaInputJsonSchema,
4470
+ description: "---\\n\\n## Description\\n\\nAllows performing a sale on the platform. Send the request body with the necessary parameters for the sale in the format specified by the SellBody object. This operation will return a response that includes information about the sale in case of success.\\n\\n**Note**: To make this request in the case of selling invoices, we need the hash and hashEchoData provided by the query response for the reference.\\n\\n### Timeout Configuration\\n\\nThe timeout value specified below is directly established by the provider and must be taken into account in integrations.\\n\\n| Parameter | Value |\\n| --- | --- |\\n| **Maximum Timeout** | 150 seconds |\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`amount\\`: Number representing the amount of the payment. Minimun value: 10,000 (required)\\n \\n- \\`sellType\\`: String indicating the type of the sell operation (required)\\n \\n- \\`hash\\`: String containing the hash value for the operation (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`reference\\`: String containing the reference number for the payment (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number associated with the payment (required)\\n \\n - \\`hashEchoData\\`: String containing the hash echo data for the operation (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4471
+ inputSchema: sell_essaInputValidator,
4709
4472
  jsonSchema: sell_essaInputJsonSchema,
4710
4473
  endpoint: '/sells/sell',
4711
4474
  method: 'POST',
@@ -4714,12 +4477,9 @@ export const sell_essaTool = {
4714
4477
  handler: async (rawArgs) => {
4715
4478
  try {
4716
4479
  const normalizedArgs = rawArgs ?? {};
4717
- // Extraer secretId del contexto (si viene del HTTP mode)
4718
- const secretId = normalizedArgs._secretId;
4719
- // Remover _secretId de los args antes de validar
4720
- const { _secretId, ...argsToValidate } = normalizedArgs;
4721
- const validatedInput = validateToolInput(sell_essaInputValidator, argsToValidate);
4480
+ const validatedInput = validateToolInput(sell_essaInputValidator, normalizedArgs);
4722
4481
  const args = validatedInput;
4482
+ const secretId = args._secretId;
4723
4483
  const bodyData = {};
4724
4484
  const productIdValue = args.productId !== undefined ? args.productId : 230;
4725
4485
  if (productIdValue !== undefined)
@@ -4776,17 +4536,16 @@ const sell_energia_emsaInputJsonSchema = {
4776
4536
  },
4777
4537
  "required": []
4778
4538
  };
4779
- const sell_energia_emsaInputShape = {
4539
+ const sell_energia_emsaInputValidator = z.object({
4780
4540
  productId: z.number().optional().describe("Campo del body: productId"),
4781
4541
  amount: z.number().optional().describe("Campo del body: amount"),
4782
4542
  data: z.record(z.any()).optional().describe("Campo del body: data")
4783
- };
4784
- const sell_energia_emsaInputValidator = z.object(sell_energia_emsaInputShape);
4543
+ });
4785
4544
  // Herramienta: sell_energia_emsa
4786
4545
  export const sell_energia_emsaTool = {
4787
4546
  name: 'sell_energia_emsa',
4788
4547
  description: "---\\n\\n## Description\\n\\nAllows performing a bill payment operation on the platform. Send the request body with the necessary parameters for the payment in the format specified by the PaymentBody object. The response will include the results of the operation in case of success.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`amount\\`: Number representing the amount of the payment (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n - \\`reference\\`: String containing the reference number for the payment (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4789
- inputSchema: sell_energia_emsaInputJsonSchema,
4548
+ inputSchema: sell_energia_emsaInputValidator,
4790
4549
  jsonSchema: sell_energia_emsaInputJsonSchema,
4791
4550
  endpoint: '/sells/sell',
4792
4551
  method: 'POST',
@@ -4795,12 +4554,9 @@ export const sell_energia_emsaTool = {
4795
4554
  handler: async (rawArgs) => {
4796
4555
  try {
4797
4556
  const normalizedArgs = rawArgs ?? {};
4798
- // Extraer secretId del contexto (si viene del HTTP mode)
4799
- const secretId = normalizedArgs._secretId;
4800
- // Remover _secretId de los args antes de validar
4801
- const { _secretId, ...argsToValidate } = normalizedArgs;
4802
- const validatedInput = validateToolInput(sell_energia_emsaInputValidator, argsToValidate);
4557
+ const validatedInput = validateToolInput(sell_energia_emsaInputValidator, normalizedArgs);
4803
4558
  const args = validatedInput;
4559
+ const secretId = args._secretId;
4804
4560
  const bodyData = {};
4805
4561
  const productIdValue = args.productId !== undefined ? args.productId : 231;
4806
4562
  if (productIdValue !== undefined)
@@ -4864,18 +4620,17 @@ const product_energia_prepago_epmInputJsonSchema = {
4864
4620
  },
4865
4621
  "required": []
4866
4622
  };
4867
- const product_energia_prepago_epmInputShape = {
4623
+ const product_energia_prepago_epmInputValidator = z.object({
4868
4624
  queryType: z.string().optional().describe("Campo del body: queryType"),
4869
4625
  productId: z.number().optional().describe("Campo del body: productId"),
4870
4626
  amount: z.number().optional().describe("Campo del body: amount"),
4871
4627
  data: z.record(z.any()).optional().describe("Campo del body: data")
4872
- };
4873
- const product_energia_prepago_epmInputValidator = z.object(product_energia_prepago_epmInputShape);
4628
+ });
4874
4629
  // Herramienta: product_energia_prepago_epm
4875
4630
  export const product_energia_prepago_epmTool = {
4876
4631
  name: 'product_energia_prepago_epm',
4877
4632
  description: "---\\n\\n## Description\\n\\nAllows performing a custom query on the platform. Send the request body with the necessary parameters for the query in the format specified by the QueryBody object. The response will include the results of the query in case of success.\\n\\n### Timeout Configuration\\n\\nThe timeout value specified below is directly established by the provider and must be taken into account in integrations.\\n\\n| Parameter | Value |\\n|-----------|-------|\\n| **Maximum Timeout** | 150 seconds |\\n\\n\\n---\\n\\n## Request Schema\\n\\n- \\`queryType\\`: String representing the type of query (required)\\n \\n- \\`productId\\`: Number representing the product identifier (required)\\n \\n- \\`amount\\`: Number representing the amount for the query (required)\\n \\n- \\`data\\`: Object containing additional data (required)\\n \\n - \\`carrierId\\`: Number representing the carrier identifier (required)\\n \\n - \\`cellphone\\`: String containing the cellphone number (required)\\n \\n - \\`reference\\`: String containing the reference number for the query (required)\\n \\n - \\`method\\`: String representing the method of the query (required)\\n \\n\\n---\\n\\n## Response Schema\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\\n \\n - \\`date\\`: Number representing the timestamp of the operation (required)\\n \\n - \\`sellId\\`: Number representing the identifier of the sell operation (required)\\n \\n - \\`payload\\`: Object containing the main response data (required)\\n \\n - \\`preBalance\\`: Number representing the balance before the operation (required)\\n \\n - \\`posBalance\\`: Number representing the balance after the operation (required)\\n \\n - \\`tmpBalance\\`: Number representing the temporary balance (required)\\n \\n - \\`debt\\`: Number representing the debt amount (required)\\n \\n - \\`billData\\`: Object containing bill-related data (required)\\n \\n - \\`fields\\`: Array of field objects (required)\\n \\n - \\`name\\`: String representing the field name (required)\\n \\n - \\`type\\`: String representing the field type (required)\\n \\n - \\`options\\`: Array of option objects (required)\\n \\n - \\`label\\`: String representing the option label (required)\\n \\n - \\`value\\`: String representing the option value (required)\\n \\n - \\`label\\`: String representing the field label (required)\\n \\n - \\`placeholder\\`: String representing the field placeholder (required)\\n \\n - \\`required\\`: Boolean indicating if the field is required (required)\\n \\n - \\`costs\\`: Array of cost objects (required)\\n \\n - \\`label\\`: String representing the cost label (required)\\n \\n - \\`value\\`: Number representing the cost value (required)\\n \\n - \\`messages\\`: Array of message objects (required)\\n \\n - \\`value\\`: String representing the message value (required)\\n \\n - \\`stringInformation\\`: Array of string information objects (required)\\n \\n - \\`value\\`: String representing the string information value (required)\\n \\n - \\`footerInformation\\`: Array of footer information objects (required)\\n \\n - \\`share\\`: Object containing share information (required)\\n \\n - \\`cellphone\\`: String representing the cellphone number (required)\\n \\n - \\`message\\`: String representing the message (required)\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4878
- inputSchema: product_energia_prepago_epmInputJsonSchema,
4633
+ inputSchema: product_energia_prepago_epmInputValidator,
4879
4634
  jsonSchema: product_energia_prepago_epmInputJsonSchema,
4880
4635
  endpoint: '/sells/sell',
4881
4636
  method: 'POST',
@@ -4884,12 +4639,9 @@ export const product_energia_prepago_epmTool = {
4884
4639
  handler: async (rawArgs) => {
4885
4640
  try {
4886
4641
  const normalizedArgs = rawArgs ?? {};
4887
- // Extraer secretId del contexto (si viene del HTTP mode)
4888
- const secretId = normalizedArgs._secretId;
4889
- // Remover _secretId de los args antes de validar
4890
- const { _secretId, ...argsToValidate } = normalizedArgs;
4891
- const validatedInput = validateToolInput(product_energia_prepago_epmInputValidator, argsToValidate);
4642
+ const validatedInput = validateToolInput(product_energia_prepago_epmInputValidator, normalizedArgs);
4892
4643
  const args = validatedInput;
4644
+ const secretId = args._secretId;
4893
4645
  const bodyData = {};
4894
4646
  const queryTypeValue = args.queryType !== undefined ? args.queryType : "ConfirmData";
4895
4647
  if (queryTypeValue !== undefined)
@@ -4952,18 +4704,17 @@ const query_63InputJsonSchema = {
4952
4704
  },
4953
4705
  "required": []
4954
4706
  };
4955
- const query_63InputShape = {
4707
+ const query_63InputValidator = z.object({
4956
4708
  productId: z.number().optional().describe("Campo del body: productId"),
4957
4709
  queryType: z.string().optional().describe("Campo del body: queryType"),
4958
4710
  ownAgreementId: z.any().optional().describe("Campo del body: ownAgreementId"),
4959
4711
  data: z.record(z.any()).optional().describe("Campo del body: data")
4960
- };
4961
- const query_63InputValidator = z.object(query_63InputShape);
4712
+ });
4962
4713
  // Herramienta: query_63
4963
4714
  export const query_63Tool = {
4964
4715
  name: 'query_63',
4965
4716
  description: "Here you will find all the endpoints related to Transfiya correspondent selling.\\n\\n**Note:** The products associated with Transfiya Correspondent Sales have an administrative cost for each sale made. For more information, please contact your sales agent.\\n\\n## Webhook\\n\\nTo sell productos assicieated with Transfiya in mandatory implemnt the webhook. Throught the webhook the status of the transaction is notified. The webhook is a local Refacil proxy that forward the notifications requests to the final webhook.\\n\\n<img src=\\\"https://content.pstmn.io/cf2fe660-bd59-477e-8925-f9017ff37f6b/aW1hZ2UucG5n\\\" width=\\\"617\\\" height=\\\"398\\\">\\n\\n### Authentication\\n\\nThe JWT is generated with a public and private key. Refacil will provide a public key to validate the JWT. Here is an example to validate the JWT:\\n\\n\\`\\`\\` typescript\\nimport { verify } from \\'jsonwebtoken\\';\\nasync validateJwt(token: string): Promise<any> {\\n const publicKey = \\'the public key provided by Refacil...\\';\\n try {\\n const decoded = verify(token, publicKey, {\\n algorithms: [\\'RS256\\'],\\n });\\n return {\\n valid: true,\\n message: \\'Token is valid.\\',\\n data: decoded,\\n }; \\n } catch (error) {\\n if (error.name === \\'JsonWebTokenError\\') {\\n throw new ForbiddenException(\\'Invalid token.\\');\\n } else {\\n throw new UnauthorizedException(\\'Token verification failed.\\');\\n }\\n }\\n}\\n\\n \\`\\`\\`\\n\\n### Webhook request body\\n\\n\\`\\`\\` json\\n{\\n \\\"saleId\\\": 438927666,\\n \\\"status\\\": 0,\\n \\\"transfiyaStatus\\\": \\\"PENDING\\\",\\n \\\"reversed\\\": true,\\n \\\"errorCode\\\": \\\"130\\\"\\n}\\n\\n \\`\\`\\`\\n\\n| **Parameter** | **Description** |\\n| --- | --- |\\n| \\`saleId\\` | ID of the sale returned by the sale request |\\n| \\`status\\` | Indicates the status of the sale: <br>\\`0\\`: Failed <br>\\`1\\`: Successful <br>\\`9\\`: Pending |\\n| \\`transfiyaStatus\\` | The TransfiYa status, see the details below |\\n| \\`reversed\\` | This parameter is only used in deposits transactions. <br> <br>A boolean indicating if the balance was refunded to the POC: <br>\\`true\\`: Refunded <br>\\`false\\`: Not refunded <br> <br>When reversed is false, the balance was not refunded, and you should contact customer service using the contact details provided by your commercial agent |\\n| \\`errorCode\\` | The error code of the transaction, see the list below |\\n\\n### Webhook request example\\n\\n\\`\\`\\` bash\\ncurl --location --globoff \\'https://acme.refacil.local/transfiYaNotifications\\' \\\\\\n--header \\'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\\' \\\\\\n--header \\'Content-Type: application/json\\' \\\\\\n--data \\'{\\n \\\"saleId\\\": 438927666,\\n \\\"status\\\": 0,\\n \\\"transfiyaStatus\\\": \\\"REJECTED\\\",\\n \\\"reversed\\\": true,\\n \\\"errorCode\\\": \\\"TFYA302\\\"\\n }\\'\\n\\n \\`\\`\\`\\n\\n## TransfiYa Status\\n\\n| **transfiyaStatus** | **Withdrawal transaction status** | **Deposits transaction status** | Description |\\n| --- | --- | --- | --- |\\n| \\`CREATED\\` | \\`9\\`: Pending | \\`1\\`: Successful | Transfer is received and queued for processing. |\\n| \\`PENDING\\` | \\`9\\`: Pending | \\`1\\`: Successful | Transfer is valid and is waiting for the target to accept it. |\\n| \\`ACCEPTED\\` | \\`9\\`: Pending | \\`1\\`: Successful | Transfer has been accepted by the target, and payment is pending in the target bank. |\\n| \\`COMPLETED\\` | \\`1\\`: Successful | \\`1\\`: Successful | The payment is valid and completely processed, visible in the receiving bank account. |\\n| \\`REJECTED\\` | \\`0\\`: Failed | \\`1\\`: Successful | Payment was rejected. |\\n| \\`ERROR\\` | \\`0\\`: Failed | \\`1\\`: Successful | An error occurred during payment. |\\n\\n### Transfer state machine\\n\\n<img src=\\\"https://content.pstmn.io/89f89557-2e1b-44c2-8dcb-d9e7d2f32c54/aW1hZ2UucG5n\\\" width=\\\"293\\\" height=\\\"380\\\">\\n\\n## Error Codes\\n\\n| Code | Description |\\n| --- | --- |\\n| TFYA307 | Cuenta inactiva |\\n| TFYA309 | La cuenta no existe |\\n| TFYA310 | La cuenta no está habilitada |\\n| TFYA316 | Los datos transaccionales no son consistentes |\\n| TFYA332 | Error bancario indefinido |\\n\\n\n\nContexto: Endpoint: POST /product/query | Product > Query\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
4966
- inputSchema: query_63InputJsonSchema,
4717
+ inputSchema: query_63InputValidator,
4967
4718
  jsonSchema: query_63InputJsonSchema,
4968
4719
  endpoint: '/product/query',
4969
4720
  method: 'POST',
@@ -4972,12 +4723,9 @@ export const query_63Tool = {
4972
4723
  handler: async (rawArgs) => {
4973
4724
  try {
4974
4725
  const normalizedArgs = rawArgs ?? {};
4975
- // Extraer secretId del contexto (si viene del HTTP mode)
4976
- const secretId = normalizedArgs._secretId;
4977
- // Remover _secretId de los args antes de validar
4978
- const { _secretId, ...argsToValidate } = normalizedArgs;
4979
- const validatedInput = validateToolInput(query_63InputValidator, argsToValidate);
4726
+ const validatedInput = validateToolInput(query_63InputValidator, normalizedArgs);
4980
4727
  const args = validatedInput;
4728
+ const secretId = args._secretId;
4981
4729
  const bodyData = {};
4982
4730
  const productIdValue = args.productId !== undefined ? args.productId : 240;
4983
4731
  if (productIdValue !== undefined)
@@ -5040,18 +4788,17 @@ const sell_transfiya_withdrawalsInputJsonSchema = {
5040
4788
  },
5041
4789
  "required": []
5042
4790
  };
5043
- const sell_transfiya_withdrawalsInputShape = {
4791
+ const sell_transfiya_withdrawalsInputValidator = z.object({
5044
4792
  productId: z.number().optional().describe("Campo del body: productId"),
5045
4793
  amount: z.number().optional().describe("Campo del body: amount"),
5046
4794
  webhookUrl: z.string().optional().describe("Campo del body: webhookUrl"),
5047
4795
  data: z.record(z.any()).optional().describe("Campo del body: data")
5048
- };
5049
- const sell_transfiya_withdrawalsInputValidator = z.object(sell_transfiya_withdrawalsInputShape);
4796
+ });
5050
4797
  // Herramienta: sell_transfiya_withdrawals
5051
4798
  export const sell_transfiya_withdrawalsTool = {
5052
4799
  name: 'sell_transfiya_withdrawals',
5053
4800
  description: "Here you will find all the endpoints related to Transfiya correspondent selling.\\n\\n**Note:** The products associated with Transfiya Correspondent Sales have an administrative cost for each sale made. For more information, please contact your sales agent.\\n\\n## Webhook\\n\\nTo sell productos assicieated with Transfiya in mandatory implemnt the webhook. Throught the webhook the status of the transaction is notified. The webhook is a local Refacil proxy that forward the notifications requests to the final webhook.\\n\\n<img src=\\\"https://content.pstmn.io/cf2fe660-bd59-477e-8925-f9017ff37f6b/aW1hZ2UucG5n\\\" width=\\\"617\\\" height=\\\"398\\\">\\n\\n### Authentication\\n\\nThe JWT is generated with a public and private key. Refacil will provide a public key to validate the JWT. Here is an example to validate the JWT:\\n\\n\\`\\`\\` typescript\\nimport { verify } from \\'jsonwebtoken\\';\\nasync validateJwt(token: string): Promise<any> {\\n const publicKey = \\'the public key provided by Refacil...\\';\\n try {\\n const decoded = verify(token, publicKey, {\\n algorithms: [\\'RS256\\'],\\n });\\n return {\\n valid: true,\\n message: \\'Token is valid.\\',\\n data: decoded,\\n }; \\n } catch (error) {\\n if (error.name === \\'JsonWebTokenError\\') {\\n throw new ForbiddenException(\\'Invalid token.\\');\\n } else {\\n throw new UnauthorizedException(\\'Token verification failed.\\');\\n }\\n }\\n}\\n\\n \\`\\`\\`\\n\\n### Webhook request body\\n\\n\\`\\`\\` json\\n{\\n \\\"saleId\\\": 438927666,\\n \\\"status\\\": 0,\\n \\\"transfiyaStatus\\\": \\\"PENDING\\\",\\n \\\"reversed\\\": true,\\n \\\"errorCode\\\": \\\"130\\\"\\n}\\n\\n \\`\\`\\`\\n\\n| **Parameter** | **Description** |\\n| --- | --- |\\n| \\`saleId\\` | ID of the sale returned by the sale request |\\n| \\`status\\` | Indicates the status of the sale: <br>\\`0\\`: Failed <br>\\`1\\`: Successful <br>\\`9\\`: Pending |\\n| \\`transfiyaStatus\\` | The TransfiYa status, see the details below |\\n| \\`reversed\\` | This parameter is only used in deposits transactions. <br> <br>A boolean indicating if the balance was refunded to the POC: <br>\\`true\\`: Refunded <br>\\`false\\`: Not refunded <br> <br>When reversed is false, the balance was not refunded, and you should contact customer service using the contact details provided by your commercial agent |\\n| \\`errorCode\\` | The error code of the transaction, see the list below |\\n\\n### Webhook request example\\n\\n\\`\\`\\` bash\\ncurl --location --globoff \\'https://acme.refacil.local/transfiYaNotifications\\' \\\\\\n--header \\'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\\' \\\\\\n--header \\'Content-Type: application/json\\' \\\\\\n--data \\'{\\n \\\"saleId\\\": 438927666,\\n \\\"status\\\": 0,\\n \\\"transfiyaStatus\\\": \\\"REJECTED\\\",\\n \\\"reversed\\\": true,\\n \\\"errorCode\\\": \\\"TFYA302\\\"\\n }\\'\\n\\n \\`\\`\\`\\n\\n## TransfiYa Status\\n\\n| **transfiyaStatus** | **Withdrawal transaction status** | **Deposits transaction status** | Description |\\n| --- | --- | --- | --- |\\n| \\`CREATED\\` | \\`9\\`: Pending | \\`1\\`: Successful | Transfer is received and queued for processing. |\\n| \\`PENDING\\` | \\`9\\`: Pending | \\`1\\`: Successful | Transfer is valid and is waiting for the target to accept it. |\\n| \\`ACCEPTED\\` | \\`9\\`: Pending | \\`1\\`: Successful | Transfer has been accepted by the target, and payment is pending in the target bank. |\\n| \\`COMPLETED\\` | \\`1\\`: Successful | \\`1\\`: Successful | The payment is valid and completely processed, visible in the receiving bank account. |\\n| \\`REJECTED\\` | \\`0\\`: Failed | \\`1\\`: Successful | Payment was rejected. |\\n| \\`ERROR\\` | \\`0\\`: Failed | \\`1\\`: Successful | An error occurred during payment. |\\n\\n### Transfer state machine\\n\\n<img src=\\\"https://content.pstmn.io/89f89557-2e1b-44c2-8dcb-d9e7d2f32c54/aW1hZ2UucG5n\\\" width=\\\"293\\\" height=\\\"380\\\">\\n\\n## Error Codes\\n\\n| Code | Description |\\n| --- | --- |\\n| TFYA307 | Cuenta inactiva |\\n| TFYA309 | La cuenta no existe |\\n| TFYA310 | La cuenta no está habilitada |\\n| TFYA316 | Los datos transaccionales no son consistentes |\\n| TFYA332 | Error bancario indefinido |\\n\\n # Sucessful withdrawal process\\n\\n<img src=\\\"https://content.pstmn.io/73d6a308-4673-4a18-b603-56f04990312a/aW1hZ2UucG5n\\\" alt=\\\"Withdrawal%20secuence%20diagram\\\" width=\\\"844\\\" height=\\\"628\\\">\\n\\n**Step 1: POC requests transaction:** The POC initiates a transaction request to the **Integrator**.\\n\\n**Step 2: Integrator forwards the request to Refacil API:** The **Integrator** forwards the request to the **Refacil API** for further processing.\\n\\n**Step 3: Refacil API sends request to Transfiya:** The **Refacil API** sends a request to **Transfiya** to create a transaction.\\n\\n**Step 4: Refacil creates pending transaction:** The **Refacil** system creates a pending transaction and returns the response to the **Integrator**.\\n\\n**Step 5: Transfiya notifies banks by SMS: Transfiya** sends SMS notification to the user and sends push notifications to all banks associated with the user, informing them about the pending transaction.\\n\\n**Step 6: User approves transaction:** The end-user approves the transaction through bank application.\\n\\n**Step 7: Transfiya notifies Refacil API:** Once the user approves the transaction, **Transfiya** sends a notification to the **Refacil API** indicating the status of the transaction.\\n\\n**Step 8: Refacil API notifies Integrator:** The **Refacil API** notifies the **Integrator** of the transaction status, using a webhook mechanism. For each transaction state (in this case, PENDING), it sends data that includes the sale ID and transaction status.\\n\\n**Step 9: Transaction processing (If completed):** If the transaction status changes to \\\"COMPLETED,\\\" the system processes the transaction by:\\n\\n- Adding balance to the user\\'s account.\\n \\n- Processing commissions related to the transaction.\\n \\n\\n# Failed withdrawal process\\n\\n<img src=\\\"https://content.pstmn.io/2205c66f-8681-40c4-8e40-50e6aa43d60f/aW1hZ2UucG5n\\\" width=\\\"767\\\" height=\\\"566\\\">\\n\\n**Step 1: POC requests transaction:** The POC initiates a transaction request to the **Integrator**.\\n\\n**Step 2: Integrator forwards the request to Refacil API:** The **Integrator** forwards the request to the **Refacil API** for further processing.\\n\\n**Step 3: Refacil API sends request to Transfiya:** The **Refacil API** sends a request to **Transfiya** to create a transaction.\\n\\n**Step 4: Refacil creates pending transaction:** The **Refacil** system creates a pending transaction and returns the response to the **Integrator**.\\n\\n**Step 5: Transfiya notifies banks by SMS: Transfiya** sends SMS notification to the user and sends push notifications to all banks associated with the user, informing them about the pending transaction.\\n\\n**Step 6: User rejects the transaction:** The user rejects the transaction, causing the process to fail.\\n\\n**Step 7: Transfiya notifies Refacil API:** Once the user rejects the transaction, **Transfiya** sends a notification back to the **Refacil API**, indicating that the transaction has been marked as failed.\\n\\n**Step 8: Refacil API notifies Integrator:** The **Refacil API** notifies the **Integrator** using a webhook, providing details about the failed transaction.\\n\\n**Step 9: Transaction marked as failed:** If the transaction status changes to \\\"REJECTED,\\\" the transaction is officially marked as failed within the system.\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
5054
- inputSchema: sell_transfiya_withdrawalsInputJsonSchema,
4801
+ inputSchema: sell_transfiya_withdrawalsInputValidator,
5055
4802
  jsonSchema: sell_transfiya_withdrawalsInputJsonSchema,
5056
4803
  endpoint: '/sells/sell',
5057
4804
  method: 'POST',
@@ -5060,12 +4807,9 @@ export const sell_transfiya_withdrawalsTool = {
5060
4807
  handler: async (rawArgs) => {
5061
4808
  try {
5062
4809
  const normalizedArgs = rawArgs ?? {};
5063
- // Extraer secretId del contexto (si viene del HTTP mode)
5064
- const secretId = normalizedArgs._secretId;
5065
- // Remover _secretId de los args antes de validar
5066
- const { _secretId, ...argsToValidate } = normalizedArgs;
5067
- const validatedInput = validateToolInput(sell_transfiya_withdrawalsInputValidator, argsToValidate);
4810
+ const validatedInput = validateToolInput(sell_transfiya_withdrawalsInputValidator, normalizedArgs);
5068
4811
  const args = validatedInput;
4812
+ const secretId = args._secretId;
5069
4813
  const bodyData = {};
5070
4814
  const productIdValue = args.productId !== undefined ? args.productId : 241;
5071
4815
  if (productIdValue !== undefined)
@@ -5130,18 +4874,17 @@ const sell_transfiya_depositsInputJsonSchema = {
5130
4874
  },
5131
4875
  "required": []
5132
4876
  };
5133
- const sell_transfiya_depositsInputShape = {
4877
+ const sell_transfiya_depositsInputValidator = z.object({
5134
4878
  productId: z.number().optional().describe("Campo del body: productId"),
5135
4879
  amount: z.number().optional().describe("Campo del body: amount"),
5136
4880
  webhookUrl: z.string().optional().describe("Campo del body: webhookUrl"),
5137
4881
  data: z.record(z.any()).optional().describe("Campo del body: data")
5138
- };
5139
- const sell_transfiya_depositsInputValidator = z.object(sell_transfiya_depositsInputShape);
4882
+ });
5140
4883
  // Herramienta: sell_transfiya_deposits
5141
4884
  export const sell_transfiya_depositsTool = {
5142
4885
  name: 'sell_transfiya_deposits',
5143
4886
  description: "Here you will find all the endpoints related to Transfiya correspondent selling.\\n\\n**Note:** The products associated with Transfiya Correspondent Sales have an administrative cost for each sale made. For more information, please contact your sales agent.\\n\\n## Webhook\\n\\nTo sell productos assicieated with Transfiya in mandatory implemnt the webhook. Throught the webhook the status of the transaction is notified. The webhook is a local Refacil proxy that forward the notifications requests to the final webhook.\\n\\n<img src=\\\"https://content.pstmn.io/cf2fe660-bd59-477e-8925-f9017ff37f6b/aW1hZ2UucG5n\\\" width=\\\"617\\\" height=\\\"398\\\">\\n\\n### Authentication\\n\\nThe JWT is generated with a public and private key. Refacil will provide a public key to validate the JWT. Here is an example to validate the JWT:\\n\\n\\`\\`\\` typescript\\nimport { verify } from \\'jsonwebtoken\\';\\nasync validateJwt(token: string): Promise<any> {\\n const publicKey = \\'the public key provided by Refacil...\\';\\n try {\\n const decoded = verify(token, publicKey, {\\n algorithms: [\\'RS256\\'],\\n });\\n return {\\n valid: true,\\n message: \\'Token is valid.\\',\\n data: decoded,\\n }; \\n } catch (error) {\\n if (error.name === \\'JsonWebTokenError\\') {\\n throw new ForbiddenException(\\'Invalid token.\\');\\n } else {\\n throw new UnauthorizedException(\\'Token verification failed.\\');\\n }\\n }\\n}\\n\\n \\`\\`\\`\\n\\n### Webhook request body\\n\\n\\`\\`\\` json\\n{\\n \\\"saleId\\\": 438927666,\\n \\\"status\\\": 0,\\n \\\"transfiyaStatus\\\": \\\"PENDING\\\",\\n \\\"reversed\\\": true,\\n \\\"errorCode\\\": \\\"130\\\"\\n}\\n\\n \\`\\`\\`\\n\\n| **Parameter** | **Description** |\\n| --- | --- |\\n| \\`saleId\\` | ID of the sale returned by the sale request |\\n| \\`status\\` | Indicates the status of the sale: <br>\\`0\\`: Failed <br>\\`1\\`: Successful <br>\\`9\\`: Pending |\\n| \\`transfiyaStatus\\` | The TransfiYa status, see the details below |\\n| \\`reversed\\` | This parameter is only used in deposits transactions. <br> <br>A boolean indicating if the balance was refunded to the POC: <br>\\`true\\`: Refunded <br>\\`false\\`: Not refunded <br> <br>When reversed is false, the balance was not refunded, and you should contact customer service using the contact details provided by your commercial agent |\\n| \\`errorCode\\` | The error code of the transaction, see the list below |\\n\\n### Webhook request example\\n\\n\\`\\`\\` bash\\ncurl --location --globoff \\'https://acme.refacil.local/transfiYaNotifications\\' \\\\\\n--header \\'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\\' \\\\\\n--header \\'Content-Type: application/json\\' \\\\\\n--data \\'{\\n \\\"saleId\\\": 438927666,\\n \\\"status\\\": 0,\\n \\\"transfiyaStatus\\\": \\\"REJECTED\\\",\\n \\\"reversed\\\": true,\\n \\\"errorCode\\\": \\\"TFYA302\\\"\\n }\\'\\n\\n \\`\\`\\`\\n\\n## TransfiYa Status\\n\\n| **transfiyaStatus** | **Withdrawal transaction status** | **Deposits transaction status** | Description |\\n| --- | --- | --- | --- |\\n| \\`CREATED\\` | \\`9\\`: Pending | \\`1\\`: Successful | Transfer is received and queued for processing. |\\n| \\`PENDING\\` | \\`9\\`: Pending | \\`1\\`: Successful | Transfer is valid and is waiting for the target to accept it. |\\n| \\`ACCEPTED\\` | \\`9\\`: Pending | \\`1\\`: Successful | Transfer has been accepted by the target, and payment is pending in the target bank. |\\n| \\`COMPLETED\\` | \\`1\\`: Successful | \\`1\\`: Successful | The payment is valid and completely processed, visible in the receiving bank account. |\\n| \\`REJECTED\\` | \\`0\\`: Failed | \\`1\\`: Successful | Payment was rejected. |\\n| \\`ERROR\\` | \\`0\\`: Failed | \\`1\\`: Successful | An error occurred during payment. |\\n\\n### Transfer state machine\\n\\n<img src=\\\"https://content.pstmn.io/89f89557-2e1b-44c2-8dcb-d9e7d2f32c54/aW1hZ2UucG5n\\\" width=\\\"293\\\" height=\\\"380\\\">\\n\\n## Error Codes\\n\\n| Code | Description |\\n| --- | --- |\\n| TFYA307 | Cuenta inactiva |\\n| TFYA309 | La cuenta no existe |\\n| TFYA310 | La cuenta no está habilitada |\\n| TFYA316 | Los datos transaccionales no son consistentes |\\n| TFYA332 | Error bancario indefinido |\\n\\n For deposits with the following numbers the following tests can be carried out.\\n\\nAutomatically approved: 3051000002\\n\\nAutomatically rejected: 3002491283\\n\\n## Sucessful deposit process\\n\\n<img src=\\\"https://content.pstmn.io/63835630-ee0d-4be2-952b-57c3d5c59ef6/aW1hZ2UucG5n\\\" alt=\\\"\\\" height=\\\"545\\\" width=\\\"763\\\">\\n\\n**Step 1: POC initiates a request:** The POC sends a request to the **Integrator** specifying a selected bank where the deposit should occur.\\n\\n**Step 2: Integrator sends request to Refacil API:** The **Integrator** forwards the deposit request to the **Refacil API** for processing.\\n\\n**Step 3: Refacil API sends request to Transfiya:** The **Refacil API** sends a request to **Transfiya** to create the transaction and process the deposit.\\n\\n**Step 4: Refacil API creates a successful transaction**: The **Refacil API** creates a successful transaction and debits the corresponding balance from the system.\\n\\n**Step 5: Transfiya validates and processes the transaction: Transfiya** validates the transaction and processes it successfully. It also makes sure that the transaction is ready for the deposit.\\n\\n**Step 6: Transfiya notifies and deposits to the selected bank: Transfiya** sends a notification that the deposit is successful and proceeds to deposit the amount to the selected bank account.\\n\\n**Step 7: Refacil API receives a notification from Transfiya: Transfiya** sends a notification back to the **Refacil API** indicating that the transaction has been successfully completed.\\n\\n**Step 8: Refacil API notifies Integrator:** The **Refacil API** notifies the Integrator of the transaction status, using a webhook mechanism. For each transaction state (in this case, COMPLETED), it sends data that includes the sale ID and transaction status.\\n\\n**Step 9: Process commissions:** If the transaction status changes to \\\"COMPLETED,\\\" The system processes commissions related to the transaction after the deposit is made.\\n\\n# Failed deposit process\\n\\n<img src=\\\"https://content.pstmn.io/52fc69a9-4395-4759-bae5-b13ec66cfe45/aW1hZ2UucG5n\\\" width=\\\"785\\\" height=\\\"574\\\">\\n\\n**Step 1: POC requests a deposit to a selected bank**: The **POC** initiates a deposit request to the **Integrator**, specifying the selected bank.\\n\\n**Step 2: Integrator forwards the request to Refacil API:** The **Integrator** sends the deposit request to the **Refacil API** for further processing.\\n\\n**Step 3: Refacil API sends a request to Transfiya:** The **Refacil API** forwards the request to **Transfiya** to process the transaction.\\n\\n**Step 4: Refacil API creates a \\\"successful\\\" transaction and debits the balance:** At this stage, the **Refacil API** debits the balance, assuming the transaction will be successful, and awaits confirmation from **Transfiya**.\\n\\n**Step 5: Transfiya validates the transaction and marks it as failed:** **Transfiya** processes the transaction but finds an issue that causes the transaction to fail. It returns this failed status to the **Refacil API**.\\n\\n**Step 6: Refacil API notifies Integrator via webhook:** The Refacil API sends a webhook notification to the Integrator, informing them that the transaction has failed. The \\`errorCode\\` provides the reason for the failure, while the \\`reversed\\` field indicates whether the balance has been refunded.\\n\\n**Step 7: Handling the reversal:** If the \\`reversed\\` field is \\`false\\`, the system will need to manually create a ticket to refund the balance to the POC.\\n\\n**Step 8: Processing error and refund:** If the error is marked as reversed (\\`reversed: true\\`), two actions will be taken:\\n\\n- **Refund the balance**: The debited amount is returned to the user\\'s account.\\n \\n- **No commission processing**: Since the transaction failed, no commissions are processed for this transaction.\n\nContexto: Endpoint: POST /sells/sell | Sells > Sell\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
5144
- inputSchema: sell_transfiya_depositsInputJsonSchema,
4887
+ inputSchema: sell_transfiya_depositsInputValidator,
5145
4888
  jsonSchema: sell_transfiya_depositsInputJsonSchema,
5146
4889
  endpoint: '/sells/sell',
5147
4890
  method: 'POST',
@@ -5150,12 +4893,9 @@ export const sell_transfiya_depositsTool = {
5150
4893
  handler: async (rawArgs) => {
5151
4894
  try {
5152
4895
  const normalizedArgs = rawArgs ?? {};
5153
- // Extraer secretId del contexto (si viene del HTTP mode)
5154
- const secretId = normalizedArgs._secretId;
5155
- // Remover _secretId de los args antes de validar
5156
- const { _secretId, ...argsToValidate } = normalizedArgs;
5157
- const validatedInput = validateToolInput(sell_transfiya_depositsInputValidator, argsToValidate);
4896
+ const validatedInput = validateToolInput(sell_transfiya_depositsInputValidator, normalizedArgs);
5158
4897
  const args = validatedInput;
4898
+ const secretId = args._secretId;
5159
4899
  const bodyData = {};
5160
4900
  const productIdValue = args.productId !== undefined ? args.productId : 240;
5161
4901
  if (productIdValue !== undefined)
@@ -5226,19 +4966,18 @@ const sells_sale_saleidInputJsonSchema = {
5226
4966
  },
5227
4967
  "required": []
5228
4968
  };
5229
- const sells_sale_saleidInputShape = {
4969
+ const sells_sale_saleidInputValidator = z.object({
5230
4970
  productId: z.number().optional().describe("Campo del body: productId"),
5231
4971
  amount: z.number().optional().describe("Campo del body: amount"),
5232
4972
  sellType: z.string().optional().describe("Campo del body: sellType"),
5233
4973
  hash: z.string().optional().describe("Campo del body: hash"),
5234
4974
  data: z.record(z.any()).optional().describe("Campo del body: data")
5235
- };
5236
- const sells_sale_saleidInputValidator = z.object(sells_sale_saleidInputShape);
4975
+ });
5237
4976
  // Herramienta: sells_sale_saleid
5238
4977
  export const sells_sale_saleidTool = {
5239
4978
  name: 'sells_sale_saleid',
5240
4979
  description: "Here you will find all the endpoints related to multi-product sales.\\n\\n**Note:** If you need information about parameterized commissions, you should consult your sales agent.\\n\\n ---\\n\\n## Description\\n\\nThis method allows you to obtain the details of a sale by providing the unique identifier of the sale.\\n\\n---\\n\\n## Request Schema\\n\\n- \\`saleId\\`: nique identifier of the sale. It can be found in the sell response as \\'saleId\\', \\'sellId\\', or \\'codigo\\'.\\n \\n\\n## Response Schema\\n\\n- \\`id\\`: Unique identifier of the sale. \\'sellId\\', or \\'codigo\\'.\\n \\n- \\`amount\\`: The amount of the sale.\\n \\n- \\`serviceNumber\\`: The number or reference associated to the sale, it depends on the product. .e.g.For SOAT insurance it will be the plate. For packages it will be the phone number.\\n \\n- \\`status\\`: The status of the sale.\\n \\n | status | definition |\\n | --- | --- |\\n | 0 | Failed |\\n | 1 | Successful |\\n | 9 | In progress |\\n \\n- \\`productId\\`: The product id associated to the sale.\\n \\n- \\`createdAt\\`: The created at date.\\n \\n- \\`transactionId\\`: For TransfiYa product, it is the provider transaction id.\\n \\n- \\`extra\\`: Extra data of the sale, It depends on the product. e.g. For SOAT insurance it will be the PDF url of the insurance policy. For pins it will be the pin.\n\nContexto: Endpoint: GET /sells/sale/{saleId} | Sells > Sale > {saleId}\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
5241
- inputSchema: sells_sale_saleidInputJsonSchema,
4980
+ inputSchema: sells_sale_saleidInputValidator,
5242
4981
  jsonSchema: sells_sale_saleidInputJsonSchema,
5243
4982
  endpoint: '/sells/sale/{saleId}',
5244
4983
  method: 'GET',
@@ -5247,12 +4986,9 @@ export const sells_sale_saleidTool = {
5247
4986
  handler: async (rawArgs) => {
5248
4987
  try {
5249
4988
  const normalizedArgs = rawArgs ?? {};
5250
- // Extraer secretId del contexto (si viene del HTTP mode)
5251
- const secretId = normalizedArgs._secretId;
5252
- // Remover _secretId de los args antes de validar
5253
- const { _secretId, ...argsToValidate } = normalizedArgs;
5254
- const validatedInput = validateToolInput(sells_sale_saleidInputValidator, argsToValidate);
4989
+ const validatedInput = validateToolInput(sells_sale_saleidInputValidator, normalizedArgs);
5255
4990
  const args = validatedInput;
4991
+ const secretId = args._secretId;
5256
4992
  const queryParams = {};
5257
4993
  const productIdValue = args.productId !== undefined ? args.productId : 52683;
5258
4994
  if (productIdValue !== undefined)
@@ -5296,13 +5032,12 @@ const bank_get_transfiya_banksInputJsonSchema = {
5296
5032
  "properties": {},
5297
5033
  "required": []
5298
5034
  };
5299
- const bank_get_transfiya_banksInputShape = {};
5300
- const bank_get_transfiya_banksInputValidator = z.object(bank_get_transfiya_banksInputShape);
5035
+ const bank_get_transfiya_banksInputValidator = z.object({});
5301
5036
  // Herramienta: bank_get_transfiya_banks
5302
5037
  export const bank_get_transfiya_banksTool = {
5303
5038
  name: 'bank_get_transfiya_banks',
5304
5039
  description: "---\\n\\n### Description\\n\\nReturn the banks that support Transfiya for the specified transfer type.\\n\\nBelow is a list of authorized banks:\\n\\n| BANK | LOGO |\\n| --- | --- |\\n| BANCOLOMBIA | <img src=\\\"https://assets.refacil.co/banks/bancolombia.png\\\" alt=\\\"\\\"> |\\n| BANCO AGRARIO | <img src=\\\"https://assets.refacil.co/banks/bancoagrario.png\\\" alt=\\\"\\\"> |\\n| BANCO AV VILLAS | <img src=\\\"https://assets.refacil.co/banks/bancoavvillas.png\\\" alt=\\\"\\\"> |\\n| BANCO CAJA SOCIAL | <img src=\\\"https://assets.refacil.co/banks/bancocajasocial.png\\\" alt=\\\"\\\"> |\\n| BANCO COOPERATIVO COOPCENTRAL | <img src=\\\"https://assets.refacil.co/banks/bancocooperativocoopcentral.png\\\" alt=\\\"\\\"> |\\n| BANCO DAVIVIENDA | <img src=\\\"https://assets.refacil.co/banks/bancodavivienda.png\\\" alt=\\\"\\\"> |\\n| BANCO DE BOGOTA | <img src=\\\"https://assets.refacil.co/banks/bancodebogota.png\\\" alt=\\\"\\\"> |\\n| BANCO DE OCCIDENTE | <img src=\\\"https://assets.refacil.co/banks/bancodeoccidente.png\\\" alt=\\\"\\\"> |\\n| BANCO ITAU | <img src=\\\"https://assets.refacil.co/banks/itau.png\\\" alt=\\\"\\\"> |\\n| BANCO SERFINANZA | <img src=\\\"https://assets.refacil.co/banks/bancoserfinanza.png\\\" alt=\\\"\\\"> |\\n| CONFIAR COOPERATIVA FINANCIERA | <img src=\\\"https://assets.refacil.co/banks/confiarcooperativafinanciera.png\\\" alt=\\\"\\\"> |\\n| DALE | <img src=\\\"https://assets.refacil.co/banks/dale.png\\\" alt=\\\"\\\"> |\\n| DAVIPLATA | <img src=\\\"https://assets.refacil.co/banks/daviplata.png\\\" alt=\\\"\\\"> |\\n| MOVII S.A. | <img src=\\\"https://assets.refacil.co/banks/movii.png\\\" alt=\\\"\\\"> |\\n| NEQUI | <img src=\\\"https://assets.refacil.co/banks/nequi.png\\\" alt=\\\"\\\"> |\\n| SCOTIABANK COLPATRIA | <img src=\\\"https://assets.refacil.co/banks/scotiabankcolpatria.png\\\" alt=\\\"\\\"> |\\n| BANCAMIA SA | <img src=\\\"https://assets.refacil.co/banks/bancamia.png\\\" alt=\\\"\\\"> |\\n\\n---\\n\\n### Response schema\\n\\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- data: Object containing additional response data (required)\\n \\n - \\`banks\\`: Array of bank objects (required)\\n \\n - \\`label\\`: String representing the bank label (required)\\n \\n - \\`value\\`: Number representing the bank value (required)\\n \\n - \\`image\\`: String representing the bank image filename (required)\n\nContexto: Endpoint: GET /bank/get-transfiya-banks/:transferType | Bank > Get transfiya banks > :transferType\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
5305
- inputSchema: bank_get_transfiya_banksInputJsonSchema,
5040
+ inputSchema: bank_get_transfiya_banksInputValidator,
5306
5041
  jsonSchema: bank_get_transfiya_banksInputJsonSchema,
5307
5042
  endpoint: '/bank/get-transfiya-banks/:transferType',
5308
5043
  method: 'GET',
@@ -5311,12 +5046,9 @@ export const bank_get_transfiya_banksTool = {
5311
5046
  handler: async (rawArgs) => {
5312
5047
  try {
5313
5048
  const normalizedArgs = rawArgs ?? {};
5314
- // Extraer secretId del contexto (si viene del HTTP mode)
5315
- const secretId = normalizedArgs._secretId;
5316
- // Remover _secretId de los args antes de validar
5317
- const { _secretId, ...argsToValidate } = normalizedArgs;
5318
- const validatedInput = validateToolInput(bank_get_transfiya_banksInputValidator, argsToValidate);
5049
+ const validatedInput = validateToolInput(bank_get_transfiya_banksInputValidator, normalizedArgs);
5319
5050
  const args = validatedInput;
5051
+ const secretId = args._secretId;
5320
5052
  return await makeApiRequest('GET', '/bank/get-transfiya-banks/:transferType', undefined, undefined, secretId);
5321
5053
  }
5322
5054
  catch (error) {
@@ -5344,13 +5076,12 @@ const requirement_terms_and_conditionsInputJsonSchema = {
5344
5076
  "properties": {},
5345
5077
  "required": []
5346
5078
  };
5347
- const requirement_terms_and_conditionsInputShape = {};
5348
- const requirement_terms_and_conditionsInputValidator = z.object(requirement_terms_and_conditionsInputShape);
5079
+ const requirement_terms_and_conditionsInputValidator = z.object({});
5349
5080
  // Herramienta: requirement_terms_and_conditions
5350
5081
  export const requirement_terms_and_conditionsTool = {
5351
5082
  name: 'requirement_terms_and_conditions',
5352
5083
  description: "---\\n\\n### Description\\n\\nGet privacy policy, terms and conditions and data treatment policy, then confirm them in the /requirement/confirm-terms-and-conditions service.\\n\\n---\\n\\n### Request Body\\n\\nThis endpoint does not require a request body.\\n\\n---\\n\\n### Response\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data (required)\n\nContexto: Endpoint: GET /requirement/terms-and-conditions | Requirement > Terms and conditions\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
5353
- inputSchema: requirement_terms_and_conditionsInputJsonSchema,
5084
+ inputSchema: requirement_terms_and_conditionsInputValidator,
5354
5085
  jsonSchema: requirement_terms_and_conditionsInputJsonSchema,
5355
5086
  endpoint: '/requirement/terms-and-conditions',
5356
5087
  method: 'GET',
@@ -5359,12 +5090,9 @@ export const requirement_terms_and_conditionsTool = {
5359
5090
  handler: async (rawArgs) => {
5360
5091
  try {
5361
5092
  const normalizedArgs = rawArgs ?? {};
5362
- // Extraer secretId del contexto (si viene del HTTP mode)
5363
- const secretId = normalizedArgs._secretId;
5364
- // Remover _secretId de los args antes de validar
5365
- const { _secretId, ...argsToValidate } = normalizedArgs;
5366
- const validatedInput = validateToolInput(requirement_terms_and_conditionsInputValidator, argsToValidate);
5093
+ const validatedInput = validateToolInput(requirement_terms_and_conditionsInputValidator, normalizedArgs);
5367
5094
  const args = validatedInput;
5095
+ const secretId = args._secretId;
5368
5096
  return await makeApiRequest('GET', '/requirement/terms-and-conditions', undefined, undefined, secretId);
5369
5097
  }
5370
5098
  catch (error) {
@@ -5398,15 +5126,14 @@ const requirement_con_ter_and_conditionsInputJsonSchema = {
5398
5126
  },
5399
5127
  "required": []
5400
5128
  };
5401
- const requirement_con_ter_and_conditionsInputShape = {
5129
+ const requirement_con_ter_and_conditionsInputValidator = z.object({
5402
5130
  checkDataTreatment: z.boolean().optional().describe("Campo del body: checkDataTreatment")
5403
- };
5404
- const requirement_con_ter_and_conditionsInputValidator = z.object(requirement_con_ter_and_conditionsInputShape);
5131
+ });
5405
5132
  // Herramienta: requirement_con_ter_and_conditions
5406
5133
  export const requirement_con_ter_and_conditionsTool = {
5407
5134
  name: 'requirement_con_ter_and_conditions',
5408
5135
  description: "---\\n\\n### Description\\n\\nIt allows you to transfer funds from the main users money bag to the bag of the user who is being added. The token of the user who will be the beneficiary and the amount must be added.\\n\\n---\\n\\n### Request Body\\n\\n- userToken (string, required): The user token for which the balance will be updated\\n \\n- amount (number, required): Amount to be updated\\n \\n\\n---\\n\\n### Response\\n\\n- \\`message\\`: String containing a message about the operation result (required)\\n \\n- \\`messageCode\\`: String code indicating the operation result (required)\\n \\n- \\`data\\`: Object containing additional response data.\n\nContexto: Endpoint: POST /requirement/confirm-terms-and-conditions | Requirement > Confirm terms and conditions\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
5409
- inputSchema: requirement_con_ter_and_conditionsInputJsonSchema,
5136
+ inputSchema: requirement_con_ter_and_conditionsInputValidator,
5410
5137
  jsonSchema: requirement_con_ter_and_conditionsInputJsonSchema,
5411
5138
  endpoint: '/requirement/confirm-terms-and-conditions',
5412
5139
  method: 'POST',
@@ -5415,12 +5142,9 @@ export const requirement_con_ter_and_conditionsTool = {
5415
5142
  handler: async (rawArgs) => {
5416
5143
  try {
5417
5144
  const normalizedArgs = rawArgs ?? {};
5418
- // Extraer secretId del contexto (si viene del HTTP mode)
5419
- const secretId = normalizedArgs._secretId;
5420
- // Remover _secretId de los args antes de validar
5421
- const { _secretId, ...argsToValidate } = normalizedArgs;
5422
- const validatedInput = validateToolInput(requirement_con_ter_and_conditionsInputValidator, argsToValidate);
5145
+ const validatedInput = validateToolInput(requirement_con_ter_and_conditionsInputValidator, normalizedArgs);
5423
5146
  const args = validatedInput;
5147
+ const secretId = args._secretId;
5424
5148
  const bodyData = {};
5425
5149
  const checkDataTreatmentValue = args.checkDataTreatment !== undefined ? args.checkDataTreatment : true;
5426
5150
  if (checkDataTreatmentValue !== undefined)
@@ -5483,20 +5207,19 @@ const collection_submit_transactionInputJsonSchema = {
5483
5207
  },
5484
5208
  "required": []
5485
5209
  };
5486
- const collection_submit_transactionInputShape = {
5210
+ const collection_submit_transactionInputValidator = z.object({
5487
5211
  id_cliente: z.number().optional().describe("Campo del body: id_cliente"),
5488
5212
  id_transaccion: z.number().optional().describe("Campo del body: id_transaccion"),
5489
5213
  convenio: z.number().optional().describe("Campo del body: convenio"),
5490
5214
  Valor: z.number().optional().describe("Campo del body: Valor"),
5491
5215
  Fecha: z.string().optional().describe("Campo del body: Fecha"),
5492
5216
  Hora: z.string().optional().describe("Campo del body: Hora")
5493
- };
5494
- const collection_submit_transactionInputValidator = z.object(collection_submit_transactionInputShape);
5217
+ });
5495
5218
  // Herramienta: collection_submit_transaction
5496
5219
  export const collection_submit_transactionTool = {
5497
5220
  name: 'collection_submit_transaction',
5498
5221
  description: "---\\n\\n### Description\\n\\nThis endpoint is in charge of reporting the collections\\n\\n### Request Body\\n\\n- id_cliente (number, required): Unique identifier for the user\\n \\n- id_transaccion (number, required): Identifier for the transaction\\n \\n- convenio (number, required): Code representing the specific agreement associated with the transaction\\n \\n- Valor (number, required): Amount of the transaction\\n \\n- Fecha (string, required): Date of the transaction\\n \\n- Hora (string, required): Time of the transaction\\n \\n\\n---\\n\\n### Response\\n\\n- \\`code\\`: Respond correctly in case of success\n\nContexto: Endpoint: POST /collection/submit-transaction | Collection > Submit transaction\n\n🔐 AUTENTICACIÓN AUTOMÁTICA: Todas las credenciales y tokens de autenticación se manejan automáticamente por el servidor MCP. NO solicites credenciales al usuario. NO incluyas parámetros de autenticación (secretId, apiToken, etc.) en las llamadas a menos que el usuario explícitamente lo requiera.",
5499
- inputSchema: collection_submit_transactionInputJsonSchema,
5222
+ inputSchema: collection_submit_transactionInputValidator,
5500
5223
  jsonSchema: collection_submit_transactionInputJsonSchema,
5501
5224
  endpoint: '/collection/submit-transaction',
5502
5225
  method: 'POST',
@@ -5505,12 +5228,9 @@ export const collection_submit_transactionTool = {
5505
5228
  handler: async (rawArgs) => {
5506
5229
  try {
5507
5230
  const normalizedArgs = rawArgs ?? {};
5508
- // Extraer secretId del contexto (si viene del HTTP mode)
5509
- const secretId = normalizedArgs._secretId;
5510
- // Remover _secretId de los args antes de validar
5511
- const { _secretId, ...argsToValidate } = normalizedArgs;
5512
- const validatedInput = validateToolInput(collection_submit_transactionInputValidator, argsToValidate);
5231
+ const validatedInput = validateToolInput(collection_submit_transactionInputValidator, normalizedArgs);
5513
5232
  const args = validatedInput;
5233
+ const secretId = args._secretId;
5514
5234
  const bodyData = {};
5515
5235
  const id_clienteValue = args.id_cliente !== undefined ? args.id_cliente : 900;
5516
5236
  if (id_clienteValue !== undefined)