nomba-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +983 -0
- package/build/client.d.ts +26 -0
- package/build/client.js +120 -0
- package/build/client.js.map +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +53 -0
- package/build/index.js.map +1 -0
- package/build/resources/bank-list.d.ts +3 -0
- package/build/resources/bank-list.js +26 -0
- package/build/resources/bank-list.js.map +1 -0
- package/build/tools/accounts.d.ts +3 -0
- package/build/tools/accounts.js +88 -0
- package/build/tools/accounts.js.map +1 -0
- package/build/tools/airtime.d.ts +3 -0
- package/build/tools/airtime.js +80 -0
- package/build/tools/airtime.js.map +1 -0
- package/build/tools/bills/betting.d.ts +3 -0
- package/build/tools/bills/betting.js +45 -0
- package/build/tools/bills/betting.js.map +1 -0
- package/build/tools/bills/cable.d.ts +3 -0
- package/build/tools/bills/cable.js +68 -0
- package/build/tools/bills/cable.js.map +1 -0
- package/build/tools/bills/electricity.d.ts +3 -0
- package/build/tools/bills/electricity.js +69 -0
- package/build/tools/bills/electricity.js.map +1 -0
- package/build/tools/bills/index.d.ts +3 -0
- package/build/tools/bills/index.js +9 -0
- package/build/tools/bills/index.js.map +1 -0
- package/build/tools/bills.d.ts +3 -0
- package/build/tools/bills.js +246 -0
- package/build/tools/bills.js.map +1 -0
- package/build/tools/checkout.d.ts +3 -0
- package/build/tools/checkout.js +138 -0
- package/build/tools/checkout.js.map +1 -0
- package/build/tools/sub-accounts.d.ts +3 -0
- package/build/tools/sub-accounts.js +174 -0
- package/build/tools/sub-accounts.js.map +1 -0
- package/build/tools/transactions.d.ts +3 -0
- package/build/tools/transactions.js +115 -0
- package/build/tools/transactions.js.map +1 -0
- package/build/tools/transfers.d.ts +3 -0
- package/build/tools/transfers.js +97 -0
- package/build/tools/transfers.js.map +1 -0
- package/build/tools/virtual-accounts.d.ts +3 -0
- package/build/tools/virtual-accounts.js +131 -0
- package/build/tools/virtual-accounts.js.map +1 -0
- package/build/utils.d.ts +18 -0
- package/build/utils.js +35 -0
- package/build/utils.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { jsonResponse, errorResponse, logToolCall } from "../../utils.js";
|
|
3
|
+
export function registerElectricityTools(server, client) {
|
|
4
|
+
server.registerTool("nomba_get_electricity_providers", {
|
|
5
|
+
title: "Get Electricity Providers",
|
|
6
|
+
description: "Fetch the list of available electricity distribution companies (DisCos). Use this to get provider codes before purchasing electricity tokens.",
|
|
7
|
+
}, async () => {
|
|
8
|
+
logToolCall("nomba_get_electricity_providers");
|
|
9
|
+
try {
|
|
10
|
+
const result = await client.get("/v1/bills/electricity/providers");
|
|
11
|
+
return jsonResponse(result);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
return errorResponse(error);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
server.registerTool("nomba_lookup_electricity_customer", {
|
|
18
|
+
title: "Lookup Electricity Customer",
|
|
19
|
+
description: "Validate an electricity meter number and get the customer's name. Always use this before purchasing electricity to confirm the meter details.",
|
|
20
|
+
inputSchema: {
|
|
21
|
+
meterNumber: z.string().describe("The electricity meter number"),
|
|
22
|
+
providerCode: z
|
|
23
|
+
.string()
|
|
24
|
+
.describe("Electricity provider code from nomba_get_electricity_providers"),
|
|
25
|
+
meterType: z
|
|
26
|
+
.enum(["prepaid", "postpaid"])
|
|
27
|
+
.describe("Type of meter: prepaid or postpaid"),
|
|
28
|
+
},
|
|
29
|
+
}, async ({ meterNumber, providerCode, meterType }) => {
|
|
30
|
+
logToolCall("nomba_lookup_electricity_customer", { meterNumber, providerCode, meterType });
|
|
31
|
+
try {
|
|
32
|
+
const result = await client.post("/v1/bills/electricity/customer-lookup", { meterNumber, providerCode, meterType });
|
|
33
|
+
return jsonResponse(result);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return errorResponse(error);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
server.registerTool("nomba_buy_electricity", {
|
|
40
|
+
title: "Buy Electricity",
|
|
41
|
+
description: "Purchase electricity tokens for a prepaid meter or pay a postpaid electricity bill. Amount is in Naira.",
|
|
42
|
+
inputSchema: {
|
|
43
|
+
meterNumber: z.string().describe("The electricity meter number"),
|
|
44
|
+
providerCode: z.string().describe("Electricity provider code"),
|
|
45
|
+
meterType: z
|
|
46
|
+
.enum(["prepaid", "postpaid"])
|
|
47
|
+
.describe("Type of meter: prepaid or postpaid"),
|
|
48
|
+
amount: z
|
|
49
|
+
.number()
|
|
50
|
+
.positive()
|
|
51
|
+
.describe("Amount in Naira to pay"),
|
|
52
|
+
},
|
|
53
|
+
}, async ({ meterNumber, providerCode, meterType, amount }) => {
|
|
54
|
+
logToolCall("nomba_buy_electricity", { meterNumber, providerCode, meterType, amount });
|
|
55
|
+
try {
|
|
56
|
+
const result = await client.post("/v1/bills/electricity/pay", {
|
|
57
|
+
meterNumber,
|
|
58
|
+
providerCode,
|
|
59
|
+
meterType,
|
|
60
|
+
amount,
|
|
61
|
+
});
|
|
62
|
+
return jsonResponse(result);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return errorResponse(error);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=electricity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"electricity.js","sourceRoot":"","sources":["../../../src/tools/bills/electricity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { registerElectricityTools } from "./electricity.js";
|
|
2
|
+
import { registerBettingTools } from "./betting.js";
|
|
3
|
+
import { registerCableTools } from "./cable.js";
|
|
4
|
+
export function registerBillTools(server, client) {
|
|
5
|
+
registerElectricityTools(server, client);
|
|
6
|
+
registerBettingTools(server, client);
|
|
7
|
+
registerCableTools(server, client);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/bills/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,UAAU,iBAAiB,CAC/B,MAAiB,EACjB,MAAmB;IAEnB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerBillTools(server, client) {
|
|
3
|
+
// Electricity
|
|
4
|
+
server.registerTool("nomba_get_electricity_providers", {
|
|
5
|
+
title: "Get Electricity Providers",
|
|
6
|
+
description: "Fetch the list of available electricity distribution companies (DisCos). Use this to get provider codes before purchasing electricity tokens.",
|
|
7
|
+
}, async () => {
|
|
8
|
+
try {
|
|
9
|
+
const result = await client.get("/v1/bills/electricity/providers");
|
|
10
|
+
return {
|
|
11
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
return {
|
|
16
|
+
content: [
|
|
17
|
+
{
|
|
18
|
+
type: "text",
|
|
19
|
+
text: `Error: ${error.message}`,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
isError: true,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
server.registerTool("nomba_lookup_electricity_customer", {
|
|
27
|
+
title: "Lookup Electricity Customer",
|
|
28
|
+
description: "Validate an electricity meter number and get the customer's name. Always use this before purchasing electricity to confirm the meter details.",
|
|
29
|
+
inputSchema: {
|
|
30
|
+
meterNumber: z.string().describe("The electricity meter number"),
|
|
31
|
+
providerCode: z
|
|
32
|
+
.string()
|
|
33
|
+
.describe("Electricity provider code from nomba_get_electricity_providers"),
|
|
34
|
+
meterType: z
|
|
35
|
+
.enum(["prepaid", "postpaid"])
|
|
36
|
+
.describe("Type of meter: prepaid or postpaid"),
|
|
37
|
+
},
|
|
38
|
+
}, async ({ meterNumber, providerCode, meterType }) => {
|
|
39
|
+
try {
|
|
40
|
+
const result = await client.post("/v1/bills/electricity/customer-lookup", { meterNumber, providerCode, meterType });
|
|
41
|
+
return {
|
|
42
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
return {
|
|
47
|
+
content: [
|
|
48
|
+
{
|
|
49
|
+
type: "text",
|
|
50
|
+
text: `Error: ${error.message}`,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
isError: true,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
server.registerTool("nomba_buy_electricity", {
|
|
58
|
+
title: "Buy Electricity",
|
|
59
|
+
description: "Purchase electricity tokens for a prepaid meter or pay a postpaid electricity bill. Amount is in Naira.",
|
|
60
|
+
inputSchema: {
|
|
61
|
+
meterNumber: z.string().describe("The electricity meter number"),
|
|
62
|
+
providerCode: z.string().describe("Electricity provider code"),
|
|
63
|
+
meterType: z
|
|
64
|
+
.enum(["prepaid", "postpaid"])
|
|
65
|
+
.describe("Type of meter: prepaid or postpaid"),
|
|
66
|
+
amount: z
|
|
67
|
+
.number()
|
|
68
|
+
.positive()
|
|
69
|
+
.describe("Amount in Naira to pay"),
|
|
70
|
+
},
|
|
71
|
+
}, async ({ meterNumber, providerCode, meterType, amount }) => {
|
|
72
|
+
try {
|
|
73
|
+
const result = await client.post("/v1/bills/electricity/pay", {
|
|
74
|
+
meterNumber,
|
|
75
|
+
providerCode,
|
|
76
|
+
meterType,
|
|
77
|
+
amount,
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
return {
|
|
85
|
+
content: [
|
|
86
|
+
{
|
|
87
|
+
type: "text",
|
|
88
|
+
text: `Error: ${error.message}`,
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
isError: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
// Betting
|
|
96
|
+
server.registerTool("nomba_get_betting_providers", {
|
|
97
|
+
title: "Get Betting Providers",
|
|
98
|
+
description: "Fetch the list of available betting platforms. Use this to get provider codes before funding a betting account.",
|
|
99
|
+
}, async () => {
|
|
100
|
+
try {
|
|
101
|
+
const result = await client.get("/v1/bills/betting/providers");
|
|
102
|
+
return {
|
|
103
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
return {
|
|
108
|
+
content: [
|
|
109
|
+
{
|
|
110
|
+
type: "text",
|
|
111
|
+
text: `Error: ${error.message}`,
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
isError: true,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
server.registerTool("nomba_fund_betting_account", {
|
|
119
|
+
title: "Fund Betting Account",
|
|
120
|
+
description: "Fund a customer's betting account on a supported betting platform. Amount is in Naira.",
|
|
121
|
+
inputSchema: {
|
|
122
|
+
customerId: z
|
|
123
|
+
.string()
|
|
124
|
+
.describe("The customer's betting account ID/username"),
|
|
125
|
+
providerCode: z.string().describe("Betting provider code"),
|
|
126
|
+
amount: z
|
|
127
|
+
.number()
|
|
128
|
+
.positive()
|
|
129
|
+
.describe("Amount in Naira to fund"),
|
|
130
|
+
},
|
|
131
|
+
}, async ({ customerId, providerCode, amount }) => {
|
|
132
|
+
try {
|
|
133
|
+
const result = await client.post("/v1/bills/betting/pay", {
|
|
134
|
+
customerId,
|
|
135
|
+
providerCode,
|
|
136
|
+
amount,
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
return {
|
|
144
|
+
content: [
|
|
145
|
+
{
|
|
146
|
+
type: "text",
|
|
147
|
+
text: `Error: ${error.message}`,
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
isError: true,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
// Cable TV
|
|
155
|
+
server.registerTool("nomba_get_cable_providers", {
|
|
156
|
+
title: "Get Cable TV Providers",
|
|
157
|
+
description: "Fetch the list of available cable TV providers (e.g., DSTV, GOtv, Startimes). Use this to get provider codes before paying for a cable subscription.",
|
|
158
|
+
}, async () => {
|
|
159
|
+
try {
|
|
160
|
+
const result = await client.get("/v1/bills/cabletv/providers");
|
|
161
|
+
return {
|
|
162
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
return {
|
|
167
|
+
content: [
|
|
168
|
+
{
|
|
169
|
+
type: "text",
|
|
170
|
+
text: `Error: ${error.message}`,
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
isError: true,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
server.registerTool("nomba_lookup_cable_customer", {
|
|
178
|
+
title: "Lookup Cable TV Customer",
|
|
179
|
+
description: "Validate a cable TV smartcard/IUC number and get the customer's name. Always use this before paying for a cable subscription.",
|
|
180
|
+
inputSchema: {
|
|
181
|
+
smartcardNumber: z
|
|
182
|
+
.string()
|
|
183
|
+
.describe("The smartcard or IUC number"),
|
|
184
|
+
providerCode: z.string().describe("Cable TV provider code"),
|
|
185
|
+
},
|
|
186
|
+
}, async ({ smartcardNumber, providerCode }) => {
|
|
187
|
+
try {
|
|
188
|
+
const result = await client.post("/v1/bills/cabletv/customer-lookup", { smartcardNumber, providerCode });
|
|
189
|
+
return {
|
|
190
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
return {
|
|
195
|
+
content: [
|
|
196
|
+
{
|
|
197
|
+
type: "text",
|
|
198
|
+
text: `Error: ${error.message}`,
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
isError: true,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
server.registerTool("nomba_pay_cable_subscription", {
|
|
206
|
+
title: "Pay Cable TV Subscription",
|
|
207
|
+
description: "Pay for a cable TV subscription (DSTV, GOtv, Startimes, etc.). Amount is in Naira.",
|
|
208
|
+
inputSchema: {
|
|
209
|
+
smartcardNumber: z
|
|
210
|
+
.string()
|
|
211
|
+
.describe("The smartcard or IUC number"),
|
|
212
|
+
providerCode: z.string().describe("Cable TV provider code"),
|
|
213
|
+
productCode: z
|
|
214
|
+
.string()
|
|
215
|
+
.describe("The subscription plan/bouquet code"),
|
|
216
|
+
amount: z
|
|
217
|
+
.number()
|
|
218
|
+
.positive()
|
|
219
|
+
.describe("Amount in Naira to pay"),
|
|
220
|
+
},
|
|
221
|
+
}, async ({ smartcardNumber, providerCode, productCode, amount }) => {
|
|
222
|
+
try {
|
|
223
|
+
const result = await client.post("/v1/bills/cabletv/pay", {
|
|
224
|
+
smartcardNumber,
|
|
225
|
+
providerCode,
|
|
226
|
+
productCode,
|
|
227
|
+
amount,
|
|
228
|
+
});
|
|
229
|
+
return {
|
|
230
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
return {
|
|
235
|
+
content: [
|
|
236
|
+
{
|
|
237
|
+
type: "text",
|
|
238
|
+
text: `Error: ${error.message}`,
|
|
239
|
+
},
|
|
240
|
+
],
|
|
241
|
+
isError: true,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=bills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bills.js","sourceRoot":"","sources":["../../src/tools/bills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { jsonResponse, errorResponse, logToolCall } from "../utils.js";
|
|
3
|
+
export function registerCheckoutTools(server, client) {
|
|
4
|
+
server.registerTool("nomba_create_checkout_order", {
|
|
5
|
+
title: "Create Checkout Order",
|
|
6
|
+
description:
|
|
7
|
+
// Nomba is NGN-only
|
|
8
|
+
"Create a checkout payment order and get a payment link. The customer can use this link to pay via card, bank transfer, or USSD. Amount is in Naira (NGN).",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
amount: z.number().positive().describe("Payment amount in Naira"),
|
|
11
|
+
customerEmail: z
|
|
12
|
+
.string()
|
|
13
|
+
.email()
|
|
14
|
+
.describe("Customer's email address"),
|
|
15
|
+
callbackUrl: z
|
|
16
|
+
.string()
|
|
17
|
+
.url()
|
|
18
|
+
.describe("URL to redirect the customer to after payment"),
|
|
19
|
+
orderReference: z
|
|
20
|
+
.string()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe("Your unique order reference/ID"),
|
|
23
|
+
customerId: z
|
|
24
|
+
.string()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe("Your internal customer identifier"),
|
|
27
|
+
tokenizeCard: z
|
|
28
|
+
.boolean()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Whether to save the customer's card for future charges"),
|
|
31
|
+
},
|
|
32
|
+
}, async ({ amount, customerEmail, callbackUrl, orderReference, customerId, tokenizeCard, }) => {
|
|
33
|
+
logToolCall("nomba_create_checkout_order", { amount, customerEmail });
|
|
34
|
+
try {
|
|
35
|
+
const result = await client.post("/v1/checkout/order", {
|
|
36
|
+
order: {
|
|
37
|
+
amount,
|
|
38
|
+
currency: "NGN", // Nomba is NGN-only
|
|
39
|
+
customerEmail,
|
|
40
|
+
callbackUrl,
|
|
41
|
+
orderReference,
|
|
42
|
+
customerId,
|
|
43
|
+
},
|
|
44
|
+
tokenizeCard,
|
|
45
|
+
});
|
|
46
|
+
return jsonResponse(result);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return errorResponse(error);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
server.registerTool("nomba_charge_tokenized_card", {
|
|
53
|
+
title: "Charge Tokenized Card",
|
|
54
|
+
description: "Charge a previously saved/tokenized card. Use this for recurring payments or returning customers who saved their card during checkout.",
|
|
55
|
+
inputSchema: {
|
|
56
|
+
amount: z.number().positive().describe("Amount in Naira to charge"),
|
|
57
|
+
tokenizedCardId: z
|
|
58
|
+
.string()
|
|
59
|
+
.describe("The tokenized card ID from a previous checkout"),
|
|
60
|
+
customerEmail: z
|
|
61
|
+
.string()
|
|
62
|
+
.email()
|
|
63
|
+
.describe("Customer's email address"),
|
|
64
|
+
},
|
|
65
|
+
}, async ({ amount, tokenizedCardId, customerEmail }) => {
|
|
66
|
+
logToolCall("nomba_charge_tokenized_card", { amount, customerEmail });
|
|
67
|
+
try {
|
|
68
|
+
const result = await client.post("/v1/checkout/charge-tokenized-card", { amount, tokenizedCardId, customerEmail });
|
|
69
|
+
return jsonResponse(result);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return errorResponse(error);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
server.registerTool("nomba_refund_transaction", {
|
|
76
|
+
title: "Refund Transaction",
|
|
77
|
+
description: "Process a refund for a completed checkout transaction. You can do a full or partial refund by specifying the amount.",
|
|
78
|
+
inputSchema: {
|
|
79
|
+
transactionId: z
|
|
80
|
+
.string()
|
|
81
|
+
.describe("The transaction ID to refund"),
|
|
82
|
+
amount: z
|
|
83
|
+
.number()
|
|
84
|
+
.positive()
|
|
85
|
+
.optional()
|
|
86
|
+
.describe("Amount to refund in Naira. Omit for full refund."),
|
|
87
|
+
},
|
|
88
|
+
}, async ({ transactionId, amount }) => {
|
|
89
|
+
logToolCall("nomba_refund_transaction", { transactionId, amount });
|
|
90
|
+
try {
|
|
91
|
+
const body = { transactionId };
|
|
92
|
+
if (amount !== undefined)
|
|
93
|
+
body.amount = amount;
|
|
94
|
+
const result = await client.post("/v1/checkout/refund", body);
|
|
95
|
+
return jsonResponse(result);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
return errorResponse(error);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
server.registerTool("nomba_get_checkout_transaction", {
|
|
102
|
+
title: "Get Checkout Transaction Details",
|
|
103
|
+
description: "Retrieve the details and status of a checkout transaction by its order reference.",
|
|
104
|
+
inputSchema: {
|
|
105
|
+
orderReference: z
|
|
106
|
+
.string()
|
|
107
|
+
.describe("The order reference from the checkout order creation"),
|
|
108
|
+
},
|
|
109
|
+
}, async ({ orderReference }) => {
|
|
110
|
+
logToolCall("nomba_get_checkout_transaction", { orderReference });
|
|
111
|
+
try {
|
|
112
|
+
const result = await client.get(`/v1/checkout/order/${orderReference}`);
|
|
113
|
+
return jsonResponse(result);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
return errorResponse(error);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
server.registerTool("nomba_cancel_transaction", {
|
|
120
|
+
title: "Cancel Checkout Transaction",
|
|
121
|
+
description: "Cancel an incomplete/pending checkout transaction. Only works for transactions that have not been completed.",
|
|
122
|
+
inputSchema: {
|
|
123
|
+
orderReference: z
|
|
124
|
+
.string()
|
|
125
|
+
.describe("The order reference of the transaction to cancel"),
|
|
126
|
+
},
|
|
127
|
+
}, async ({ orderReference }) => {
|
|
128
|
+
logToolCall("nomba_cancel_transaction", { orderReference });
|
|
129
|
+
try {
|
|
130
|
+
const result = await client.post("/v1/checkout/cancel-transaction", { orderReference });
|
|
131
|
+
return jsonResponse(result);
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return errorResponse(error);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=checkout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/tools/checkout.ts"],"names":[],"mappings":"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"}
|