@smsmasivos/mcp-server 0.2.3 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -4
- package/dist/api-client.d.ts +2 -0
- package/dist/api-client.js +14 -9
- package/dist/api-client.js.map +1 -1
- package/dist/metrics.d.ts +22 -0
- package/dist/metrics.js +55 -0
- package/dist/metrics.js.map +1 -0
- package/dist/prompts/index.d.ts +2 -0
- package/dist/prompts/index.js +59 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/faq.d.ts +2 -0
- package/dist/resources/faq.js +173 -0
- package/dist/resources/faq.js.map +1 -0
- package/dist/resources/index.d.ts +2 -0
- package/dist/resources/index.js +5 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/schemas.d.ts +99 -0
- package/dist/schemas.js +41 -0
- package/dist/schemas.js.map +1 -1
- package/dist/stdio.js +11 -2
- package/dist/stdio.js.map +1 -1
- package/dist/tools/add-loyalty-contact.d.ts +3 -0
- package/dist/tools/add-loyalty-contact.js +22 -0
- package/dist/tools/add-loyalty-contact.js.map +1 -0
- package/dist/tools/add-wallet-contact.d.ts +3 -0
- package/dist/tools/add-wallet-contact.js +22 -0
- package/dist/tools/add-wallet-contact.js.map +1 -0
- package/dist/tools/delete-contact.d.ts +3 -0
- package/dist/tools/delete-contact.js +17 -0
- package/dist/tools/delete-contact.js.map +1 -0
- package/dist/tools/get-loyalty-contact.d.ts +3 -0
- package/dist/tools/get-loyalty-contact.js +23 -0
- package/dist/tools/get-loyalty-contact.js.map +1 -0
- package/dist/tools/get-metrics.d.ts +2 -0
- package/dist/tools/get-metrics.js +25 -0
- package/dist/tools/get-metrics.js.map +1 -0
- package/dist/tools/get-wallet-contact.d.ts +3 -0
- package/dist/tools/get-wallet-contact.js +23 -0
- package/dist/tools/get-wallet-contact.js.map +1 -0
- package/dist/tools/index.js +52 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-loyalty-cards.d.ts +3 -0
- package/dist/tools/list-loyalty-cards.js +23 -0
- package/dist/tools/list-loyalty-cards.js.map +1 -0
- package/dist/tools/list-wallets.d.ts +3 -0
- package/dist/tools/list-wallets.js +23 -0
- package/dist/tools/list-wallets.js.map +1 -0
- package/dist/tools/register-loyalty-sale.d.ts +3 -0
- package/dist/tools/register-loyalty-sale.js +22 -0
- package/dist/tools/register-loyalty-sale.js.map +1 -0
- package/dist/tools/update-wallet-balance.d.ts +3 -0
- package/dist/tools/update-wallet-balance.js +23 -0
- package/dist/tools/update-wallet-balance.js.map +1 -0
- package/package.json +1 -1
package/dist/schemas.js
CHANGED
|
@@ -50,6 +50,7 @@ export const getCampaignStatsInput = z.object({
|
|
|
50
50
|
export const verifyPhoneInput = z.object({
|
|
51
51
|
phone_number: z.string().describe("Número de teléfono sin código de país (ej: '5512345678')"),
|
|
52
52
|
country_code: z.string().default("52").describe("Código de país (default: 52 México)"),
|
|
53
|
+
company: z.string().describe("Nombre de la empresa que envía la verificación (máx 40 caracteres)"),
|
|
53
54
|
code_type: z
|
|
54
55
|
.enum(["numeric", "alphanumeric"])
|
|
55
56
|
.optional()
|
|
@@ -72,4 +73,44 @@ export const checkVerificationInput = z.object({
|
|
|
72
73
|
country_code: z.string().default("52").describe("Código de país"),
|
|
73
74
|
verification_code: z.string().describe("Código de verificación ingresado por el usuario"),
|
|
74
75
|
});
|
|
76
|
+
export const deleteContactInput = z.object({
|
|
77
|
+
list_key: z.string().describe("Clave única de la agenda de donde eliminar el contacto"),
|
|
78
|
+
number: z.string().describe("Número de teléfono del contacto a eliminar"),
|
|
79
|
+
email: z.string().optional().describe("Email del contacto (opcional, para identificación adicional)"),
|
|
80
|
+
});
|
|
81
|
+
// Lealtad
|
|
82
|
+
export const listLoyaltyCardsInput = z.object({});
|
|
83
|
+
export const addLoyaltyContactInput = z.object({
|
|
84
|
+
loyalty_key: z.string().describe("Clave única de la tarjeta de lealtad. Obtenla con list_loyalty_cards."),
|
|
85
|
+
phone: z.string().describe("Número de teléfono del contacto (mínimo 10 dígitos)"),
|
|
86
|
+
customer_name: z.string().optional().describe("Nombre del cliente"),
|
|
87
|
+
});
|
|
88
|
+
export const getLoyaltyContactInput = z.object({
|
|
89
|
+
loyalty_key: z.string().describe("Clave única de la tarjeta de lealtad"),
|
|
90
|
+
phone: z.string().optional().describe("Número de teléfono. Si se omite, retorna todos los contactos."),
|
|
91
|
+
});
|
|
92
|
+
export const registerLoyaltySaleInput = z.object({
|
|
93
|
+
loyalty_key: z.string().describe("Clave única de la tarjeta de lealtad"),
|
|
94
|
+
phone: z.string().describe("Número de teléfono del cliente"),
|
|
95
|
+
stamps_quantity: z.number().describe("Cantidad de sellos a registrar"),
|
|
96
|
+
});
|
|
97
|
+
// Monedero
|
|
98
|
+
export const listWalletsInput = z.object({});
|
|
99
|
+
export const addWalletContactInput = z.object({
|
|
100
|
+
wallet_key: z.string().describe("Clave única del monedero. Obtenla con list_wallets."),
|
|
101
|
+
phone: z.string().describe("Número de teléfono del contacto"),
|
|
102
|
+
customer_name: z.string().describe("Nombre del cliente"),
|
|
103
|
+
usertool_id: z.number().describe("ID de la herramienta de usuario (obtenlo de list_wallets)"),
|
|
104
|
+
});
|
|
105
|
+
export const getWalletContactInput = z.object({
|
|
106
|
+
wallet_key: z.string().describe("Clave única del monedero"),
|
|
107
|
+
phone: z.string().optional().describe("Número de teléfono. Si se omite, retorna todos los contactos."),
|
|
108
|
+
});
|
|
109
|
+
export const updateWalletBalanceInput = z.object({
|
|
110
|
+
wallet_key: z.string().describe("Clave única del monedero"),
|
|
111
|
+
phone: z.string().describe("Número de teléfono del cliente"),
|
|
112
|
+
transaction_type: z.enum(["1", "2"]).describe("Tipo de transacción: '1' para agregar saldo, '2' para restar saldo"),
|
|
113
|
+
transaction_amount: z.number().describe("Monto de la transacción (valor positivo)"),
|
|
114
|
+
usertool_id: z.number().describe("ID de la herramienta de usuario (obtenlo de list_wallets)"),
|
|
115
|
+
});
|
|
75
116
|
//# sourceMappingURL=schemas.js.map
|
package/dist/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/stdio.js
CHANGED
|
@@ -3,20 +3,29 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { createApiClient } from "./api-client.js";
|
|
5
5
|
import { registerAllTools } from "./tools/index.js";
|
|
6
|
+
import { registerAllResources } from "./resources/index.js";
|
|
7
|
+
import { registerAllPrompts } from "./prompts/index.js";
|
|
6
8
|
const apiKey = process.env.SMSMASIVOS_API_KEY;
|
|
7
9
|
if (!apiKey) {
|
|
8
10
|
process.stderr.write("Error: La variable de entorno SMSMASIVOS_API_KEY es requerida.\n" +
|
|
9
11
|
"Configúrala con tu API key de SMS Masivos.\n");
|
|
10
12
|
process.exit(1);
|
|
11
13
|
}
|
|
12
|
-
const server = new McpServer({ name: "smsmasivos", version: "0.
|
|
14
|
+
const server = new McpServer({ name: "smsmasivos", version: "0.3.0" }, {
|
|
13
15
|
instructions: "Servidor MCP para SMS Masivos — plataforma de SMS masivos para México. " +
|
|
14
16
|
"Usa check_balance antes de enviar SMS para verificar créditos disponibles. " +
|
|
15
17
|
"Usa sandbox='1' en send_sms para pruebas sin envío real. " +
|
|
16
18
|
"El código de país por defecto es 52 (México).",
|
|
17
19
|
});
|
|
18
|
-
const apiCall = createApiClient({
|
|
20
|
+
const apiCall = createApiClient({
|
|
21
|
+
apiKey,
|
|
22
|
+
baseUrl: process.env.SMSMASIVOS_BASE_URL,
|
|
23
|
+
cfAccessClientId: process.env.CF_ACCESS_CLIENT_ID,
|
|
24
|
+
cfAccessClientSecret: process.env.CF_ACCESS_CLIENT_SECRET,
|
|
25
|
+
});
|
|
19
26
|
registerAllTools(server, apiCall);
|
|
27
|
+
registerAllResources(server);
|
|
28
|
+
registerAllPrompts(server);
|
|
20
29
|
const transport = new StdioServerTransport();
|
|
21
30
|
await server.connect(transport);
|
|
22
31
|
//# sourceMappingURL=stdio.js.map
|
package/dist/stdio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kEAAkE;QAChE,8CAA8C,CACjD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,EACxC;IACE,YAAY,EACV,yEAAyE;QACzE,6EAA6E;QAC7E,2DAA2D;QAC3D,+CAA+C;CAClD,CACF,CAAC;AAEF,MAAM,OAAO,GAAG,eAAe,CAAC;IAC9B,MAAM;IACN,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;IACxC,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;IACjD,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;CAC1D,CAAC,CAAC;AACH,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAE3B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { addLoyaltyContactInput } from "../schemas.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
3
|
+
export function registerAddLoyaltyContact(server, apiCall) {
|
|
4
|
+
server.tool("add_loyalty_contact", "Agrega un contacto a una tarjeta de lealtad. Requiere loyalty_key y número de teléfono del cliente.", addLoyaltyContactInput.shape, async (params) => {
|
|
5
|
+
try {
|
|
6
|
+
await apiCall("/loyalty/contact/add", params);
|
|
7
|
+
return {
|
|
8
|
+
content: [
|
|
9
|
+
{
|
|
10
|
+
type: "text",
|
|
11
|
+
text: `✓ Contacto ${params.customer_name ?? params.phone} agregado a la tarjeta de lealtad.`,
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const message = error instanceof SmsmasivosError ? error.message : String(error);
|
|
18
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=add-loyalty-contact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-loyalty-contact.js","sourceRoot":"","sources":["../../src/tools/add-loyalty-contact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,OAAgB;IAC3E,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,qGAAqG,EACrG,sBAAsB,CAAC,KAAK,EAC5B,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,cAAc,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,oCAAoC;qBAC7F;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { addWalletContactInput } from "../schemas.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
3
|
+
export function registerAddWalletContact(server, apiCall) {
|
|
4
|
+
server.tool("add_wallet_contact", "Agrega un contacto a un monedero electrónico. Requiere wallet_key, teléfono, nombre del cliente y usertool_id (obtenlo de list_wallets).", addWalletContactInput.shape, async (params) => {
|
|
5
|
+
try {
|
|
6
|
+
await apiCall("/wallet/contact/add", params);
|
|
7
|
+
return {
|
|
8
|
+
content: [
|
|
9
|
+
{
|
|
10
|
+
type: "text",
|
|
11
|
+
text: `✓ Contacto ${params.customer_name} (${params.phone}) agregado al monedero.`,
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const message = error instanceof SmsmasivosError ? error.message : String(error);
|
|
18
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=add-wallet-contact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-wallet-contact.js","sourceRoot":"","sources":["../../src/tools/add-wallet-contact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,OAAgB;IAC1E,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,0IAA0I,EAC1I,qBAAqB,CAAC,KAAK,EAC3B,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAC7C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,cAAc,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,KAAK,yBAAyB;qBACnF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { deleteContactInput } from "../schemas.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
3
|
+
export function registerDeleteContact(server, apiCall) {
|
|
4
|
+
server.tool("delete_contact", "Elimina un contacto de una agenda. OPERACIÓN IRREVERSIBLE — el contacto se elimina permanentemente. Requiere list_key de la agenda y número de teléfono.", deleteContactInput.shape, async (params) => {
|
|
5
|
+
try {
|
|
6
|
+
await apiCall("/contacts/delete", params);
|
|
7
|
+
return {
|
|
8
|
+
content: [{ type: "text", text: `✓ Contacto ${params.number} eliminado de la agenda.` }],
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
const message = error instanceof SmsmasivosError ? error.message : String(error);
|
|
13
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=delete-contact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-contact.js","sourceRoot":"","sources":["../../src/tools/delete-contact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,OAAgB;IACvE,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,0JAA0J,EAC1J,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,MAAM,CAAC,MAAM,0BAA0B,EAAE,CAAC;aAClG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { getLoyaltyContactInput } from "../schemas.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
3
|
+
export function registerGetLoyaltyContact(server, apiCall) {
|
|
4
|
+
server.tool("get_loyalty_contact", "Consulta los datos de un contacto en una tarjeta de lealtad: sellos acumulados, canjes, etc. Si omites el teléfono, retorna todos los contactos.", getLoyaltyContactInput.shape, async (params) => {
|
|
5
|
+
try {
|
|
6
|
+
const result = await apiCall("/loyalty/contact/get", params);
|
|
7
|
+
const contacts = result.contacts ?? [];
|
|
8
|
+
if (contacts.length === 0) {
|
|
9
|
+
return { content: [{ type: "text", text: "No se encontraron contactos." }] };
|
|
10
|
+
}
|
|
11
|
+
const lines = [`${contacts.length} contacto(s):`];
|
|
12
|
+
for (const c of contacts) {
|
|
13
|
+
lines.push(`- ${c.name ?? c.phone}: ${c.stamps ?? 0} sellos, ${c.redeems ?? 0} canjes`);
|
|
14
|
+
}
|
|
15
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
const message = error instanceof SmsmasivosError ? error.message : String(error);
|
|
19
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=get-loyalty-contact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-loyalty-contact.js","sourceRoot":"","sources":["../../src/tools/get-loyalty-contact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAY/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,OAAgB;IAC3E,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,kJAAkJ,EAClJ,sBAAsB,CAAC,KAAK,EAC5B,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAyB,sBAAsB,EAAE,MAAM,CAAC,CAAC;YACrF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC,EAAE,CAAC;YACxF,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,CAAC;YAClD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAC5E,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { metrics } from "../metrics.js";
|
|
2
|
+
export function registerGetMetrics(server) {
|
|
3
|
+
server.tool("get_metrics", "Muestra las métricas de uso del MCP en la sesión actual: llamadas por tool, errores, latencia promedio y p95, uso sandbox vs producción.", {}, async () => {
|
|
4
|
+
const snapshot = metrics.getSnapshot();
|
|
5
|
+
const lines = [];
|
|
6
|
+
lines.push(`Uptime: ${snapshot.uptimeSeconds}s`);
|
|
7
|
+
lines.push(`Llamadas: ${snapshot.productionCalls} producción, ${snapshot.sandboxCalls} sandbox`);
|
|
8
|
+
if (Object.keys(snapshot.toolCalls).length > 0) {
|
|
9
|
+
lines.push("\nLlamadas por tool:");
|
|
10
|
+
for (const [tool, count] of Object.entries(snapshot.toolCalls)) {
|
|
11
|
+
const avg = snapshot.avgLatency[tool] ?? 0;
|
|
12
|
+
const p95 = snapshot.p95Latency[tool] ?? 0;
|
|
13
|
+
lines.push(` ${tool}: ${count} llamadas (avg ${avg}ms, p95 ${p95}ms)`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (Object.keys(snapshot.errorCounts).length > 0) {
|
|
17
|
+
lines.push("\nErrores:");
|
|
18
|
+
for (const [key, count] of Object.entries(snapshot.errorCounts)) {
|
|
19
|
+
lines.push(` ${key}: ${count}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=get-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-metrics.js","sourceRoot":"","sources":["../../src/tools/get-metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,IAAI,CACT,aAAa,EACb,0IAA0I,EAC1I,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,eAAe,gBAAgB,QAAQ,CAAC,YAAY,UAAU,CAAC,CAAC;QAEjG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACnC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,kBAAkB,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { getWalletContactInput } from "../schemas.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
3
|
+
export function registerGetWalletContact(server, apiCall) {
|
|
4
|
+
server.tool("get_wallet_contact", "Consulta el saldo de un contacto en un monedero electrónico. Si omites el teléfono, retorna todos los contactos con sus saldos.", getWalletContactInput.shape, async (params) => {
|
|
5
|
+
try {
|
|
6
|
+
const result = await apiCall("/wallet/contact/get", params);
|
|
7
|
+
const contacts = result.contacts ?? [];
|
|
8
|
+
if (contacts.length === 0) {
|
|
9
|
+
return { content: [{ type: "text", text: "No se encontraron contactos." }] };
|
|
10
|
+
}
|
|
11
|
+
const lines = [`${contacts.length} contacto(s):`];
|
|
12
|
+
for (const c of contacts) {
|
|
13
|
+
lines.push(`- ${c.name ?? c.phone}: $${c.balance ?? 0} de saldo`);
|
|
14
|
+
}
|
|
15
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
const message = error instanceof SmsmasivosError ? error.message : String(error);
|
|
19
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=get-wallet-contact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-wallet-contact.js","sourceRoot":"","sources":["../../src/tools/get-wallet-contact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAU/C,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,OAAgB;IAC1E,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,iIAAiI,EACjI,qBAAqB,CAAC,KAAK,EAC3B,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAwB,qBAAqB,EAAE,MAAM,CAAC,CAAC;YACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC,EAAE,CAAC;YACxF,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,CAAC;YAClD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { metrics } from "../metrics.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
1
3
|
import { registerCheckBalance } from "./check-balance.js";
|
|
2
4
|
import { registerSendSms } from "./send-sms.js";
|
|
3
5
|
import { registerListAgendas } from "./list-agendas.js";
|
|
@@ -7,15 +9,56 @@ import { registerGetCampaignStats } from "./get-campaign-stats.js";
|
|
|
7
9
|
import { registerVerifyPhone } from "./verify-phone.js";
|
|
8
10
|
import { registerCheckVerification } from "./check-verification.js";
|
|
9
11
|
import { registerListCampaigns } from "./list-campaigns.js";
|
|
12
|
+
import { registerGetMetrics } from "./get-metrics.js";
|
|
13
|
+
import { registerDeleteContact } from "./delete-contact.js";
|
|
14
|
+
import { registerListLoyaltyCards } from "./list-loyalty-cards.js";
|
|
15
|
+
import { registerAddLoyaltyContact } from "./add-loyalty-contact.js";
|
|
16
|
+
import { registerGetLoyaltyContact } from "./get-loyalty-contact.js";
|
|
17
|
+
import { registerRegisterLoyaltySale } from "./register-loyalty-sale.js";
|
|
18
|
+
import { registerListWallets } from "./list-wallets.js";
|
|
19
|
+
import { registerAddWalletContact } from "./add-wallet-contact.js";
|
|
20
|
+
import { registerGetWalletContact } from "./get-wallet-contact.js";
|
|
21
|
+
import { registerUpdateWalletBalance } from "./update-wallet-balance.js";
|
|
22
|
+
function createInstrumentedApiCall(apiCall) {
|
|
23
|
+
return async (endpoint, params) => {
|
|
24
|
+
const start = performance.now();
|
|
25
|
+
const isSandbox = params?.sandbox === "1" || params?.sandbox === 1;
|
|
26
|
+
try {
|
|
27
|
+
const result = await apiCall(endpoint, params);
|
|
28
|
+
metrics.recordCall(endpoint, performance.now() - start, isSandbox);
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
metrics.recordCall(endpoint, performance.now() - start, isSandbox);
|
|
33
|
+
metrics.recordError(endpoint, error instanceof SmsmasivosError ? error.code ?? error.constructor.name : "Unknown");
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
10
38
|
export function registerAllTools(server, apiCall) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
39
|
+
const instrumented = createInstrumentedApiCall(apiCall);
|
|
40
|
+
// Fase 1
|
|
41
|
+
registerCheckBalance(server, instrumented);
|
|
42
|
+
registerSendSms(server, instrumented);
|
|
43
|
+
registerListAgendas(server, instrumented);
|
|
44
|
+
registerGetContacts(server, instrumented);
|
|
45
|
+
registerAddContact(server, instrumented);
|
|
46
|
+
registerGetCampaignStats(server, instrumented);
|
|
47
|
+
registerVerifyPhone(server, instrumented);
|
|
48
|
+
registerCheckVerification(server, instrumented);
|
|
49
|
+
registerListCampaigns(server, instrumented);
|
|
50
|
+
// Fase 2 — Lealtad
|
|
51
|
+
registerListLoyaltyCards(server, instrumented);
|
|
52
|
+
registerAddLoyaltyContact(server, instrumented);
|
|
53
|
+
registerGetLoyaltyContact(server, instrumented);
|
|
54
|
+
registerRegisterLoyaltySale(server, instrumented);
|
|
55
|
+
// Fase 2 — Monedero
|
|
56
|
+
registerListWallets(server, instrumented);
|
|
57
|
+
registerAddWalletContact(server, instrumented);
|
|
58
|
+
registerGetWalletContact(server, instrumented);
|
|
59
|
+
registerUpdateWalletBalance(server, instrumented);
|
|
60
|
+
// Utilidades
|
|
61
|
+
registerDeleteContact(server, instrumented);
|
|
62
|
+
registerGetMetrics(server);
|
|
20
63
|
}
|
|
21
64
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { listLoyaltyCardsInput } from "../schemas.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
3
|
+
export function registerListLoyaltyCards(server, apiCall) {
|
|
4
|
+
server.tool("list_loyalty_cards", "Lista todas las tarjetas de lealtad de tu cuenta. Cada tarjeta tiene un loyalty_key que necesitas para gestionar contactos y registrar ventas.", listLoyaltyCardsInput.shape, async () => {
|
|
5
|
+
try {
|
|
6
|
+
const result = await apiCall("/loyalty/get");
|
|
7
|
+
const cards = result.loyalty_cards ?? [];
|
|
8
|
+
if (cards.length === 0) {
|
|
9
|
+
return { content: [{ type: "text", text: "No tienes tarjetas de lealtad." }] };
|
|
10
|
+
}
|
|
11
|
+
const lines = [`${cards.length} tarjeta(s) de lealtad:`];
|
|
12
|
+
for (const card of cards) {
|
|
13
|
+
lines.push(`- ${card.name ?? "Sin nombre"} — key: ${card.key}`);
|
|
14
|
+
}
|
|
15
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
const message = error instanceof SmsmasivosError ? error.message : String(error);
|
|
19
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=list-loyalty-cards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-loyalty-cards.js","sourceRoot":"","sources":["../../src/tools/list-loyalty-cards.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAY/C,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,OAAgB;IAC1E,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,gJAAgJ,EAChJ,qBAAqB,CAAC,KAAK,EAC3B,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAsB,cAAc,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,EAAE,CAAC;YAC1F,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,yBAAyB,CAAC,CAAC;YACzD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,YAAY,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { listWalletsInput } from "../schemas.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
3
|
+
export function registerListWallets(server, apiCall) {
|
|
4
|
+
server.tool("list_wallets", "Lista todos los monederos electrónicos de tu cuenta. Cada monedero tiene un wallet_key y usertool_id que necesitas para gestionar contactos y saldos.", listWalletsInput.shape, async () => {
|
|
5
|
+
try {
|
|
6
|
+
const result = await apiCall("/wallet/get");
|
|
7
|
+
const wallets = result.wallets ?? [];
|
|
8
|
+
if (wallets.length === 0) {
|
|
9
|
+
return { content: [{ type: "text", text: "No tienes monederos." }] };
|
|
10
|
+
}
|
|
11
|
+
const lines = [`${wallets.length} monedero(s):`];
|
|
12
|
+
for (const w of wallets) {
|
|
13
|
+
lines.push(`- ${w.name ?? "Sin nombre"} — key: ${w.key}, usertool_id: ${w.usertool_id ?? "N/A"}`);
|
|
14
|
+
}
|
|
15
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
const message = error instanceof SmsmasivosError ? error.message : String(error);
|
|
19
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=list-wallets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-wallets.js","sourceRoot":"","sources":["../../src/tools/list-wallets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAY/C,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,OAAgB;IACrE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,uJAAuJ,EACvJ,gBAAgB,CAAC,KAAK,EACtB,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAsB,aAAa,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,EAAE,CAAC;YAChF,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,eAAe,CAAC,CAAC;YACjD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,YAAY,WAAW,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,WAAW,IAAI,KAAK,EAAE,CAAC,CAAC;YACpG,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { registerLoyaltySaleInput } from "../schemas.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
3
|
+
export function registerRegisterLoyaltySale(server, apiCall) {
|
|
4
|
+
server.tool("register_loyalty_sale", "Registra una venta en el programa de lealtad, agregando sellos al contacto. Requiere loyalty_key, teléfono del cliente y cantidad de sellos.", registerLoyaltySaleInput.shape, async (params) => {
|
|
5
|
+
try {
|
|
6
|
+
await apiCall("/loyalty/sale", params);
|
|
7
|
+
return {
|
|
8
|
+
content: [
|
|
9
|
+
{
|
|
10
|
+
type: "text",
|
|
11
|
+
text: `✓ ${params.stamps_quantity} sello(s) registrado(s) para ${params.phone}.`,
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const message = error instanceof SmsmasivosError ? error.message : String(error);
|
|
18
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=register-loyalty-sale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-loyalty-sale.js","sourceRoot":"","sources":["../../src/tools/register-loyalty-sale.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,OAAgB;IAC7E,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,8IAA8I,EAC9I,wBAAwB,CAAC,KAAK,EAC9B,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,KAAK,MAAM,CAAC,eAAe,gCAAgC,MAAM,CAAC,KAAK,GAAG;qBACjF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { updateWalletBalanceInput } from "../schemas.js";
|
|
2
|
+
import { SmsmasivosError } from "../errors.js";
|
|
3
|
+
export function registerUpdateWalletBalance(server, apiCall) {
|
|
4
|
+
server.tool("update_wallet_balance", "Agrega o resta saldo en el monedero de un contacto. transaction_type '1' = agregar, '2' = restar. Requiere wallet_key, teléfono, monto y usertool_id.", updateWalletBalanceInput.shape, async (params) => {
|
|
5
|
+
try {
|
|
6
|
+
await apiCall("/wallet/balance/update", params);
|
|
7
|
+
const action = params.transaction_type === "1" ? "agregados" : "restados";
|
|
8
|
+
return {
|
|
9
|
+
content: [
|
|
10
|
+
{
|
|
11
|
+
type: "text",
|
|
12
|
+
text: `✓ $${params.transaction_amount} ${action} al monedero de ${params.phone}.`,
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
const message = error instanceof SmsmasivosError ? error.message : String(error);
|
|
19
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=update-wallet-balance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-wallet-balance.js","sourceRoot":"","sources":["../../src/tools/update-wallet-balance.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,OAAgB;IAC7E,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,uJAAuJ,EACvJ,wBAAwB,CAAC,KAAK,EAC9B,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;YAC1E,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,MAAM,MAAM,CAAC,kBAAkB,IAAI,MAAM,mBAAmB,MAAM,CAAC,KAAK,GAAG;qBAClF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|