@monnify/mcp-server 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 +563 -0
- package/build/auth/tokenManager.d.ts +11 -0
- package/build/auth/tokenManager.d.ts.map +1 -0
- package/build/auth/tokenManager.js +62 -0
- package/build/auth/tokenManager.js.map +1 -0
- package/build/cli.d.ts +3 -0
- package/build/cli.d.ts.map +1 -0
- package/build/cli.js +39 -0
- package/build/cli.js.map +1 -0
- package/build/client/monnifyClient.d.ts +7 -0
- package/build/client/monnifyClient.d.ts.map +1 -0
- package/build/client/monnifyClient.js +119 -0
- package/build/client/monnifyClient.js.map +1 -0
- package/build/config/env.d.ts +47 -0
- package/build/config/env.d.ts.map +1 -0
- package/build/config/env.js +39 -0
- package/build/config/env.js.map +1 -0
- package/build/index.d.ts +36 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +84 -0
- package/build/index.js.map +1 -0
- package/build/schemas/compat.d.ts +24 -0
- package/build/schemas/compat.d.ts.map +1 -0
- package/build/schemas/compat.js +20 -0
- package/build/schemas/compat.js.map +1 -0
- package/build/schemas/extended/collections.d.ts +439 -0
- package/build/schemas/extended/collections.d.ts.map +1 -0
- package/build/schemas/extended/collections.js +403 -0
- package/build/schemas/extended/collections.js.map +1 -0
- package/build/schemas/extended/directDebit.d.ts +123 -0
- package/build/schemas/extended/directDebit.d.ts.map +1 -0
- package/build/schemas/extended/directDebit.js +121 -0
- package/build/schemas/extended/directDebit.js.map +1 -0
- package/build/schemas/extended/verification.d.ts +55 -0
- package/build/schemas/extended/verification.d.ts.map +1 -0
- package/build/schemas/extended/verification.js +51 -0
- package/build/schemas/extended/verification.js.map +1 -0
- package/build/schemas/generated.d.ts +4 -0
- package/build/schemas/generated.d.ts.map +1 -0
- package/build/schemas/generated.js +2603 -0
- package/build/schemas/generated.js.map +1 -0
- package/build/security/guards.d.ts +5 -0
- package/build/security/guards.d.ts.map +1 -0
- package/build/security/guards.js +43 -0
- package/build/security/guards.js.map +1 -0
- package/build/security/sanitiser.d.ts +46 -0
- package/build/security/sanitiser.d.ts.map +1 -0
- package/build/security/sanitiser.js +269 -0
- package/build/security/sanitiser.js.map +1 -0
- package/build/tools/collections/authoriseCard3ds.d.ts +7 -0
- package/build/tools/collections/authoriseCard3ds.d.ts.map +1 -0
- package/build/tools/collections/authoriseCard3ds.js +63 -0
- package/build/tools/collections/authoriseCard3ds.js.map +1 -0
- package/build/tools/collections/authoriseCardOtp.d.ts +7 -0
- package/build/tools/collections/authoriseCardOtp.d.ts.map +1 -0
- package/build/tools/collections/authoriseCardOtp.js +55 -0
- package/build/tools/collections/authoriseCardOtp.js.map +1 -0
- package/build/tools/collections/chargeCard.d.ts +7 -0
- package/build/tools/collections/chargeCard.d.ts.map +1 -0
- package/build/tools/collections/chargeCard.js +59 -0
- package/build/tools/collections/chargeCard.js.map +1 -0
- package/build/tools/collections/chargeCardToken.d.ts +7 -0
- package/build/tools/collections/chargeCardToken.d.ts.map +1 -0
- package/build/tools/collections/chargeCardToken.js +68 -0
- package/build/tools/collections/chargeCardToken.js.map +1 -0
- package/build/tools/collections/createInvoice.d.ts +7 -0
- package/build/tools/collections/createInvoice.d.ts.map +1 -0
- package/build/tools/collections/createInvoice.js +57 -0
- package/build/tools/collections/createInvoice.js.map +1 -0
- package/build/tools/collections/deallocateReservedAccount.d.ts +14 -0
- package/build/tools/collections/deallocateReservedAccount.d.ts.map +1 -0
- package/build/tools/collections/deallocateReservedAccount.js +55 -0
- package/build/tools/collections/deallocateReservedAccount.js.map +1 -0
- package/build/tools/collections/getAllTransactions.d.ts +47 -0
- package/build/tools/collections/getAllTransactions.d.ts.map +1 -0
- package/build/tools/collections/getAllTransactions.js +140 -0
- package/build/tools/collections/getAllTransactions.js.map +1 -0
- package/build/tools/collections/getReservedAccount.d.ts +14 -0
- package/build/tools/collections/getReservedAccount.d.ts.map +1 -0
- package/build/tools/collections/getReservedAccount.js +55 -0
- package/build/tools/collections/getReservedAccount.js.map +1 -0
- package/build/tools/collections/getReservedAccountTransactions.d.ts +20 -0
- package/build/tools/collections/getReservedAccountTransactions.d.ts.map +1 -0
- package/build/tools/collections/getReservedAccountTransactions.js +86 -0
- package/build/tools/collections/getReservedAccountTransactions.js.map +1 -0
- package/build/tools/collections/getTransactionDetails.d.ts +14 -0
- package/build/tools/collections/getTransactionDetails.d.ts.map +1 -0
- package/build/tools/collections/getTransactionDetails.js +60 -0
- package/build/tools/collections/getTransactionDetails.js.map +1 -0
- package/build/tools/collections/getTransactionStatus.d.ts +7 -0
- package/build/tools/collections/getTransactionStatus.d.ts.map +1 -0
- package/build/tools/collections/getTransactionStatus.js +58 -0
- package/build/tools/collections/getTransactionStatus.js.map +1 -0
- package/build/tools/collections/initiatePayment.d.ts +7 -0
- package/build/tools/collections/initiatePayment.d.ts.map +1 -0
- package/build/tools/collections/initiatePayment.js +63 -0
- package/build/tools/collections/initiatePayment.js.map +1 -0
- package/build/tools/collections/payWithBankTransfer.d.ts +7 -0
- package/build/tools/collections/payWithBankTransfer.d.ts.map +1 -0
- package/build/tools/collections/payWithBankTransfer.js +55 -0
- package/build/tools/collections/payWithBankTransfer.js.map +1 -0
- package/build/tools/collections/processRefund.d.ts +7 -0
- package/build/tools/collections/processRefund.d.ts.map +1 -0
- package/build/tools/collections/processRefund.js +55 -0
- package/build/tools/collections/processRefund.js.map +1 -0
- package/build/tools/collections/reserveAccount.d.ts +7 -0
- package/build/tools/collections/reserveAccount.d.ts.map +1 -0
- package/build/tools/collections/reserveAccount.js +57 -0
- package/build/tools/collections/reserveAccount.js.map +1 -0
- package/build/tools/directDebit/cancelMandate.d.ts +7 -0
- package/build/tools/directDebit/cancelMandate.d.ts.map +1 -0
- package/build/tools/directDebit/cancelMandate.js +55 -0
- package/build/tools/directDebit/cancelMandate.js.map +1 -0
- package/build/tools/directDebit/createMandate.d.ts +7 -0
- package/build/tools/directDebit/createMandate.d.ts.map +1 -0
- package/build/tools/directDebit/createMandate.js +55 -0
- package/build/tools/directDebit/createMandate.js.map +1 -0
- package/build/tools/directDebit/debitMandate.d.ts +7 -0
- package/build/tools/directDebit/debitMandate.d.ts.map +1 -0
- package/build/tools/directDebit/debitMandate.js +55 -0
- package/build/tools/directDebit/debitMandate.js.map +1 -0
- package/build/tools/directDebit/getMandateDebitStatus.d.ts +7 -0
- package/build/tools/directDebit/getMandateDebitStatus.d.ts.map +1 -0
- package/build/tools/directDebit/getMandateDebitStatus.js +55 -0
- package/build/tools/directDebit/getMandateDebitStatus.js.map +1 -0
- package/build/tools/directDebit/getMandateStatus.d.ts +7 -0
- package/build/tools/directDebit/getMandateStatus.d.ts.map +1 -0
- package/build/tools/directDebit/getMandateStatus.js +55 -0
- package/build/tools/directDebit/getMandateStatus.js.map +1 -0
- package/build/tools/registry.d.ts +11 -0
- package/build/tools/registry.d.ts.map +1 -0
- package/build/tools/registry.js +15 -0
- package/build/tools/registry.js.map +1 -0
- package/build/tools/utilities/getSupportedBanks.d.ts +8 -0
- package/build/tools/utilities/getSupportedBanks.d.ts.map +1 -0
- package/build/tools/utilities/getSupportedBanks.js +47 -0
- package/build/tools/utilities/getSupportedBanks.js.map +1 -0
- package/build/tools/utilities/getTransactionList.d.ts +47 -0
- package/build/tools/utilities/getTransactionList.d.ts.map +1 -0
- package/build/tools/utilities/getTransactionList.js +136 -0
- package/build/tools/utilities/getTransactionList.js.map +1 -0
- package/build/tools/verification/verifyBankAccount.d.ts +7 -0
- package/build/tools/verification/verifyBankAccount.d.ts.map +1 -0
- package/build/tools/verification/verifyBankAccount.js +58 -0
- package/build/tools/verification/verifyBankAccount.js.map +1 -0
- package/build/tools/verification/verifyBvn.d.ts +7 -0
- package/build/tools/verification/verifyBvn.d.ts.map +1 -0
- package/build/tools/verification/verifyBvn.js +55 -0
- package/build/tools/verification/verifyBvn.js.map +1 -0
- package/build/tools/verification/verifyBvnInfo.d.ts +7 -0
- package/build/tools/verification/verifyBvnInfo.d.ts.map +1 -0
- package/build/tools/verification/verifyBvnInfo.js +55 -0
- package/build/tools/verification/verifyBvnInfo.js.map +1 -0
- package/build/tools/verification/verifyNin.d.ts +7 -0
- package/build/tools/verification/verifyNin.d.ts.map +1 -0
- package/build/tools/verification/verifyNin.js +55 -0
- package/build/tools/verification/verifyNin.js.map +1 -0
- package/build/transport/http.d.ts +3 -0
- package/build/transport/http.d.ts.map +1 -0
- package/build/transport/http.js +71 -0
- package/build/transport/http.js.map +1 -0
- package/build/transport/stdio.d.ts +3 -0
- package/build/transport/stdio.d.ts.map +1 -0
- package/build/transport/stdio.js +8 -0
- package/build/transport/stdio.js.map +1 -0
- package/build/types/mcp.d.ts +11 -0
- package/build/types/mcp.d.ts.map +1 -0
- package/build/types/mcp.js +7 -0
- package/build/types/mcp.js.map +1 -0
- package/build/utils/clientContext.d.ts +7 -0
- package/build/utils/clientContext.d.ts.map +1 -0
- package/build/utils/clientContext.js +24 -0
- package/build/utils/clientContext.js.map +1 -0
- package/build/utils/errors.d.ts +21 -0
- package/build/utils/errors.d.ts.map +1 -0
- package/build/utils/errors.js +45 -0
- package/build/utils/errors.js.map +1 -0
- package/build/utils/format.d.ts +34 -0
- package/build/utils/format.d.ts.map +1 -0
- package/build/utils/format.js +362 -0
- package/build/utils/format.js.map +1 -0
- package/build/utils/formatters.d.ts +4 -0
- package/build/utils/formatters.d.ts.map +1 -0
- package/build/utils/formatters.js +26 -0
- package/build/utils/formatters.js.map +1 -0
- package/build/utils/logger.d.ts +3 -0
- package/build/utils/logger.d.ts.map +1 -0
- package/build/utils/logger.js +30 -0
- package/build/utils/logger.js.map +1 -0
- package/openapi/monnify.yaml +9295 -0
- package/package.json +55 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
+
import { apiGet } from "../../client/monnifyClient.js";
|
|
4
|
+
import { registerTool } from "../registry.js";
|
|
5
|
+
import { MonnifyApiError, ValidationError } from "../../utils/errors.js";
|
|
6
|
+
import { errorResult } from "../../types/mcp.js";
|
|
7
|
+
import { formatAllTransactions } from "../../utils/format.js";
|
|
8
|
+
import { getResponseFormat } from "../../utils/clientContext.js";
|
|
9
|
+
const InputSchema = z.object({
|
|
10
|
+
page: z
|
|
11
|
+
.number()
|
|
12
|
+
.int()
|
|
13
|
+
.min(0)
|
|
14
|
+
.default(0)
|
|
15
|
+
.describe("Page number (zero-indexed). Default is 0."),
|
|
16
|
+
size: z
|
|
17
|
+
.number()
|
|
18
|
+
.int()
|
|
19
|
+
.min(1)
|
|
20
|
+
.max(100)
|
|
21
|
+
.default(10)
|
|
22
|
+
.describe("Number of transactions per page. Default is 10, max is 100."),
|
|
23
|
+
from: z
|
|
24
|
+
.string()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe("Filter start date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss)."),
|
|
27
|
+
to: z
|
|
28
|
+
.string()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Filter end date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss)."),
|
|
31
|
+
paymentStatus: z
|
|
32
|
+
.enum(["PAID", "PENDING", "CANCELLED", "FAILED"])
|
|
33
|
+
.optional()
|
|
34
|
+
.describe("Filter by payment status."),
|
|
35
|
+
paymentReference: z
|
|
36
|
+
.string()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe("Filter by your payment reference."),
|
|
39
|
+
transactionReference: z
|
|
40
|
+
.string()
|
|
41
|
+
.optional()
|
|
42
|
+
.describe("Filter by Monnify transaction reference."),
|
|
43
|
+
customerName: z
|
|
44
|
+
.string()
|
|
45
|
+
.optional()
|
|
46
|
+
.describe("Filter by customer name."),
|
|
47
|
+
customerEmail: z
|
|
48
|
+
.string()
|
|
49
|
+
.email()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe("Filter by customer email address."),
|
|
52
|
+
amount: z
|
|
53
|
+
.number()
|
|
54
|
+
.positive()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe("Filter by exact transaction amount in Naira."),
|
|
57
|
+
fromAmount: z
|
|
58
|
+
.number()
|
|
59
|
+
.positive()
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("Filter transactions with amount greater than or equal to this value in Naira."),
|
|
62
|
+
toAmount: z
|
|
63
|
+
.number()
|
|
64
|
+
.positive()
|
|
65
|
+
.optional()
|
|
66
|
+
.describe("Filter transactions with amount less than or equal to this value in Naira."),
|
|
67
|
+
});
|
|
68
|
+
const definition = {
|
|
69
|
+
name: "monnify_get_all_transactions",
|
|
70
|
+
description: `Returns a paginated list of all transactions on your integration, with optional filters.
|
|
71
|
+
|
|
72
|
+
WHEN TO USE: For reporting, reconciliation, or finding transactions when you have partial information (e.g. date range, customer email, amount range, or status) rather than a specific reference.
|
|
73
|
+
|
|
74
|
+
PREREQUISITES: None.
|
|
75
|
+
|
|
76
|
+
SIDE EFFECTS: None. Read-only operation.
|
|
77
|
+
|
|
78
|
+
MFA NOTE: Not applicable.
|
|
79
|
+
|
|
80
|
+
KEY OUTPUT FIELDS: content (array of transactions — each with transactionReference, paymentReference, amountPaid, totalPayable, paymentStatus, paidOn, paymentMethod, currencyCode), totalElements, totalPages, size, number (current page).`,
|
|
81
|
+
inputSchema: zodToJsonSchema(InputSchema),
|
|
82
|
+
};
|
|
83
|
+
async function handler(args) {
|
|
84
|
+
try {
|
|
85
|
+
const parsed = InputSchema.parse(args);
|
|
86
|
+
const result = await apiGet("/api/v1/transactions/search", {
|
|
87
|
+
page: parsed.page,
|
|
88
|
+
size: parsed.size,
|
|
89
|
+
from: parsed.from,
|
|
90
|
+
to: parsed.to,
|
|
91
|
+
paymentStatus: parsed.paymentStatus,
|
|
92
|
+
paymentReference: parsed.paymentReference,
|
|
93
|
+
transactionReference: parsed.transactionReference,
|
|
94
|
+
customerName: parsed.customerName,
|
|
95
|
+
customerEmail: parsed.customerEmail,
|
|
96
|
+
amount: parsed.amount,
|
|
97
|
+
fromAmount: parsed.fromAmount,
|
|
98
|
+
toAmount: parsed.toAmount,
|
|
99
|
+
});
|
|
100
|
+
const content = Array.isArray(result["content"]) ? result["content"] : [];
|
|
101
|
+
const safeContent = content.map((tx) => ({
|
|
102
|
+
transactionReference: tx["transactionReference"],
|
|
103
|
+
paymentReference: tx["paymentReference"],
|
|
104
|
+
amountPaid: tx["amountPaid"],
|
|
105
|
+
totalPayable: tx["totalPayable"],
|
|
106
|
+
paymentStatus: tx["paymentStatus"],
|
|
107
|
+
paidOn: tx["paidOn"],
|
|
108
|
+
paymentMethod: tx["paymentMethod"],
|
|
109
|
+
currencyCode: tx["currencyCode"],
|
|
110
|
+
}));
|
|
111
|
+
const meta = {
|
|
112
|
+
totalElements: result["totalElements"],
|
|
113
|
+
totalPages: result["totalPages"],
|
|
114
|
+
size: result["size"],
|
|
115
|
+
number: result["number"],
|
|
116
|
+
};
|
|
117
|
+
return {
|
|
118
|
+
content: [
|
|
119
|
+
{
|
|
120
|
+
type: "text",
|
|
121
|
+
text: getResponseFormat() === "json"
|
|
122
|
+
? JSON.stringify({ content: safeContent, ...meta }, null, 2)
|
|
123
|
+
: formatAllTransactions(safeContent, meta),
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (error instanceof MonnifyApiError) {
|
|
130
|
+
return { content: [error.toMcpContent()], isError: true };
|
|
131
|
+
}
|
|
132
|
+
if (error instanceof ValidationError) {
|
|
133
|
+
return { content: [error.toMcpContent()], isError: true };
|
|
134
|
+
}
|
|
135
|
+
return errorResult(`monnify_get_all_transactions failed: ${String(error)}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
registerTool({ definition, handler: (args) => handler(args) });
|
|
139
|
+
export { definition, InputSchema as inputSchema, handler };
|
|
140
|
+
//# sourceMappingURL=getAllTransactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAllTransactions.js","sourceRoot":"","sources":["../../../src/tools/collections/getAllTransactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { McpToolResult } from "../../types/mcp.js";
|
|
4
|
+
declare const InputSchema: z.ZodObject<{
|
|
5
|
+
accountReference: z.ZodString;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
accountReference: string;
|
|
8
|
+
}, {
|
|
9
|
+
accountReference: string;
|
|
10
|
+
}>;
|
|
11
|
+
declare const definition: Tool;
|
|
12
|
+
declare function handler(args: unknown): Promise<McpToolResult>;
|
|
13
|
+
export { definition, InputSchema as inputSchema, handler };
|
|
14
|
+
//# sourceMappingURL=getReservedAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getReservedAccount.d.ts","sourceRoot":"","sources":["../../../src/tools/collections/getReservedAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASxD,QAAA,MAAM,WAAW;;;;;;EAKf,CAAC;AAEH,QAAA,MAAM,UAAU,EAAE,IAcjB,CAAC;AAEF,iBAAe,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAsB5D;AAID,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
+
import { apiGet } from "../../client/monnifyClient.js";
|
|
4
|
+
import { sanitiseReservedAccountDetailsResponse } from "../../security/sanitiser.js";
|
|
5
|
+
import { registerTool } from "../registry.js";
|
|
6
|
+
import { MonnifyApiError } from "../../utils/errors.js";
|
|
7
|
+
import { errorResult } from "../../types/mcp.js";
|
|
8
|
+
import { formatReservedAccountDetails } from "../../utils/format.js";
|
|
9
|
+
import { getResponseFormat } from "../../utils/clientContext.js";
|
|
10
|
+
const InputSchema = z.object({
|
|
11
|
+
accountReference: z
|
|
12
|
+
.string()
|
|
13
|
+
.min(1)
|
|
14
|
+
.describe("The unique reference used when the reserved account was created."),
|
|
15
|
+
});
|
|
16
|
+
const definition = {
|
|
17
|
+
name: "monnify_get_reserved_account",
|
|
18
|
+
description: `Returns the details of an existing reserved account including its virtual account numbers.
|
|
19
|
+
|
|
20
|
+
WHEN TO USE: To look up a reserved account by its reference — e.g. to show a customer their dedicated payment account, confirm the account is still active, or retrieve virtual account numbers for display.
|
|
21
|
+
|
|
22
|
+
PREREQUISITES: The reserved account must have been created with monnify_reserve_account.
|
|
23
|
+
|
|
24
|
+
SIDE EFFECTS: None. Read-only operation.
|
|
25
|
+
|
|
26
|
+
MFA NOTE: Not applicable.
|
|
27
|
+
|
|
28
|
+
KEY OUTPUT FIELDS: accountName, accountReference, status, accounts (virtual account numbers per bank), customerName, customerEmail, createdOn.`,
|
|
29
|
+
inputSchema: zodToJsonSchema(InputSchema),
|
|
30
|
+
};
|
|
31
|
+
async function handler(args) {
|
|
32
|
+
try {
|
|
33
|
+
const parsed = InputSchema.parse(args);
|
|
34
|
+
const result = await apiGet(`/api/v2/bank-transfer/reserved-accounts/${encodeURIComponent(parsed.accountReference)}`);
|
|
35
|
+
const sanitised = sanitiseReservedAccountDetailsResponse(result);
|
|
36
|
+
return {
|
|
37
|
+
content: [{ type: "text", text: getResponseFormat() === "json" ? JSON.stringify(sanitised, null, 2) : formatReservedAccountDetails(sanitised) }],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof z.ZodError) {
|
|
42
|
+
return {
|
|
43
|
+
content: [{ type: "text", text: `Validation failed:\n${error.issues.map(i => ` - ${i.path.join(".")}: ${i.message}`).join("\n")}` }],
|
|
44
|
+
isError: true,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (error instanceof MonnifyApiError) {
|
|
48
|
+
return { content: [error.toMcpContent()], isError: true };
|
|
49
|
+
}
|
|
50
|
+
return errorResult(`monnify_get_reserved_account failed: ${String(error)}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
registerTool({ definition, handler });
|
|
54
|
+
export { definition, InputSchema as inputSchema, handler };
|
|
55
|
+
//# sourceMappingURL=getReservedAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getReservedAccount.js","sourceRoot":"","sources":["../../../src/tools/collections/getReservedAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,sCAAsC,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,kEAAkE,CAAC;CAChF,CAAC,CAAC;AAEH,MAAM,UAAU,GAAS;IACvB,IAAI,EAAE,8BAA8B;IACpC,WAAW,EAAE;;;;;;;;;;+IAUgI;IAC7I,WAAW,EAAE,eAAe,CAAC,WAAW,CAAwB;CACjE,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAa;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,2CAA2C,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CACzF,CAAC;QACF,MAAM,SAAS,GAAG,sCAAsC,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,SAAoC,CAAC,EAAE,CAAC;SAC5K,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACrI,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,WAAW,CAAC,wCAAwC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { McpToolResult } from "../../types/mcp.js";
|
|
4
|
+
declare const InputSchema: z.ZodObject<{
|
|
5
|
+
accountReference: z.ZodString;
|
|
6
|
+
page: z.ZodDefault<z.ZodNumber>;
|
|
7
|
+
size: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
accountReference: string;
|
|
10
|
+
size: number;
|
|
11
|
+
page: number;
|
|
12
|
+
}, {
|
|
13
|
+
accountReference: string;
|
|
14
|
+
size?: number | undefined;
|
|
15
|
+
page?: number | undefined;
|
|
16
|
+
}>;
|
|
17
|
+
declare const definition: Tool;
|
|
18
|
+
declare function handler(args: unknown): Promise<McpToolResult>;
|
|
19
|
+
export { definition, InputSchema as inputSchema, handler };
|
|
20
|
+
//# sourceMappingURL=getReservedAccountTransactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getReservedAccountTransactions.d.ts","sourceRoot":"","sources":["../../../src/tools/collections/getReservedAccountTransactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASxD,QAAA,MAAM,WAAW;;;;;;;;;;;;EAkBf,CAAC;AAEH,QAAA,MAAM,UAAU,EAAE,IAcjB,CAAC;AAEF,iBAAe,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CA6C5D;AAID,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
+
import { apiGet } from "../../client/monnifyClient.js";
|
|
4
|
+
import { sanitiseReservedAccountTransactionsResponse } from "../../security/sanitiser.js";
|
|
5
|
+
import { registerTool } from "../registry.js";
|
|
6
|
+
import { MonnifyApiError } from "../../utils/errors.js";
|
|
7
|
+
import { errorResult } from "../../types/mcp.js";
|
|
8
|
+
import { formatReservedAccountTransactions } from "../../utils/format.js";
|
|
9
|
+
import { getResponseFormat } from "../../utils/clientContext.js";
|
|
10
|
+
const InputSchema = z.object({
|
|
11
|
+
accountReference: z
|
|
12
|
+
.string()
|
|
13
|
+
.min(1)
|
|
14
|
+
.describe("The unique reference of the reserved account to fetch transactions for."),
|
|
15
|
+
page: z
|
|
16
|
+
.number()
|
|
17
|
+
.int()
|
|
18
|
+
.min(0)
|
|
19
|
+
.default(0)
|
|
20
|
+
.describe("Page number (zero-indexed). Default is 0."),
|
|
21
|
+
size: z
|
|
22
|
+
.number()
|
|
23
|
+
.int()
|
|
24
|
+
.min(1)
|
|
25
|
+
.max(100)
|
|
26
|
+
.default(10)
|
|
27
|
+
.describe("Number of transactions per page. Default is 10, max is 100."),
|
|
28
|
+
});
|
|
29
|
+
const definition = {
|
|
30
|
+
name: "monnify_get_reserved_account_transactions",
|
|
31
|
+
description: `Returns a paginated list of all transactions received on a reserved account.
|
|
32
|
+
|
|
33
|
+
WHEN TO USE: To review payment history for a customer's dedicated virtual account — e.g. checking what has been paid into a wallet, reconciling a subscription account, or investigating a missing payment.
|
|
34
|
+
|
|
35
|
+
PREREQUISITES: The reserved account must exist. Use monnify_get_reserved_account to confirm it is active.
|
|
36
|
+
|
|
37
|
+
SIDE EFFECTS: None. Read-only operation.
|
|
38
|
+
|
|
39
|
+
MFA NOTE: Not applicable.
|
|
40
|
+
|
|
41
|
+
KEY OUTPUT FIELDS: transactionReference, paymentReference, amountPaid, totalPayable, paymentStatus, paidOn, paymentMethod, currencyCode.`,
|
|
42
|
+
inputSchema: zodToJsonSchema(InputSchema),
|
|
43
|
+
};
|
|
44
|
+
async function handler(args) {
|
|
45
|
+
try {
|
|
46
|
+
const parsed = InputSchema.parse(args);
|
|
47
|
+
const result = await apiGet("/api/v1/bank-transfer/reserved-accounts/transactions", {
|
|
48
|
+
accountReference: parsed.accountReference,
|
|
49
|
+
page: parsed.page,
|
|
50
|
+
size: parsed.size,
|
|
51
|
+
});
|
|
52
|
+
const content = Array.isArray(result["content"]) ? result["content"] : [];
|
|
53
|
+
const sanitised = sanitiseReservedAccountTransactionsResponse(content);
|
|
54
|
+
const txMeta = {
|
|
55
|
+
totalElements: result["totalElements"],
|
|
56
|
+
totalPages: result["totalPages"],
|
|
57
|
+
number: result["number"],
|
|
58
|
+
accountReference: parsed.accountReference,
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
content: [
|
|
62
|
+
{
|
|
63
|
+
type: "text",
|
|
64
|
+
text: getResponseFormat() === "json"
|
|
65
|
+
? JSON.stringify({ content: sanitised, ...txMeta }, null, 2)
|
|
66
|
+
: formatReservedAccountTransactions(sanitised, txMeta),
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error instanceof z.ZodError) {
|
|
73
|
+
return {
|
|
74
|
+
content: [{ type: "text", text: `Validation failed:\n${error.issues.map(i => ` - ${i.path.join(".")}: ${i.message}`).join("\n")}` }],
|
|
75
|
+
isError: true,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (error instanceof MonnifyApiError) {
|
|
79
|
+
return { content: [error.toMcpContent()], isError: true };
|
|
80
|
+
}
|
|
81
|
+
return errorResult(`monnify_get_reserved_account_transactions failed: ${String(error)}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
registerTool({ definition, handler });
|
|
85
|
+
export { definition, InputSchema as inputSchema, handler };
|
|
86
|
+
//# sourceMappingURL=getReservedAccountTransactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getReservedAccountTransactions.js","sourceRoot":"","sources":["../../../src/tools/collections/getReservedAccountTransactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { McpToolResult } from "../../types/mcp.js";
|
|
4
|
+
declare const InputSchema: z.ZodObject<{
|
|
5
|
+
transactionReference: z.ZodString;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
transactionReference: string;
|
|
8
|
+
}, {
|
|
9
|
+
transactionReference: string;
|
|
10
|
+
}>;
|
|
11
|
+
declare const definition: Tool;
|
|
12
|
+
declare function handler(args: unknown): Promise<McpToolResult>;
|
|
13
|
+
export { definition, InputSchema as inputSchema, handler };
|
|
14
|
+
//# sourceMappingURL=getTransactionDetails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTransactionDetails.d.ts","sourceRoot":"","sources":["../../../src/tools/collections/getTransactionDetails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASxD,QAAA,MAAM,WAAW;;;;;;EAOf,CAAC;AAEH,QAAA,MAAM,UAAU,EAAE,IAcjB,CAAC;AAEF,iBAAe,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CA2B5D;AAID,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
+
import { apiGet } from "../../client/monnifyClient.js";
|
|
4
|
+
import { sanitiseTransactionStatusResponse } from "../../security/sanitiser.js";
|
|
5
|
+
import { registerTool } from "../registry.js";
|
|
6
|
+
import { MonnifyApiError } from "../../utils/errors.js";
|
|
7
|
+
import { errorResult } from "../../types/mcp.js";
|
|
8
|
+
import { formatTransactionStatus } from "../../utils/format.js";
|
|
9
|
+
import { getResponseFormat } from "../../utils/clientContext.js";
|
|
10
|
+
const InputSchema = z.object({
|
|
11
|
+
transactionReference: z
|
|
12
|
+
.string()
|
|
13
|
+
.min(1)
|
|
14
|
+
.describe("Monnify-generated transaction reference (e.g. 'MNFY|67|20220725111957|000283'). Returned as transactionReference from monnify_initiate_payment or monnify_get_all_transactions."),
|
|
15
|
+
});
|
|
16
|
+
const definition = {
|
|
17
|
+
name: "monnify_get_transaction_details",
|
|
18
|
+
description: `Retrieves the full status and details of a transaction directly by its Monnify transaction reference.
|
|
19
|
+
|
|
20
|
+
WHEN TO USE: When you have the Monnify transactionReference and need to confirm the payment outcome. Use monnify_get_transaction_status if you only have your own paymentReference.
|
|
21
|
+
|
|
22
|
+
PREREQUISITES: A valid Monnify transactionReference from a prior transaction.
|
|
23
|
+
|
|
24
|
+
SIDE EFFECTS: None. Read-only operation.
|
|
25
|
+
|
|
26
|
+
MFA NOTE: Not applicable.
|
|
27
|
+
|
|
28
|
+
KEY OUTPUT FIELDS: transactionReference, paymentReference, amountPaid, totalPayable, settledAmount, paidOn, paymentStatus (PAID | PENDING | CANCELLED | FAILED), currencyCode, paymentMethod.`,
|
|
29
|
+
inputSchema: zodToJsonSchema(InputSchema),
|
|
30
|
+
};
|
|
31
|
+
async function handler(args) {
|
|
32
|
+
try {
|
|
33
|
+
const parsed = InputSchema.parse(args);
|
|
34
|
+
const result = await apiGet(`/api/v2/transactions/${encodeURIComponent(parsed.transactionReference)}`);
|
|
35
|
+
const sanitised = sanitiseTransactionStatusResponse(result);
|
|
36
|
+
return {
|
|
37
|
+
content: [{ type: "text", text: getResponseFormat() === "json" ? JSON.stringify(sanitised, null, 2) : formatTransactionStatus(sanitised) }],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof z.ZodError) {
|
|
42
|
+
return {
|
|
43
|
+
content: [
|
|
44
|
+
{
|
|
45
|
+
type: "text",
|
|
46
|
+
text: `Validation failed:\n${error.issues.map((i) => ` - ${i.path.join(".")}: ${i.message}`).join("\n")}`,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
isError: true,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (error instanceof MonnifyApiError) {
|
|
53
|
+
return { content: [error.toMcpContent()], isError: true };
|
|
54
|
+
}
|
|
55
|
+
return errorResult(`monnify_get_transaction_details failed: ${String(error)}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
registerTool({ definition, handler });
|
|
59
|
+
export { definition, InputSchema as inputSchema, handler };
|
|
60
|
+
//# sourceMappingURL=getTransactionDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTransactionDetails.js","sourceRoot":"","sources":["../../../src/tools/collections/getTransactionDetails.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,oBAAoB,EAAE,CAAC;SACpB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,iLAAiL,CAClL;CACJ,CAAC,CAAC;AAEH,MAAM,UAAU,GAAS;IACvB,IAAI,EAAE,iCAAiC;IACvC,WAAW,EAAE;;;;;;;;;;8LAU+K;IAC5L,WAAW,EAAE,eAAe,CAAC,WAAW,CAAwB;CACjE,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAa;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,wBAAwB,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAC1E,CAAC;QACF,MAAM,SAAS,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,SAAoC,CAAC,EAAE,CAAC;SACvK,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,uBAAuB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAC3G;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,WAAW,CAAC,2CAA2C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import type { McpToolResult } from "../../types/mcp.js";
|
|
3
|
+
import { GetTransactionStatusInputSchema } from "../../schemas/extended/collections.js";
|
|
4
|
+
declare const definition: Tool;
|
|
5
|
+
declare function handler(args: unknown): Promise<McpToolResult>;
|
|
6
|
+
export { definition, GetTransactionStatusInputSchema as inputSchema, handler };
|
|
7
|
+
//# sourceMappingURL=getTransactionStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTransactionStatus.d.ts","sourceRoot":"","sources":["../../../src/tools/collections/getTransactionStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AAIxF,QAAA,MAAM,UAAU,EAAE,IAcjB,CAAC;AAEF,iBAAe,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CA+B5D;AAID,OAAO,EAAE,UAAU,EAAE,+BAA+B,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
+
import { apiGet } from "../../client/monnifyClient.js";
|
|
4
|
+
import { sanitiseTransactionStatusResponse } from "../../security/sanitiser.js";
|
|
5
|
+
import { registerTool } from "../registry.js";
|
|
6
|
+
import { MonnifyApiError } from "../../utils/errors.js";
|
|
7
|
+
import { errorResult } from "../../types/mcp.js";
|
|
8
|
+
import { GetTransactionStatusInputSchema } from "../../schemas/extended/collections.js";
|
|
9
|
+
import { formatTransactionStatus } from "../../utils/format.js";
|
|
10
|
+
import { getResponseFormat } from "../../utils/clientContext.js";
|
|
11
|
+
const definition = {
|
|
12
|
+
name: "monnify_get_transaction_status",
|
|
13
|
+
description: `Queries the status of a payment transaction.
|
|
14
|
+
|
|
15
|
+
WHEN TO USE: After initiating a payment to check if it has been completed (paymentStatus = PAID), or when a customer reports a payment issue. Poll this endpoint after the customer's redirect back from checkout.
|
|
16
|
+
|
|
17
|
+
PREREQUISITES: A transaction must exist — call monnify_initiate_payment first, or have a known paymentReference.
|
|
18
|
+
|
|
19
|
+
SIDE EFFECTS: None. Read-only operation.
|
|
20
|
+
|
|
21
|
+
MFA NOTE: Not applicable.
|
|
22
|
+
|
|
23
|
+
KEY OUTPUT FIELDS: transactionReference, paymentReference, amountPaid, totalPayable, paymentStatus (PAID | PENDING | CANCELLED | FAILED), paidOn, currencyCode, paymentMethod.`,
|
|
24
|
+
inputSchema: zodToJsonSchema(GetTransactionStatusInputSchema),
|
|
25
|
+
};
|
|
26
|
+
async function handler(args) {
|
|
27
|
+
try {
|
|
28
|
+
const parsed = GetTransactionStatusInputSchema.parse(args);
|
|
29
|
+
const result = await apiGet("/api/v2/merchant/transactions/query", {
|
|
30
|
+
paymentReference: parsed.paymentReference,
|
|
31
|
+
transactionReference: parsed.transactionReference,
|
|
32
|
+
});
|
|
33
|
+
const sanitised = sanitiseTransactionStatusResponse(result);
|
|
34
|
+
return {
|
|
35
|
+
content: [{ type: "text", text: getResponseFormat() === "json" ? JSON.stringify(sanitised, null, 2) : formatTransactionStatus(sanitised) }],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error instanceof z.ZodError) {
|
|
40
|
+
return {
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
43
|
+
type: "text",
|
|
44
|
+
text: `Validation failed:\n${error.issues.map((i) => ` - ${i.path.join(".")}: ${i.message}`).join("\n")}`,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
isError: true,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (error instanceof MonnifyApiError) {
|
|
51
|
+
return { content: [error.toMcpContent()], isError: true };
|
|
52
|
+
}
|
|
53
|
+
return errorResult(`monnify_get_transaction_status failed: ${String(error)}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
registerTool({ definition, handler });
|
|
57
|
+
export { definition, GetTransactionStatusInputSchema as inputSchema, handler };
|
|
58
|
+
//# sourceMappingURL=getTransactionStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../../../src/tools/collections/getTransactionStatus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,UAAU,GAAS;IACvB,IAAI,EAAE,gCAAgC;IACtC,WAAW,EAAE;;;;;;;;;;+KAUgK;IAC7K,WAAW,EAAE,eAAe,CAAC,+BAA+B,CAAwB;CACrF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAa;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,qCAAqC,EACrC;YACE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;SAClD,CACF,CAAC;QACF,MAAM,SAAS,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,SAAoC,CAAC,EAAE,CAAC;SACvK,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,uBAAuB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAC3G;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,WAAW,CAAC,0CAA0C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,+BAA+B,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import type { McpToolResult } from "../../types/mcp.js";
|
|
3
|
+
import { InitiatePaymentInputSchema } from "../../schemas/extended/collections.js";
|
|
4
|
+
declare const definition: Tool;
|
|
5
|
+
declare function handler(args: unknown): Promise<McpToolResult>;
|
|
6
|
+
export { definition, InitiatePaymentInputSchema as inputSchema, handler };
|
|
7
|
+
//# sourceMappingURL=initiatePayment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiatePayment.d.ts","sourceRoot":"","sources":["../../../src/tools/collections/initiatePayment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAKnF,QAAA,MAAM,UAAU,EAAE,IAcjB,CAAC;AAEF,iBAAe,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAmC5D;AAID,OAAO,EAAE,UAAU,EAAE,0BAA0B,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
+
import { apiPost } from "../../client/monnifyClient.js";
|
|
4
|
+
import { sanitiseInitiatePaymentResponse } from "../../security/sanitiser.js";
|
|
5
|
+
import { registerTool } from "../registry.js";
|
|
6
|
+
import { MonnifyApiError } from "../../utils/errors.js";
|
|
7
|
+
import { errorResult } from "../../types/mcp.js";
|
|
8
|
+
import { InitiatePaymentInputSchema } from "../../schemas/extended/collections.js";
|
|
9
|
+
import { tryEnv } from "../../config/env.js";
|
|
10
|
+
import { formatInitiatePayment } from "../../utils/format.js";
|
|
11
|
+
import { getResponseFormat } from "../../utils/clientContext.js";
|
|
12
|
+
const definition = {
|
|
13
|
+
name: "monnify_initiate_payment",
|
|
14
|
+
description: `Initiates a payment transaction and returns a checkout URL for the customer.
|
|
15
|
+
|
|
16
|
+
WHEN TO USE: When a customer needs to make a one-time payment. Returns a checkoutUrl — redirect the customer to this URL to complete payment via card, bank transfer, USSD, or other methods.
|
|
17
|
+
|
|
18
|
+
PREREQUISITES: None. A Monnify contract code is required (from Dashboard → Settings → Contract Codes).
|
|
19
|
+
|
|
20
|
+
SIDE EFFECTS: Creates a pending transaction on Monnify. Does not charge the customer — the customer must visit checkoutUrl and complete payment. Providing the same paymentReference again is safe (idempotent — returns the existing transaction).
|
|
21
|
+
|
|
22
|
+
MFA NOTE: Not applicable at this stage. The customer may encounter card 3DS (OTP) authentication on the checkout page.
|
|
23
|
+
|
|
24
|
+
KEY OUTPUT FIELDS: transactionReference (Monnify's ref), paymentReference (your ref), checkoutUrl (send this to the customer), enabledPaymentMethod.`,
|
|
25
|
+
inputSchema: zodToJsonSchema(InitiatePaymentInputSchema),
|
|
26
|
+
};
|
|
27
|
+
async function handler(args) {
|
|
28
|
+
try {
|
|
29
|
+
const parsed = InitiatePaymentInputSchema.parse(args);
|
|
30
|
+
const contractCode = parsed.contractCode ?? tryEnv()?.MONNIFY_CONTRACT_CODE;
|
|
31
|
+
if (!contractCode) {
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: "text", text: "Validation failed:\n - contractCode: Required (or configure MONNIFY_CONTRACT_CODE environment variable)" }],
|
|
34
|
+
isError: true,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const result = await apiPost("/api/v1/merchant/transactions/init-transaction", { ...parsed, contractCode });
|
|
38
|
+
const sanitised = sanitiseInitiatePaymentResponse(result);
|
|
39
|
+
return {
|
|
40
|
+
content: [{ type: "text", text: getResponseFormat() === "json" ? JSON.stringify(sanitised, null, 2) : formatInitiatePayment(sanitised) }],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof z.ZodError) {
|
|
45
|
+
return {
|
|
46
|
+
content: [
|
|
47
|
+
{
|
|
48
|
+
type: "text",
|
|
49
|
+
text: `Validation failed:\n${error.issues.map((i) => ` - ${i.path.join(".")}: ${i.message}`).join("\n")}`,
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
isError: true,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (error instanceof MonnifyApiError) {
|
|
56
|
+
return { content: [error.toMcpContent()], isError: true };
|
|
57
|
+
}
|
|
58
|
+
return errorResult(`monnify_initiate_payment failed: ${String(error)}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
registerTool({ definition, handler });
|
|
62
|
+
export { definition, InitiatePaymentInputSchema as inputSchema, handler };
|
|
63
|
+
//# sourceMappingURL=initiatePayment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiatePayment.js","sourceRoot":"","sources":["../../../src/tools/collections/initiatePayment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,UAAU,GAAS;IACvB,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE;;;;;;;;;;qJAUsI;IACnJ,WAAW,EAAE,eAAe,CAAC,0BAA0B,CAAwB;CAChF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAa;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,EAAE,EAAE,qBAAqB,CAAC;QAC5E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0GAA0G,EAAE,CAAC;gBAC7I,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,gDAAgD,EAChD,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,CAC5B,CAAC;QACF,MAAM,SAAS,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAoC,CAAC,EAAE,CAAC;SACrK,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,uBAAuB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAC3G;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,WAAW,CAAC,oCAAoC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,0BAA0B,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import type { McpToolResult } from "../../types/mcp.js";
|
|
3
|
+
import { PayWithBankTransferInputSchema } from "../../schemas/extended/collections.js";
|
|
4
|
+
declare const definition: Tool;
|
|
5
|
+
declare function handler(args: unknown): Promise<McpToolResult>;
|
|
6
|
+
export { definition, PayWithBankTransferInputSchema as inputSchema, handler };
|
|
7
|
+
//# sourceMappingURL=payWithBankTransfer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payWithBankTransfer.d.ts","sourceRoot":"","sources":["../../../src/tools/collections/payWithBankTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AAEvF,QAAA,MAAM,UAAU,EAAE,IAcjB,CAAC;AAEF,iBAAe,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CA4B5D;AAID,OAAO,EAAE,UAAU,EAAE,8BAA8B,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC"}
|