@frihet/mcp-server 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -5
- package/dist/index.js +30 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/register-all.d.ts +10 -0
- package/dist/prompts/register-all.d.ts.map +1 -0
- package/dist/prompts/register-all.js +271 -0
- package/dist/prompts/register-all.js.map +1 -0
- package/dist/resources/register-all.d.ts +12 -0
- package/dist/resources/register-all.d.ts.map +1 -0
- package/dist/resources/register-all.js +345 -0
- package/dist/resources/register-all.js.map +1 -0
- package/dist/tools/clients.d.ts.map +1 -1
- package/dist/tools/clients.js +16 -6
- package/dist/tools/clients.js.map +1 -1
- package/dist/tools/expenses.d.ts.map +1 -1
- package/dist/tools/expenses.js +16 -6
- package/dist/tools/expenses.js.map +1 -1
- package/dist/tools/invoices.d.ts.map +1 -1
- package/dist/tools/invoices.js +19 -10
- package/dist/tools/invoices.js.map +1 -1
- package/dist/tools/products.d.ts.map +1 -1
- package/dist/tools/products.js +16 -6
- package/dist/tools/products.js.map +1 -1
- package/dist/tools/quotes.d.ts.map +1 -1
- package/dist/tools/quotes.js +16 -6
- package/dist/tools/quotes.js.map +1 -1
- package/dist/tools/shared.d.ts +120 -6
- package/dist/tools/shared.d.ts.map +1 -1
- package/dist/tools/shared.js +146 -5
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/webhooks.d.ts.map +1 -1
- package/dist/tools/webhooks.js +16 -6
- package/dist/tools/webhooks.js.map +1 -1
- package/package.json +5 -5
package/dist/tools/invoices.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Invoice tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
|
-
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, listContent, getContent, mutateContent, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS, paginatedOutput, deleteResultOutput, invoiceItemOutput } from "./shared.js";
|
|
6
6
|
const invoiceItemSchema = z.object({
|
|
7
7
|
description: z.string().describe("Description of the line item / Descripcion del concepto"),
|
|
8
8
|
quantity: z.number().describe("Quantity / Cantidad"),
|
|
@@ -32,11 +32,13 @@ export function registerInvoiceTools(server, client) {
|
|
|
32
32
|
.optional()
|
|
33
33
|
.describe("Number of results to skip / Resultados a saltar"),
|
|
34
34
|
},
|
|
35
|
+
outputSchema: paginatedOutput(invoiceItemOutput),
|
|
35
36
|
}, async ({ limit, offset }) => {
|
|
36
37
|
try {
|
|
37
38
|
const result = await client.listInvoices({ limit, offset });
|
|
38
39
|
return {
|
|
39
|
-
content: [
|
|
40
|
+
content: [listContent(formatPaginatedResponse("invoices", result))],
|
|
41
|
+
structuredContent: result,
|
|
40
42
|
};
|
|
41
43
|
}
|
|
42
44
|
catch (error) {
|
|
@@ -52,11 +54,13 @@ export function registerInvoiceTools(server, client) {
|
|
|
52
54
|
inputSchema: {
|
|
53
55
|
id: z.string().describe("Invoice ID / ID de la factura"),
|
|
54
56
|
},
|
|
57
|
+
outputSchema: invoiceItemOutput,
|
|
55
58
|
}, async ({ id }) => {
|
|
56
59
|
try {
|
|
57
60
|
const result = await client.getInvoice(id);
|
|
58
61
|
return {
|
|
59
|
-
content: [
|
|
62
|
+
content: [getContent(formatRecord("Invoice", result))],
|
|
63
|
+
structuredContent: result,
|
|
60
64
|
};
|
|
61
65
|
}
|
|
62
66
|
catch (error) {
|
|
@@ -96,11 +100,13 @@ export function registerInvoiceTools(server, client) {
|
|
|
96
100
|
.optional()
|
|
97
101
|
.describe("Tax rate percentage (e.g. 21 for 21% IVA) / Porcentaje de impuesto"),
|
|
98
102
|
},
|
|
103
|
+
outputSchema: invoiceItemOutput,
|
|
99
104
|
}, async (input) => {
|
|
100
105
|
try {
|
|
101
106
|
const result = await client.createInvoice(input);
|
|
102
107
|
return {
|
|
103
|
-
content: [
|
|
108
|
+
content: [mutateContent(formatRecord("Invoice created", result))],
|
|
109
|
+
structuredContent: result,
|
|
104
110
|
};
|
|
105
111
|
}
|
|
106
112
|
catch (error) {
|
|
@@ -129,11 +135,13 @@ export function registerInvoiceTools(server, client) {
|
|
|
129
135
|
notes: z.string().optional().describe("Notes / Notas"),
|
|
130
136
|
taxRate: z.number().min(0).max(100).optional().describe("Tax rate % / IVA %"),
|
|
131
137
|
},
|
|
138
|
+
outputSchema: invoiceItemOutput,
|
|
132
139
|
}, async ({ id, ...data }) => {
|
|
133
140
|
try {
|
|
134
141
|
const result = await client.updateInvoice(id, data);
|
|
135
142
|
return {
|
|
136
|
-
content: [
|
|
143
|
+
content: [mutateContent(formatRecord("Invoice updated", result))],
|
|
144
|
+
structuredContent: result,
|
|
137
145
|
};
|
|
138
146
|
}
|
|
139
147
|
catch (error) {
|
|
@@ -149,11 +157,13 @@ export function registerInvoiceTools(server, client) {
|
|
|
149
157
|
inputSchema: {
|
|
150
158
|
id: z.string().describe("Invoice ID / ID de la factura"),
|
|
151
159
|
},
|
|
160
|
+
outputSchema: deleteResultOutput,
|
|
152
161
|
}, async ({ id }) => {
|
|
153
162
|
try {
|
|
154
163
|
await client.deleteInvoice(id);
|
|
155
164
|
return {
|
|
156
|
-
content: [
|
|
165
|
+
content: [mutateContent(`Invoice ${id} deleted successfully. / Factura ${id} eliminada correctamente.`)],
|
|
166
|
+
structuredContent: { success: true, id },
|
|
157
167
|
};
|
|
158
168
|
}
|
|
159
169
|
catch (error) {
|
|
@@ -171,16 +181,15 @@ export function registerInvoiceTools(server, client) {
|
|
|
171
181
|
limit: z.number().int().min(1).max(100).optional().describe("Max results / Resultados maximos"),
|
|
172
182
|
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
173
183
|
},
|
|
184
|
+
outputSchema: paginatedOutput(invoiceItemOutput),
|
|
174
185
|
}, async ({ clientName, limit, offset }) => {
|
|
175
186
|
try {
|
|
176
187
|
const result = await client.searchInvoices(clientName, { limit, offset });
|
|
177
188
|
return {
|
|
178
189
|
content: [
|
|
179
|
-
{
|
|
180
|
-
type: "text",
|
|
181
|
-
text: formatPaginatedResponse(`invoices matching "${clientName}"`, result),
|
|
182
|
-
},
|
|
190
|
+
listContent(formatPaginatedResponse(`invoices matching "${clientName}"`, result)),
|
|
183
191
|
],
|
|
192
|
+
structuredContent: result,
|
|
184
193
|
};
|
|
185
194
|
}
|
|
186
195
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAoKnF"}
|
package/dist/tools/products.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Product tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
|
-
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, listContent, getContent, mutateContent, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS, paginatedOutput, deleteResultOutput, productItemOutput } from "./shared.js";
|
|
6
6
|
export function registerProductTools(server, client) {
|
|
7
7
|
// -- list_products --
|
|
8
8
|
server.registerTool("list_products", {
|
|
@@ -16,11 +16,13 @@ export function registerProductTools(server, client) {
|
|
|
16
16
|
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
|
|
17
17
|
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
18
18
|
},
|
|
19
|
+
outputSchema: paginatedOutput(productItemOutput),
|
|
19
20
|
}, async ({ limit, offset }) => {
|
|
20
21
|
try {
|
|
21
22
|
const result = await client.listProducts({ limit, offset });
|
|
22
23
|
return {
|
|
23
|
-
content: [
|
|
24
|
+
content: [listContent(formatPaginatedResponse("products", result))],
|
|
25
|
+
structuredContent: result,
|
|
24
26
|
};
|
|
25
27
|
}
|
|
26
28
|
catch (error) {
|
|
@@ -36,11 +38,13 @@ export function registerProductTools(server, client) {
|
|
|
36
38
|
inputSchema: {
|
|
37
39
|
id: z.string().describe("Product ID / ID del producto"),
|
|
38
40
|
},
|
|
41
|
+
outputSchema: productItemOutput,
|
|
39
42
|
}, async ({ id }) => {
|
|
40
43
|
try {
|
|
41
44
|
const result = await client.getProduct(id);
|
|
42
45
|
return {
|
|
43
|
-
content: [
|
|
46
|
+
content: [getContent(formatRecord("Product", result))],
|
|
47
|
+
structuredContent: result,
|
|
44
48
|
};
|
|
45
49
|
}
|
|
46
50
|
catch (error) {
|
|
@@ -71,11 +75,13 @@ export function registerProductTools(server, client) {
|
|
|
71
75
|
.describe("Default tax rate % (e.g. 21 for 21% IVA) / IVA por defecto"),
|
|
72
76
|
sku: z.string().optional().describe("SKU / Reference code / Codigo de referencia"),
|
|
73
77
|
},
|
|
78
|
+
outputSchema: productItemOutput,
|
|
74
79
|
}, async (input) => {
|
|
75
80
|
try {
|
|
76
81
|
const result = await client.createProduct(input);
|
|
77
82
|
return {
|
|
78
|
-
content: [
|
|
83
|
+
content: [mutateContent(formatRecord("Product created", result))],
|
|
84
|
+
structuredContent: result,
|
|
79
85
|
};
|
|
80
86
|
}
|
|
81
87
|
catch (error) {
|
|
@@ -97,11 +103,13 @@ export function registerProductTools(server, client) {
|
|
|
97
103
|
taxRate: z.number().min(0).max(100).optional().describe("Tax rate % / IVA %"),
|
|
98
104
|
sku: z.string().optional().describe("SKU / Referencia"),
|
|
99
105
|
},
|
|
106
|
+
outputSchema: productItemOutput,
|
|
100
107
|
}, async ({ id, ...data }) => {
|
|
101
108
|
try {
|
|
102
109
|
const result = await client.updateProduct(id, data);
|
|
103
110
|
return {
|
|
104
|
-
content: [
|
|
111
|
+
content: [mutateContent(formatRecord("Product updated", result))],
|
|
112
|
+
structuredContent: result,
|
|
105
113
|
};
|
|
106
114
|
}
|
|
107
115
|
catch (error) {
|
|
@@ -117,11 +125,13 @@ export function registerProductTools(server, client) {
|
|
|
117
125
|
inputSchema: {
|
|
118
126
|
id: z.string().describe("Product ID / ID del producto"),
|
|
119
127
|
},
|
|
128
|
+
outputSchema: deleteResultOutput,
|
|
120
129
|
}, async ({ id }) => {
|
|
121
130
|
try {
|
|
122
131
|
await client.deleteProduct(id);
|
|
123
132
|
return {
|
|
124
|
-
content: [
|
|
133
|
+
content: [mutateContent(`Product ${id} deleted successfully. / Producto ${id} eliminado correctamente.`)],
|
|
134
|
+
structuredContent: { success: true, id },
|
|
125
135
|
};
|
|
126
136
|
}
|
|
127
137
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quotes.d.ts","sourceRoot":"","sources":["../../src/tools/quotes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAS5D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"quotes.d.ts","sourceRoot":"","sources":["../../src/tools/quotes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAS5D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAsKjF"}
|
package/dist/tools/quotes.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Quote tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
|
-
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, listContent, getContent, mutateContent, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS, paginatedOutput, deleteResultOutput, quoteItemOutput } from "./shared.js";
|
|
6
6
|
const quoteItemSchema = z.object({
|
|
7
7
|
description: z.string().describe("Description of the line item / Descripcion del concepto"),
|
|
8
8
|
quantity: z.number().describe("Quantity / Cantidad"),
|
|
@@ -21,11 +21,13 @@ export function registerQuoteTools(server, client) {
|
|
|
21
21
|
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
|
|
22
22
|
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
23
23
|
},
|
|
24
|
+
outputSchema: paginatedOutput(quoteItemOutput),
|
|
24
25
|
}, async ({ limit, offset }) => {
|
|
25
26
|
try {
|
|
26
27
|
const result = await client.listQuotes({ limit, offset });
|
|
27
28
|
return {
|
|
28
|
-
content: [
|
|
29
|
+
content: [listContent(formatPaginatedResponse("quotes", result))],
|
|
30
|
+
structuredContent: result,
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
catch (error) {
|
|
@@ -41,11 +43,13 @@ export function registerQuoteTools(server, client) {
|
|
|
41
43
|
inputSchema: {
|
|
42
44
|
id: z.string().describe("Quote ID / ID del presupuesto"),
|
|
43
45
|
},
|
|
46
|
+
outputSchema: quoteItemOutput,
|
|
44
47
|
}, async ({ id }) => {
|
|
45
48
|
try {
|
|
46
49
|
const result = await client.getQuote(id);
|
|
47
50
|
return {
|
|
48
|
-
content: [
|
|
51
|
+
content: [getContent(formatRecord("Quote", result))],
|
|
52
|
+
structuredContent: result,
|
|
49
53
|
};
|
|
50
54
|
}
|
|
51
55
|
catch (error) {
|
|
@@ -76,11 +80,13 @@ export function registerQuoteTools(server, client) {
|
|
|
76
80
|
.optional()
|
|
77
81
|
.describe("Quote status (default: draft) / Estado del presupuesto"),
|
|
78
82
|
},
|
|
83
|
+
outputSchema: quoteItemOutput,
|
|
79
84
|
}, async (input) => {
|
|
80
85
|
try {
|
|
81
86
|
const result = await client.createQuote(input);
|
|
82
87
|
return {
|
|
83
|
-
content: [
|
|
88
|
+
content: [mutateContent(formatRecord("Quote created", result))],
|
|
89
|
+
structuredContent: result,
|
|
84
90
|
};
|
|
85
91
|
}
|
|
86
92
|
catch (error) {
|
|
@@ -104,11 +110,13 @@ export function registerQuoteTools(server, client) {
|
|
|
104
110
|
.optional()
|
|
105
111
|
.describe("Status / Estado"),
|
|
106
112
|
},
|
|
113
|
+
outputSchema: quoteItemOutput,
|
|
107
114
|
}, async ({ id, ...data }) => {
|
|
108
115
|
try {
|
|
109
116
|
const result = await client.updateQuote(id, data);
|
|
110
117
|
return {
|
|
111
|
-
content: [
|
|
118
|
+
content: [mutateContent(formatRecord("Quote updated", result))],
|
|
119
|
+
structuredContent: result,
|
|
112
120
|
};
|
|
113
121
|
}
|
|
114
122
|
catch (error) {
|
|
@@ -124,11 +132,13 @@ export function registerQuoteTools(server, client) {
|
|
|
124
132
|
inputSchema: {
|
|
125
133
|
id: z.string().describe("Quote ID / ID del presupuesto"),
|
|
126
134
|
},
|
|
135
|
+
outputSchema: deleteResultOutput,
|
|
127
136
|
}, async ({ id }) => {
|
|
128
137
|
try {
|
|
129
138
|
await client.deleteQuote(id);
|
|
130
139
|
return {
|
|
131
|
-
content: [
|
|
140
|
+
content: [mutateContent(`Quote ${id} deleted successfully. / Presupuesto ${id} eliminado correctamente.`)],
|
|
141
|
+
structuredContent: { success: true, id },
|
|
132
142
|
};
|
|
133
143
|
}
|
|
134
144
|
catch (error) {
|
package/dist/tools/quotes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quotes.js","sourceRoot":"","sources":["../../src/tools/quotes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"quotes.js","sourceRoot":"","sources":["../../src/tools/quotes.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/shared.d.ts
CHANGED
|
@@ -6,21 +6,32 @@
|
|
|
6
6
|
* detection uses duck-typing (checking for `statusCode`/`errorCode` properties)
|
|
7
7
|
* so it works regardless of which FrihetApiError class threw the error.
|
|
8
8
|
*/
|
|
9
|
-
import type { ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
|
|
9
|
+
import type { ToolAnnotations, Annotations } from "@modelcontextprotocol/sdk/types.js";
|
|
10
|
+
import { z } from "zod/v4";
|
|
10
11
|
import type { PaginatedResponse } from "../types.js";
|
|
11
12
|
export declare const READ_ONLY_ANNOTATIONS: ToolAnnotations;
|
|
12
13
|
export declare const CREATE_ANNOTATIONS: ToolAnnotations;
|
|
13
14
|
export declare const UPDATE_ANNOTATIONS: ToolAnnotations;
|
|
14
15
|
export declare const DELETE_ANNOTATIONS: ToolAnnotations;
|
|
16
|
+
/** List operations: useful to both user and assistant for navigation, medium priority. */
|
|
17
|
+
export declare const LIST_CONTENT_ANNOTATIONS: Annotations;
|
|
18
|
+
/** Get/read operations: useful to both, higher priority as specifically requested data. */
|
|
19
|
+
export declare const GET_CONTENT_ANNOTATIONS: Annotations;
|
|
20
|
+
/** Mutating operations (create/update/delete): primarily for the user, highest priority. */
|
|
21
|
+
export declare const MUTATE_CONTENT_ANNOTATIONS: Annotations;
|
|
22
|
+
/** Error responses: always high priority, always for the user. */
|
|
23
|
+
export declare const ERROR_CONTENT_ANNOTATIONS: Annotations;
|
|
24
|
+
export interface AnnotatedTextContent {
|
|
25
|
+
type: "text";
|
|
26
|
+
text: string;
|
|
27
|
+
annotations?: Annotations;
|
|
28
|
+
}
|
|
15
29
|
export declare function truncateResponse(text: string): string;
|
|
16
30
|
/**
|
|
17
|
-
* Maps an error to a user-friendly MCP tool response.
|
|
31
|
+
* Maps an error to a user-friendly MCP tool response with error annotations.
|
|
18
32
|
*/
|
|
19
33
|
export declare function handleToolError(error: unknown): {
|
|
20
|
-
content:
|
|
21
|
-
type: "text";
|
|
22
|
-
text: string;
|
|
23
|
-
}>;
|
|
34
|
+
content: AnnotatedTextContent[];
|
|
24
35
|
isError: true;
|
|
25
36
|
};
|
|
26
37
|
/**
|
|
@@ -31,4 +42,107 @@ export declare function formatPaginatedResponse(resourceName: string, response:
|
|
|
31
42
|
* Formats a single record for display.
|
|
32
43
|
*/
|
|
33
44
|
export declare function formatRecord(label: string, record: Record<string, unknown>): string;
|
|
45
|
+
/**
|
|
46
|
+
* Builds an annotated content block for list/search responses.
|
|
47
|
+
*/
|
|
48
|
+
export declare function listContent(text: string): AnnotatedTextContent;
|
|
49
|
+
/**
|
|
50
|
+
* Builds an annotated content block for get/read responses.
|
|
51
|
+
*/
|
|
52
|
+
export declare function getContent(text: string): AnnotatedTextContent;
|
|
53
|
+
/**
|
|
54
|
+
* Builds an annotated content block for create/update/delete responses.
|
|
55
|
+
*/
|
|
56
|
+
export declare function mutateContent(text: string): AnnotatedTextContent;
|
|
57
|
+
/**
|
|
58
|
+
* Wraps an item schema in a paginated envelope for list/search tools.
|
|
59
|
+
*/
|
|
60
|
+
export declare function paginatedOutput<T extends z.ZodType>(itemSchema: T): z.ZodObject<{
|
|
61
|
+
data: z.ZodArray<T>;
|
|
62
|
+
total: z.ZodNumber;
|
|
63
|
+
limit: z.ZodNumber;
|
|
64
|
+
offset: z.ZodNumber;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
/** Schema for delete operation results. */
|
|
67
|
+
export declare const deleteResultOutput: z.ZodObject<{
|
|
68
|
+
success: z.ZodBoolean;
|
|
69
|
+
id: z.ZodString;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export declare const invoiceItemOutput: z.ZodObject<{
|
|
72
|
+
id: z.ZodString;
|
|
73
|
+
clientName: z.ZodString;
|
|
74
|
+
items: z.ZodArray<z.ZodObject<{
|
|
75
|
+
description: z.ZodString;
|
|
76
|
+
quantity: z.ZodNumber;
|
|
77
|
+
unitPrice: z.ZodNumber;
|
|
78
|
+
}, z.core.$strip>>;
|
|
79
|
+
status: z.ZodOptional<z.ZodString>;
|
|
80
|
+
dueDate: z.ZodOptional<z.ZodString>;
|
|
81
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
82
|
+
taxRate: z.ZodOptional<z.ZodNumber>;
|
|
83
|
+
total: z.ZodOptional<z.ZodNumber>;
|
|
84
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
85
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
86
|
+
}, z.core.$loose>;
|
|
87
|
+
export declare const expenseItemOutput: z.ZodObject<{
|
|
88
|
+
id: z.ZodString;
|
|
89
|
+
description: z.ZodString;
|
|
90
|
+
amount: z.ZodNumber;
|
|
91
|
+
category: z.ZodOptional<z.ZodString>;
|
|
92
|
+
date: z.ZodOptional<z.ZodString>;
|
|
93
|
+
vendor: z.ZodOptional<z.ZodString>;
|
|
94
|
+
taxDeductible: z.ZodOptional<z.ZodBoolean>;
|
|
95
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
96
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
97
|
+
}, z.core.$loose>;
|
|
98
|
+
export declare const clientItemOutput: z.ZodObject<{
|
|
99
|
+
id: z.ZodString;
|
|
100
|
+
name: z.ZodString;
|
|
101
|
+
email: z.ZodOptional<z.ZodString>;
|
|
102
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
103
|
+
taxId: z.ZodOptional<z.ZodString>;
|
|
104
|
+
address: z.ZodOptional<z.ZodObject<{
|
|
105
|
+
street: z.ZodOptional<z.ZodString>;
|
|
106
|
+
city: z.ZodOptional<z.ZodString>;
|
|
107
|
+
postalCode: z.ZodOptional<z.ZodString>;
|
|
108
|
+
country: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}, z.core.$strip>>;
|
|
110
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
111
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
112
|
+
}, z.core.$loose>;
|
|
113
|
+
export declare const productItemOutput: z.ZodObject<{
|
|
114
|
+
id: z.ZodString;
|
|
115
|
+
name: z.ZodString;
|
|
116
|
+
unitPrice: z.ZodNumber;
|
|
117
|
+
description: z.ZodOptional<z.ZodString>;
|
|
118
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
119
|
+
taxRate: z.ZodOptional<z.ZodNumber>;
|
|
120
|
+
sku: z.ZodOptional<z.ZodString>;
|
|
121
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
122
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
123
|
+
}, z.core.$loose>;
|
|
124
|
+
export declare const quoteItemOutput: z.ZodObject<{
|
|
125
|
+
id: z.ZodString;
|
|
126
|
+
clientName: z.ZodString;
|
|
127
|
+
items: z.ZodArray<z.ZodObject<{
|
|
128
|
+
description: z.ZodString;
|
|
129
|
+
quantity: z.ZodNumber;
|
|
130
|
+
unitPrice: z.ZodNumber;
|
|
131
|
+
}, z.core.$strip>>;
|
|
132
|
+
validUntil: z.ZodOptional<z.ZodString>;
|
|
133
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
134
|
+
status: z.ZodOptional<z.ZodString>;
|
|
135
|
+
total: z.ZodOptional<z.ZodNumber>;
|
|
136
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
137
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
138
|
+
}, z.core.$loose>;
|
|
139
|
+
export declare const webhookItemOutput: z.ZodObject<{
|
|
140
|
+
id: z.ZodString;
|
|
141
|
+
url: z.ZodString;
|
|
142
|
+
events: z.ZodArray<z.ZodString>;
|
|
143
|
+
active: z.ZodOptional<z.ZodBoolean>;
|
|
144
|
+
secret: z.ZodOptional<z.ZodString>;
|
|
145
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
146
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
147
|
+
}, z.core.$loose>;
|
|
34
148
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMrD,eAAO,MAAM,qBAAqB,EAAE,eAAqH,CAAC;AAC1J,eAAO,MAAM,kBAAkB,EAAE,eAAuH,CAAC;AACzJ,eAAO,MAAM,kBAAkB,EAAE,eAAsH,CAAC;AACxJ,eAAO,MAAM,kBAAkB,EAAE,eAAqH,CAAC;AAMvJ,0FAA0F;AAC1F,eAAO,MAAM,wBAAwB,EAAE,WAG7B,CAAC;AAEX,2FAA2F;AAC3F,eAAO,MAAM,uBAAuB,EAAE,WAG5B,CAAC;AAEX,4FAA4F;AAC5F,eAAO,MAAM,0BAA0B,EAAE,WAG/B,CAAC;AAEX,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,EAAE,WAG9B,CAAC;AAMX,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAQD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAmBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG;IAC/C,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,OAAO,EAAE,IAAI,CAAC;CACf,CAsCA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnD,MAAM,CAkBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAE9D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAE7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAEhE;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;;;;;kBAOjE;AAED,2CAA2C;AAC3C,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAUH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;iBAWd,CAAC;AAEjB,eAAO,MAAM,iBAAiB;;;;;;;;;;iBAUd,CAAC;AASjB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;iBASb,CAAC;AAEjB,eAAO,MAAM,iBAAiB;;;;;;;;;;iBAUd,CAAC;AAEjB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;iBAUZ,CAAC;AAEjB,eAAO,MAAM,iBAAiB;;;;;;;;iBAQd,CAAC"}
|