@elyonar/einvoice-mcp 0.1.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/LICENSE +21 -0
- package/README.md +133 -0
- package/bin/cli.js +2 -0
- package/dist/client/billing-client.d.ts +19 -0
- package/dist/client/billing-client.d.ts.map +1 -0
- package/dist/client/billing-client.js +62 -0
- package/dist/client/billing-client.js.map +1 -0
- package/dist/client/http-client.d.ts +44 -0
- package/dist/client/http-client.d.ts.map +1 -0
- package/dist/client/http-client.js +117 -0
- package/dist/client/http-client.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +12 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/invoice-client.d.ts +42 -0
- package/dist/client/invoice-client.d.ts.map +1 -0
- package/dist/client/invoice-client.js +107 -0
- package/dist/client/invoice-client.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +87 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/billing-tools.d.ts +11 -0
- package/dist/tools/billing-tools.d.ts.map +1 -0
- package/dist/tools/billing-tools.js +209 -0
- package/dist/tools/billing-tools.js.map +1 -0
- package/dist/tools/buyer-tools.d.ts +11 -0
- package/dist/tools/buyer-tools.d.ts.map +1 -0
- package/dist/tools/buyer-tools.js +148 -0
- package/dist/tools/buyer-tools.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +16 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/invoice-tools.d.ts +11 -0
- package/dist/tools/invoice-tools.d.ts.map +1 -0
- package/dist/tools/invoice-tools.js +319 -0
- package/dist/tools/invoice-tools.js.map +1 -0
- package/dist/tools/seller-tools.d.ts +11 -0
- package/dist/tools/seller-tools.d.ts.map +1 -0
- package/dist/tools/seller-tools.js +149 -0
- package/dist/tools/seller-tools.js.map +1 -0
- package/dist/types/billing.d.ts +145 -0
- package/dist/types/billing.d.ts.map +1 -0
- package/dist/types/billing.js +4 -0
- package/dist/types/billing.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/invoice.d.ts +197 -0
- package/dist/types/invoice.d.ts.map +1 -0
- package/dist/types/invoice.js +4 -0
- package/dist/types/invoice.js.map +1 -0
- package/dist/utils/format.d.ts +14 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +51 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.invoiceToolDefinitions = void 0;
|
|
4
|
+
exports.handleInvoiceTool = handleInvoiceTool;
|
|
5
|
+
const format_js_1 = require("../utils/format.js");
|
|
6
|
+
// ─── Tool Definitions ────────────────────────────────────────
|
|
7
|
+
exports.invoiceToolDefinitions = [
|
|
8
|
+
{
|
|
9
|
+
name: 'create_invoice',
|
|
10
|
+
description: 'Create a new invoice in draft status. Requires seller, buyer, date, currency, and at least one line item.',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
type: 'object',
|
|
13
|
+
properties: {
|
|
14
|
+
sellerId: { type: 'string', description: 'Seller ID' },
|
|
15
|
+
buyerId: { type: 'string', description: 'Buyer ID' },
|
|
16
|
+
invoiceDate: { type: 'string', description: 'Invoice date (YYYY-MM-DD)' },
|
|
17
|
+
dueDate: { type: 'string', description: 'Payment due date (YYYY-MM-DD)' },
|
|
18
|
+
currency: { type: 'string', enum: ['NGN', 'USD', 'EUR', 'GBP'], description: 'Currency code' },
|
|
19
|
+
lineItems: {
|
|
20
|
+
type: 'array', minItems: 1,
|
|
21
|
+
items: {
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
description: { type: 'string' },
|
|
25
|
+
quantity: { type: 'number', minimum: 0.001 },
|
|
26
|
+
unitPrice: { type: 'number', minimum: 0 },
|
|
27
|
+
vatRate: { type: 'number', minimum: 0, maximum: 100, description: 'VAT rate percentage (e.g. 7.5)' },
|
|
28
|
+
hsnCode: { type: 'string' },
|
|
29
|
+
unitCode: { type: 'string' },
|
|
30
|
+
discountAmount: { type: 'number', minimum: 0 },
|
|
31
|
+
},
|
|
32
|
+
required: ['description', 'quantity', 'unitPrice', 'vatRate'],
|
|
33
|
+
},
|
|
34
|
+
description: 'Line items (min 1)',
|
|
35
|
+
},
|
|
36
|
+
invoiceType: { type: 'string', enum: ['STANDARD', 'CREDIT_NOTE', 'DEBIT_NOTE'] },
|
|
37
|
+
invoiceNumber: { type: 'string', description: 'Custom invoice number' },
|
|
38
|
+
notes: { type: 'string' },
|
|
39
|
+
paymentTerms: { type: 'string' },
|
|
40
|
+
originalInvoiceNumber: { type: 'string', description: 'Required for credit notes' },
|
|
41
|
+
},
|
|
42
|
+
required: ['sellerId', 'buyerId', 'invoiceDate', 'dueDate', 'currency', 'lineItems'],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'get_invoice',
|
|
47
|
+
description: 'Get full details of an invoice by ID, including line items, amounts, and submission status.',
|
|
48
|
+
inputSchema: {
|
|
49
|
+
type: 'object',
|
|
50
|
+
properties: {
|
|
51
|
+
invoiceId: { type: 'string', description: 'Invoice ID' },
|
|
52
|
+
},
|
|
53
|
+
required: ['invoiceId'],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'list_invoices',
|
|
58
|
+
description: 'List invoices with optional filtering by status, seller, buyer, date range, and search term.',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
page: { type: 'integer', minimum: 1, description: 'Page number (default: 1)' },
|
|
63
|
+
limit: { type: 'integer', minimum: 1, maximum: 100, description: 'Results per page (default: 20)' },
|
|
64
|
+
status: { type: 'string', enum: ['draft', 'queued', 'pending', 'accepted', 'rejected', 'failed', 'cancelled'] },
|
|
65
|
+
sellerId: { type: 'string' },
|
|
66
|
+
buyerId: { type: 'string' },
|
|
67
|
+
startDate: { type: 'string', description: 'From date (YYYY-MM-DD)' },
|
|
68
|
+
endDate: { type: 'string', description: 'To date (YYYY-MM-DD)' },
|
|
69
|
+
search: { type: 'string', description: 'Search invoice number or party name' },
|
|
70
|
+
sortBy: { type: 'string', enum: ['createdAt', 'invoiceDate', 'dueDate', 'status'] },
|
|
71
|
+
sortOrder: { type: 'string', enum: ['ASC', 'DESC'] },
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: 'update_invoice',
|
|
77
|
+
description: 'Update a draft invoice. Only draft invoices can be modified. Cannot change sellerId, buyerId, or invoiceNumber.',
|
|
78
|
+
inputSchema: {
|
|
79
|
+
type: 'object',
|
|
80
|
+
properties: {
|
|
81
|
+
invoiceId: { type: 'string', description: 'Invoice ID to update' },
|
|
82
|
+
invoiceDate: { type: 'string' },
|
|
83
|
+
dueDate: { type: 'string' },
|
|
84
|
+
lineItems: { type: 'array', items: { type: 'object' } },
|
|
85
|
+
notes: { type: 'string' },
|
|
86
|
+
paymentTerms: { type: 'string' },
|
|
87
|
+
paymentStatus: { type: 'string', enum: ['UNPAID', 'PARTIALLY_PAID', 'PAID'] },
|
|
88
|
+
allowanceAmount: { type: 'number' },
|
|
89
|
+
chargeAmount: { type: 'number' },
|
|
90
|
+
},
|
|
91
|
+
required: ['invoiceId'],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'delete_invoice',
|
|
96
|
+
description: 'Permanently delete a draft invoice. Cannot be undone. Only works for draft invoices.',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
invoiceId: { type: 'string', description: 'Draft invoice ID to delete' },
|
|
101
|
+
},
|
|
102
|
+
required: ['invoiceId'],
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'submit_invoice',
|
|
107
|
+
description: 'Submit a draft invoice to FIRS (Nigeria tax authority). Irreversible — transitions to queued, then pending.',
|
|
108
|
+
inputSchema: {
|
|
109
|
+
type: 'object',
|
|
110
|
+
properties: {
|
|
111
|
+
invoiceId: { type: 'string', description: 'Draft invoice ID to submit' },
|
|
112
|
+
},
|
|
113
|
+
required: ['invoiceId'],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: 'batch_submit_invoices',
|
|
118
|
+
description: 'Submit multiple draft invoices to FIRS in one operation. Returns queued/failed breakdown.',
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: 'object',
|
|
121
|
+
properties: {
|
|
122
|
+
invoiceIds: {
|
|
123
|
+
type: 'array', minItems: 1, maxItems: 100,
|
|
124
|
+
items: { type: 'string' },
|
|
125
|
+
description: 'Array of invoice IDs to submit',
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
required: ['invoiceIds'],
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'retry_invoice_submission',
|
|
133
|
+
description: 'Retry a failed invoice submission. Only works for invoices with status "failed".',
|
|
134
|
+
inputSchema: {
|
|
135
|
+
type: 'object',
|
|
136
|
+
properties: {
|
|
137
|
+
invoiceId: { type: 'string', description: 'Failed invoice ID to retry' },
|
|
138
|
+
},
|
|
139
|
+
required: ['invoiceId'],
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'cancel_invoice',
|
|
144
|
+
description: 'Cancel an accepted invoice by creating a credit note. Only accepted invoices can be cancelled.',
|
|
145
|
+
inputSchema: {
|
|
146
|
+
type: 'object',
|
|
147
|
+
properties: {
|
|
148
|
+
invoiceId: { type: 'string', description: 'Accepted invoice ID to cancel' },
|
|
149
|
+
reason: { type: 'string', description: 'Cancellation reason' },
|
|
150
|
+
notes: { type: 'string', description: 'Additional context' },
|
|
151
|
+
},
|
|
152
|
+
required: ['invoiceId', 'reason'],
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: 'get_invoice_status',
|
|
157
|
+
description: 'Get the current status of an invoice from local database.',
|
|
158
|
+
inputSchema: {
|
|
159
|
+
type: 'object',
|
|
160
|
+
properties: {
|
|
161
|
+
invoiceId: { type: 'string', description: 'Invoice ID' },
|
|
162
|
+
},
|
|
163
|
+
required: ['invoiceId'],
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
name: 'query_invoice_status',
|
|
168
|
+
description: 'Query FIRS for real-time invoice status. Makes a live request to the tax authority.',
|
|
169
|
+
inputSchema: {
|
|
170
|
+
type: 'object',
|
|
171
|
+
properties: {
|
|
172
|
+
invoiceId: { type: 'string', description: 'Invoice ID' },
|
|
173
|
+
},
|
|
174
|
+
required: ['invoiceId'],
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: 'validate_invoice',
|
|
179
|
+
description: 'Validate invoice data without creating it. Checks seller/buyer, dates, amounts, and FIRS rules.',
|
|
180
|
+
inputSchema: {
|
|
181
|
+
type: 'object',
|
|
182
|
+
properties: {
|
|
183
|
+
sellerId: { type: 'string' },
|
|
184
|
+
buyerId: { type: 'string' },
|
|
185
|
+
invoiceDate: { type: 'string' },
|
|
186
|
+
dueDate: { type: 'string' },
|
|
187
|
+
currency: { type: 'string', enum: ['NGN', 'USD', 'EUR', 'GBP'] },
|
|
188
|
+
lineItems: { type: 'array', minItems: 1, items: { type: 'object' } },
|
|
189
|
+
},
|
|
190
|
+
required: ['sellerId', 'buyerId', 'invoiceDate', 'dueDate', 'currency', 'lineItems'],
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: 'download_invoice',
|
|
195
|
+
description: 'Get a download URL for the invoice PDF or XML.',
|
|
196
|
+
inputSchema: {
|
|
197
|
+
type: 'object',
|
|
198
|
+
properties: {
|
|
199
|
+
invoiceId: { type: 'string', description: 'Invoice ID' },
|
|
200
|
+
format: { type: 'string', enum: ['pdf', 'xml'], description: 'Download format (default: pdf)' },
|
|
201
|
+
},
|
|
202
|
+
required: ['invoiceId'],
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
name: 'get_invoice_statistics',
|
|
207
|
+
description: 'Get invoice statistics and analytics for a given period.',
|
|
208
|
+
inputSchema: {
|
|
209
|
+
type: 'object',
|
|
210
|
+
properties: {
|
|
211
|
+
startDate: { type: 'string', description: 'Period start (YYYY-MM-DD)' },
|
|
212
|
+
endDate: { type: 'string', description: 'Period end (YYYY-MM-DD)' },
|
|
213
|
+
jurisdiction: { type: 'string' },
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
name: 'get_invoice_setup',
|
|
219
|
+
description: 'Get setup/reference data for invoice creation: available sellers, buyers, currencies, tax rates.',
|
|
220
|
+
inputSchema: {
|
|
221
|
+
type: 'object',
|
|
222
|
+
properties: {},
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
];
|
|
226
|
+
// ─── Tool Handler ────────────────────────────────────────
|
|
227
|
+
async function handleInvoiceTool(name, args, client) {
|
|
228
|
+
try {
|
|
229
|
+
switch (name) {
|
|
230
|
+
case 'create_invoice': {
|
|
231
|
+
const { ...body } = args;
|
|
232
|
+
const res = await client.createInvoice(body);
|
|
233
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Invoice ${res.data.invoiceNumber} created (${res.data.status}).`) }] };
|
|
234
|
+
}
|
|
235
|
+
case 'get_invoice': {
|
|
236
|
+
const id = (0, format_js_1.requiredParam)(args, 'invoiceId');
|
|
237
|
+
const res = await client.getInvoice(id);
|
|
238
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res) }] };
|
|
239
|
+
}
|
|
240
|
+
case 'list_invoices': {
|
|
241
|
+
const res = await client.listInvoices(args);
|
|
242
|
+
const count = Array.isArray(res.data) ? res.data.length : 0;
|
|
243
|
+
const total = res.meta.pagination?.total ?? count;
|
|
244
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Found ${total} invoices (showing ${count}).`) }] };
|
|
245
|
+
}
|
|
246
|
+
case 'update_invoice': {
|
|
247
|
+
const id = (0, format_js_1.requiredParam)(args, 'invoiceId');
|
|
248
|
+
const { invoiceId: _, ...body } = args;
|
|
249
|
+
const res = await client.updateInvoice(id, body);
|
|
250
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Invoice ${res.data.invoiceNumber} updated.`) }] };
|
|
251
|
+
}
|
|
252
|
+
case 'delete_invoice': {
|
|
253
|
+
const id = (0, format_js_1.requiredParam)(args, 'invoiceId');
|
|
254
|
+
const res = await client.deleteInvoice(id);
|
|
255
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, 'Invoice deleted.') }] };
|
|
256
|
+
}
|
|
257
|
+
case 'submit_invoice': {
|
|
258
|
+
const id = (0, format_js_1.requiredParam)(args, 'invoiceId');
|
|
259
|
+
const res = await client.submitInvoice(id);
|
|
260
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Invoice queued for submission (job: ${res.data.jobId}).`) }] };
|
|
261
|
+
}
|
|
262
|
+
case 'batch_submit_invoices': {
|
|
263
|
+
const ids = args.invoiceIds;
|
|
264
|
+
if (!Array.isArray(ids) || ids.length === 0)
|
|
265
|
+
throw new Error('invoiceIds must be a non-empty array');
|
|
266
|
+
const res = await client.batchSubmitInvoices(ids);
|
|
267
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Batch: ${res.data.totalQueued} queued, ${res.data.totalFailed} failed.`) }] };
|
|
268
|
+
}
|
|
269
|
+
case 'retry_invoice_submission': {
|
|
270
|
+
const id = (0, format_js_1.requiredParam)(args, 'invoiceId');
|
|
271
|
+
const res = await client.retryInvoice(id);
|
|
272
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Retry queued (attempt ${res.data.attempt}).`) }] };
|
|
273
|
+
}
|
|
274
|
+
case 'cancel_invoice': {
|
|
275
|
+
const id = (0, format_js_1.requiredParam)(args, 'invoiceId');
|
|
276
|
+
const reason = (0, format_js_1.requiredParam)(args, 'reason');
|
|
277
|
+
const notes = args.notes;
|
|
278
|
+
const res = await client.cancelInvoice(id, reason, notes);
|
|
279
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Invoice cancelled. Credit note created: ${res.data.invoiceNumber}`) }] };
|
|
280
|
+
}
|
|
281
|
+
case 'get_invoice_status': {
|
|
282
|
+
const id = (0, format_js_1.requiredParam)(args, 'invoiceId');
|
|
283
|
+
const res = await client.getInvoiceStatus(id);
|
|
284
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Status: ${res.data.status}`) }] };
|
|
285
|
+
}
|
|
286
|
+
case 'query_invoice_status': {
|
|
287
|
+
const id = (0, format_js_1.requiredParam)(args, 'invoiceId');
|
|
288
|
+
const res = await client.queryInvoiceStatus(id);
|
|
289
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `FIRS status: ${res.data.status}`) }] };
|
|
290
|
+
}
|
|
291
|
+
case 'validate_invoice': {
|
|
292
|
+
const { ...body } = args;
|
|
293
|
+
const res = await client.validateInvoice(body);
|
|
294
|
+
const status = res.data.valid ? 'Valid' : `Invalid (${res.data.errors.length} errors)`;
|
|
295
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, status) }] };
|
|
296
|
+
}
|
|
297
|
+
case 'download_invoice': {
|
|
298
|
+
const id = (0, format_js_1.requiredParam)(args, 'invoiceId');
|
|
299
|
+
const format = args.format;
|
|
300
|
+
const res = await client.downloadInvoice(id, format);
|
|
301
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Download URL: ${res.data.downloadUrl}`) }] };
|
|
302
|
+
}
|
|
303
|
+
case 'get_invoice_statistics': {
|
|
304
|
+
const res = await client.getInvoiceStatistics(args);
|
|
305
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Total invoices: ${res.data.totalInvoices}`) }] };
|
|
306
|
+
}
|
|
307
|
+
case 'get_invoice_setup': {
|
|
308
|
+
const res = await client.getInvoiceSetup();
|
|
309
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res) }] };
|
|
310
|
+
}
|
|
311
|
+
default:
|
|
312
|
+
return { content: [{ type: 'text', text: `Unknown invoice tool: ${name}` }], isError: true };
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatError)(error) }], isError: true };
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=invoice-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoice-tools.js","sourceRoot":"","sources":["../../src/tools/invoice-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type { InvoiceClient } from '../client/invoice-client.js';
|
|
3
|
+
export declare const sellerToolDefinitions: Tool[];
|
|
4
|
+
export declare function handleSellerTool(name: string, args: Record<string, unknown>, client: InvoiceClient): Promise<{
|
|
5
|
+
content: Array<{
|
|
6
|
+
type: 'text';
|
|
7
|
+
text: string;
|
|
8
|
+
}>;
|
|
9
|
+
isError?: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=seller-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-tools.d.ts","sourceRoot":"","sources":["../../src/tools/seller-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,eAAO,MAAM,qBAAqB,EAAE,IAAI,EAgGvC,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA4ChF"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sellerToolDefinitions = void 0;
|
|
4
|
+
exports.handleSellerTool = handleSellerTool;
|
|
5
|
+
const format_js_1 = require("../utils/format.js");
|
|
6
|
+
exports.sellerToolDefinitions = [
|
|
7
|
+
{
|
|
8
|
+
name: 'create_seller',
|
|
9
|
+
description: 'Register a new seller entity. Sellers must be registered before creating invoices.',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
companyName: { type: 'string', description: 'Business name' },
|
|
14
|
+
tin: { type: 'string', description: 'Tax ID (format: XXXXXXXX-XXXX)' },
|
|
15
|
+
registrationNumber: { type: 'string', description: 'Business registration number' },
|
|
16
|
+
email: { type: 'string', description: 'Contact email' },
|
|
17
|
+
phoneNumber: { type: 'string', description: 'Phone (international format, starts with +)' },
|
|
18
|
+
postalAddress: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
streetName: { type: 'string' },
|
|
22
|
+
cityName: { type: 'string' },
|
|
23
|
+
countrySubentity: { type: 'string', description: 'State/Province' },
|
|
24
|
+
postalZone: { type: 'string' },
|
|
25
|
+
countryCode: { type: 'string', description: 'ISO 3166-1 alpha-2' },
|
|
26
|
+
},
|
|
27
|
+
required: ['streetName', 'cityName', 'countrySubentity', 'countryCode'],
|
|
28
|
+
},
|
|
29
|
+
tradingName: { type: 'string' },
|
|
30
|
+
vatNumber: { type: 'string' },
|
|
31
|
+
website: { type: 'string' },
|
|
32
|
+
},
|
|
33
|
+
required: ['companyName', 'tin', 'registrationNumber', 'email', 'phoneNumber', 'postalAddress'],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'get_seller',
|
|
38
|
+
description: 'Get full details of a seller by ID.',
|
|
39
|
+
inputSchema: {
|
|
40
|
+
type: 'object',
|
|
41
|
+
properties: { sellerId: { type: 'string', description: 'Seller ID' } },
|
|
42
|
+
required: ['sellerId'],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'list_sellers',
|
|
47
|
+
description: 'List sellers with optional filtering and search.',
|
|
48
|
+
inputSchema: {
|
|
49
|
+
type: 'object',
|
|
50
|
+
properties: {
|
|
51
|
+
page: { type: 'integer', minimum: 1 },
|
|
52
|
+
limit: { type: 'integer', minimum: 1, maximum: 100 },
|
|
53
|
+
status: { type: 'string', enum: ['PENDING_VERIFICATION', 'ACTIVE', 'SUSPENDED', 'INACTIVE'] },
|
|
54
|
+
search: { type: 'string', description: 'Search by name or TIN' },
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'update_seller',
|
|
60
|
+
description: 'Update a seller. TIN cannot be changed after creation.',
|
|
61
|
+
inputSchema: {
|
|
62
|
+
type: 'object',
|
|
63
|
+
properties: {
|
|
64
|
+
sellerId: { type: 'string', description: 'Seller ID to update' },
|
|
65
|
+
companyName: { type: 'string' },
|
|
66
|
+
email: { type: 'string' },
|
|
67
|
+
phoneNumber: { type: 'string' },
|
|
68
|
+
postalAddress: { type: 'object' },
|
|
69
|
+
website: { type: 'string' },
|
|
70
|
+
registrationNumber: { type: 'string' },
|
|
71
|
+
},
|
|
72
|
+
required: ['sellerId'],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: 'delete_seller',
|
|
77
|
+
description: 'Delete a seller that has no invoices.',
|
|
78
|
+
inputSchema: {
|
|
79
|
+
type: 'object',
|
|
80
|
+
properties: { sellerId: { type: 'string', description: 'Seller ID to delete' } },
|
|
81
|
+
required: ['sellerId'],
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'verify_seller_tin',
|
|
86
|
+
description: 'Trigger TIN verification for a seller with FIRS.',
|
|
87
|
+
inputSchema: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: { sellerId: { type: 'string', description: 'Seller ID' } },
|
|
90
|
+
required: ['sellerId'],
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'get_seller_verification_status',
|
|
95
|
+
description: 'Check the TIN verification status of a seller.',
|
|
96
|
+
inputSchema: {
|
|
97
|
+
type: 'object',
|
|
98
|
+
properties: { sellerId: { type: 'string', description: 'Seller ID' } },
|
|
99
|
+
required: ['sellerId'],
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
async function handleSellerTool(name, args, client) {
|
|
104
|
+
try {
|
|
105
|
+
switch (name) {
|
|
106
|
+
case 'create_seller': {
|
|
107
|
+
const res = await client.createSeller(args);
|
|
108
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Seller "${res.data.partyName}" created (${res.data.tinVerificationStatus}).`) }] };
|
|
109
|
+
}
|
|
110
|
+
case 'get_seller': {
|
|
111
|
+
const id = (0, format_js_1.requiredParam)(args, 'sellerId');
|
|
112
|
+
const res = await client.getSeller(id);
|
|
113
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res) }] };
|
|
114
|
+
}
|
|
115
|
+
case 'list_sellers': {
|
|
116
|
+
const res = await client.listSellers(args);
|
|
117
|
+
const count = Array.isArray(res.data) ? res.data.length : 0;
|
|
118
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Found ${res.meta.pagination?.total ?? count} sellers.`) }] };
|
|
119
|
+
}
|
|
120
|
+
case 'update_seller': {
|
|
121
|
+
const id = (0, format_js_1.requiredParam)(args, 'sellerId');
|
|
122
|
+
const { sellerId: _, ...body } = args;
|
|
123
|
+
const res = await client.updateSeller(id, body);
|
|
124
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `Seller "${res.data.partyName}" updated.`) }] };
|
|
125
|
+
}
|
|
126
|
+
case 'delete_seller': {
|
|
127
|
+
const id = (0, format_js_1.requiredParam)(args, 'sellerId');
|
|
128
|
+
const res = await client.deleteSeller(id);
|
|
129
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, 'Seller deleted.') }] };
|
|
130
|
+
}
|
|
131
|
+
case 'verify_seller_tin': {
|
|
132
|
+
const id = (0, format_js_1.requiredParam)(args, 'sellerId');
|
|
133
|
+
const res = await client.verifySellerTin(id);
|
|
134
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `TIN verification: ${res.data.tinVerificationStatus}`) }] };
|
|
135
|
+
}
|
|
136
|
+
case 'get_seller_verification_status': {
|
|
137
|
+
const id = (0, format_js_1.requiredParam)(args, 'sellerId');
|
|
138
|
+
const res = await client.getSellerVerificationStatus(id);
|
|
139
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatSuccess)(res, `TIN status: ${res.data.tinVerificationStatus}`) }] };
|
|
140
|
+
}
|
|
141
|
+
default:
|
|
142
|
+
return { content: [{ type: 'text', text: `Unknown seller tool: ${name}` }], isError: true };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
return { content: [{ type: 'text', text: (0, format_js_1.formatError)(error) }], isError: true };
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=seller-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-tools.js","sourceRoot":"","sources":["../../src/tools/seller-tools.ts"],"names":[],"mappings":"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"}
|