@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.
@@ -6,6 +6,7 @@
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 { z } from "zod/v4";
9
10
  /* ------------------------------------------------------------------ */
10
11
  /* Safety annotations for MCP tool registrations */
11
12
  /* ------------------------------------------------------------------ */
@@ -14,6 +15,29 @@ export const CREATE_ANNOTATIONS = { readOnlyHint: false, destructiveHint: false,
14
15
  export const UPDATE_ANNOTATIONS = { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false };
15
16
  export const DELETE_ANNOTATIONS = { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false };
16
17
  /* ------------------------------------------------------------------ */
18
+ /* Content annotations for tool responses */
19
+ /* ------------------------------------------------------------------ */
20
+ /** List operations: useful to both user and assistant for navigation, medium priority. */
21
+ export const LIST_CONTENT_ANNOTATIONS = {
22
+ audience: ["user", "assistant"],
23
+ priority: 0.5,
24
+ };
25
+ /** Get/read operations: useful to both, higher priority as specifically requested data. */
26
+ export const GET_CONTENT_ANNOTATIONS = {
27
+ audience: ["user", "assistant"],
28
+ priority: 0.7,
29
+ };
30
+ /** Mutating operations (create/update/delete): primarily for the user, highest priority. */
31
+ export const MUTATE_CONTENT_ANNOTATIONS = {
32
+ audience: ["user"],
33
+ priority: 1.0,
34
+ };
35
+ /** Error responses: always high priority, always for the user. */
36
+ export const ERROR_CONTENT_ANNOTATIONS = {
37
+ audience: ["user"],
38
+ priority: 1.0,
39
+ };
40
+ /* ------------------------------------------------------------------ */
17
41
  /* Response size guard */
18
42
  /* ------------------------------------------------------------------ */
19
43
  const MAX_RESPONSE_CHARS = 80_000; // ~20,000 tokens safety margin
@@ -31,10 +55,12 @@ function isFrihetApiError(error) {
31
55
  typeof error.statusCode === "number");
32
56
  }
33
57
  /**
34
- * Maps an error to a user-friendly MCP tool response.
58
+ * Maps an error to a user-friendly MCP tool response with error annotations.
35
59
  */
36
60
  export function handleToolError(error) {
37
61
  if (isFrihetApiError(error)) {
62
+ // Log raw error details to stderr for debugging — never expose to LLM
63
+ console.error(`[Frihet API Error] ${error.statusCode} ${error.errorCode}: ${error.message}`);
38
64
  const messages = {
39
65
  400: "Bad request. Check your input parameters. / Solicitud incorrecta. Revisa los parametros.",
40
66
  401: "Authentication failed. Check your API key. / Autenticacion fallida. Revisa tu API key.",
@@ -45,20 +71,22 @@ export function handleToolError(error) {
45
71
  429: "Rate limit exceeded. Try again later. / Limite de peticiones excedido. Intenta mas tarde.",
46
72
  500: "Internal server error. Try again later. / Error interno del servidor.",
47
73
  };
48
- const friendlyMessage = messages[error.statusCode] ?? `API error ${error.statusCode}: ${error.message}`;
74
+ const friendlyMessage = messages[error.statusCode] ?? `API error ${error.statusCode}. Contact support if this persists.`;
49
75
  return {
50
76
  content: [
51
77
  {
52
78
  type: "text",
53
- text: `Error: ${friendlyMessage}${error.message ? `\nDetails: ${error.message}` : ""}`,
79
+ text: `Error: ${friendlyMessage}`,
80
+ annotations: ERROR_CONTENT_ANNOTATIONS,
54
81
  },
55
82
  ],
56
83
  isError: true,
57
84
  };
58
85
  }
59
- const message = error instanceof Error ? error.message : "An unexpected error occurred.";
86
+ // Log raw error to stderr for debugging return generic message to LLM
87
+ console.error("[Frihet MCP Error]", error instanceof Error ? error.stack ?? error.message : error);
60
88
  return {
61
- content: [{ type: "text", text: `Error: ${message}` }],
89
+ content: [{ type: "text", text: "Error: An unexpected error occurred. Contact support if this persists.", annotations: ERROR_CONTENT_ANNOTATIONS }],
62
90
  isError: true,
63
91
  };
64
92
  }
@@ -85,4 +113,117 @@ export function formatPaginatedResponse(resourceName, response) {
85
113
  export function formatRecord(label, record) {
86
114
  return truncateResponse(`${label}:\n${JSON.stringify(record, null, 2)}`);
87
115
  }
116
+ /**
117
+ * Builds an annotated content block for list/search responses.
118
+ */
119
+ export function listContent(text) {
120
+ return { type: "text", text, annotations: LIST_CONTENT_ANNOTATIONS };
121
+ }
122
+ /**
123
+ * Builds an annotated content block for get/read responses.
124
+ */
125
+ export function getContent(text) {
126
+ return { type: "text", text, annotations: GET_CONTENT_ANNOTATIONS };
127
+ }
128
+ /**
129
+ * Builds an annotated content block for create/update/delete responses.
130
+ */
131
+ export function mutateContent(text) {
132
+ return { type: "text", text, annotations: MUTATE_CONTENT_ANNOTATIONS };
133
+ }
134
+ /* ------------------------------------------------------------------ */
135
+ /* Output schemas (MCP spec 2025-11-25: outputSchema + structuredContent) */
136
+ /* ------------------------------------------------------------------ */
137
+ /**
138
+ * Wraps an item schema in a paginated envelope for list/search tools.
139
+ */
140
+ export function paginatedOutput(itemSchema) {
141
+ return z.object({
142
+ data: z.array(itemSchema),
143
+ total: z.number(),
144
+ limit: z.number(),
145
+ offset: z.number(),
146
+ });
147
+ }
148
+ /** Schema for delete operation results. */
149
+ export const deleteResultOutput = z.object({
150
+ success: z.boolean(),
151
+ id: z.string(),
152
+ });
153
+ /* --- Per-resource item schemas ------------------------------------ */
154
+ const lineItemSchema = z.object({
155
+ description: z.string(),
156
+ quantity: z.number(),
157
+ unitPrice: z.number(),
158
+ });
159
+ export const invoiceItemOutput = z.object({
160
+ id: z.string(),
161
+ clientName: z.string(),
162
+ items: z.array(lineItemSchema),
163
+ status: z.string().optional(),
164
+ dueDate: z.string().optional(),
165
+ notes: z.string().optional(),
166
+ taxRate: z.number().optional(),
167
+ total: z.number().optional(),
168
+ createdAt: z.string().optional(),
169
+ updatedAt: z.string().optional(),
170
+ }).passthrough();
171
+ export const expenseItemOutput = z.object({
172
+ id: z.string(),
173
+ description: z.string(),
174
+ amount: z.number(),
175
+ category: z.string().optional(),
176
+ date: z.string().optional(),
177
+ vendor: z.string().optional(),
178
+ taxDeductible: z.boolean().optional(),
179
+ createdAt: z.string().optional(),
180
+ updatedAt: z.string().optional(),
181
+ }).passthrough();
182
+ const addressOutputSchema = z.object({
183
+ street: z.string().optional(),
184
+ city: z.string().optional(),
185
+ postalCode: z.string().optional(),
186
+ country: z.string().optional(),
187
+ }).optional();
188
+ export const clientItemOutput = z.object({
189
+ id: z.string(),
190
+ name: z.string(),
191
+ email: z.string().optional(),
192
+ phone: z.string().optional(),
193
+ taxId: z.string().optional(),
194
+ address: addressOutputSchema,
195
+ createdAt: z.string().optional(),
196
+ updatedAt: z.string().optional(),
197
+ }).passthrough();
198
+ export const productItemOutput = z.object({
199
+ id: z.string(),
200
+ name: z.string(),
201
+ unitPrice: z.number(),
202
+ description: z.string().optional(),
203
+ unit: z.string().optional(),
204
+ taxRate: z.number().optional(),
205
+ sku: z.string().optional(),
206
+ createdAt: z.string().optional(),
207
+ updatedAt: z.string().optional(),
208
+ }).passthrough();
209
+ export const quoteItemOutput = z.object({
210
+ id: z.string(),
211
+ clientName: z.string(),
212
+ items: z.array(lineItemSchema),
213
+ validUntil: z.string().optional(),
214
+ notes: z.string().optional(),
215
+ status: z.string().optional(),
216
+ total: z.number().optional(),
217
+ createdAt: z.string().optional(),
218
+ updatedAt: z.string().optional(),
219
+ }).passthrough();
220
+ export const webhookItemOutput = z.object({
221
+ id: z.string(),
222
+ url: z.string(),
223
+ events: z.array(z.string()),
224
+ active: z.boolean().optional(),
225
+ secret: z.string().optional(),
226
+ createdAt: z.string().optional(),
227
+ updatedAt: z.string().optional(),
228
+ }).passthrough();
88
229
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAoB,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAW,CAAC;AAC1J,MAAM,CAAC,MAAM,kBAAkB,GAAoB,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAW,CAAC;AACzJ,MAAM,CAAC,MAAM,kBAAkB,GAAoB,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAW,CAAC;AACxJ,MAAM,CAAC,MAAM,kBAAkB,GAAoB,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAW,CAAC;AAEvJ,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,0FAA0F;AAC1F,MAAM,CAAC,MAAM,wBAAwB,GAAgB;IACnD,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC/B,QAAQ,EAAE,GAAG;CACL,CAAC;AAEX,2FAA2F;AAC3F,MAAM,CAAC,MAAM,uBAAuB,GAAgB;IAClD,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC/B,QAAQ,EAAE,GAAG;CACL,CAAC;AAEX,4FAA4F;AAC5F,MAAM,CAAC,MAAM,0BAA0B,GAAgB;IACrD,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE,GAAG;CACL,CAAC;AAEX,kEAAkE;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAgB;IACpD,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE,GAAG;CACL,CAAC;AAYX,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,+BAA+B;AAElE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;QACtC,0FAA0F,CAAC;AAC/F,CAAC;AASD,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,YAAY,IAAI,KAAK;QACrB,WAAW,IAAI,KAAK;QACpB,OAAQ,KAA4B,CAAC,UAAU,KAAK,QAAQ,CAC7D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAI5C,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,sEAAsE;QACtE,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7F,MAAM,QAAQ,GAA2B;YACvC,GAAG,EAAE,0FAA0F;YAC/F,GAAG,EAAE,wFAAwF;YAC7F,GAAG,EAAE,0FAA0F;YAC/F,GAAG,EAAE,8CAA8C;YACnD,GAAG,EAAE,4CAA4C;YACjD,GAAG,EAAE,wFAAwF;YAC7F,GAAG,EAAE,2FAA2F;YAChG,GAAG,EAAE,uEAAuE;SAC7E,CAAC;QAEF,MAAM,eAAe,GACnB,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,aAAa,KAAK,CAAC,UAAU,qCAAqC,CAAC;QAEnG,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,eAAe,EAAE;oBACjC,WAAW,EAAE,yBAAyB;iBACvC;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEnG,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wEAAwE,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;QACnJ,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,YAAoB,EACpB,QAAoD;IAEpD,MAAM,KAAK,GAAa;QACtB,SAAS,QAAQ,CAAC,KAAK,IAAI,YAAY,aAAa,QAAQ,CAAC,IAAI,CAAC,MAAM,YAAY,QAAQ,CAAC,MAAM,IAAI;QACvG,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CACR,sCAAsC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,wBAAwB,CACrG,CAAC;IACJ,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,MAA+B;IAE/B,OAAO,gBAAgB,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;AACzE,CAAC;AAED,wEAAwE;AACxE,6EAA6E;AAC7E,wEAAwE;AAExE;;GAEG;AACH,MAAM,UAAU,eAAe,CAAsB,UAAa;IAChE,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC,CAAC;AACL,CAAC;AAED,2CAA2C;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAEH,wEAAwE;AAExE,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,WAAW,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.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,CA0JnF"}
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.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"}
@@ -2,7 +2,7 @@
2
2
  * Webhook management 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, webhookItemOutput } from "./shared.js";
6
6
  export function registerWebhookTools(server, client) {
7
7
  // -- list_webhooks --
8
8
  server.registerTool("list_webhooks", {
@@ -14,11 +14,13 @@ export function registerWebhookTools(server, client) {
14
14
  limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
15
15
  offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
16
16
  },
17
+ outputSchema: paginatedOutput(webhookItemOutput),
17
18
  }, async ({ limit, offset }) => {
18
19
  try {
19
20
  const result = await client.listWebhooks({ limit, offset });
20
21
  return {
21
- content: [{ type: "text", text: formatPaginatedResponse("webhooks", result) }],
22
+ content: [listContent(formatPaginatedResponse("webhooks", result))],
23
+ structuredContent: result,
22
24
  };
23
25
  }
24
26
  catch (error) {
@@ -34,11 +36,13 @@ export function registerWebhookTools(server, client) {
34
36
  inputSchema: {
35
37
  id: z.string().describe("Webhook ID / ID del webhook"),
36
38
  },
39
+ outputSchema: webhookItemOutput,
37
40
  }, async ({ id }) => {
38
41
  try {
39
42
  const result = await client.getWebhook(id);
40
43
  return {
41
- content: [{ type: "text", text: formatRecord("Webhook", result) }],
44
+ content: [getContent(formatRecord("Webhook", result))],
45
+ structuredContent: result,
42
46
  };
43
47
  }
44
48
  catch (error) {
@@ -69,11 +73,13 @@ export function registerWebhookTools(server, client) {
69
73
  .optional()
70
74
  .describe("Signing secret for payload verification / Secreto para verificar las notificaciones"),
71
75
  },
76
+ outputSchema: webhookItemOutput,
72
77
  }, async (input) => {
73
78
  try {
74
79
  const result = await client.createWebhook(input);
75
80
  return {
76
- content: [{ type: "text", text: formatRecord("Webhook created", result) }],
81
+ content: [mutateContent(formatRecord("Webhook created", result))],
82
+ structuredContent: result,
77
83
  };
78
84
  }
79
85
  catch (error) {
@@ -93,11 +99,13 @@ export function registerWebhookTools(server, client) {
93
99
  active: z.boolean().optional().describe("Active / Activo"),
94
100
  secret: z.string().optional().describe("Signing secret / Secreto"),
95
101
  },
102
+ outputSchema: webhookItemOutput,
96
103
  }, async ({ id, ...data }) => {
97
104
  try {
98
105
  const result = await client.updateWebhook(id, data);
99
106
  return {
100
- content: [{ type: "text", text: formatRecord("Webhook updated", result) }],
107
+ content: [mutateContent(formatRecord("Webhook updated", result))],
108
+ structuredContent: result,
101
109
  };
102
110
  }
103
111
  catch (error) {
@@ -113,11 +121,13 @@ export function registerWebhookTools(server, client) {
113
121
  inputSchema: {
114
122
  id: z.string().describe("Webhook ID / ID del webhook"),
115
123
  },
124
+ outputSchema: deleteResultOutput,
116
125
  }, async ({ id }) => {
117
126
  try {
118
127
  await client.deleteWebhook(id);
119
128
  return {
120
- content: [{ type: "text", text: `Webhook ${id} deleted successfully. / Webhook ${id} eliminado correctamente.` }],
129
+ content: [mutateContent(`Webhook ${id} deleted successfully. / Webhook ${id} eliminado correctamente.`)],
130
+ structuredContent: { success: true, id },
121
131
  };
122
132
  }
123
133
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frihet/mcp-server",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "AI-native MCP server for business management — invoices, expenses, clients, products, quotes, webhooks. 31 tools. Works with Claude, Cursor, Windsurf, Cline.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -37,12 +37,12 @@
37
37
  "license": "MIT",
38
38
  "repository": {
39
39
  "type": "git",
40
- "url": "https://github.com/berthelius/frihet-mcp.git"
40
+ "url": "git+https://github.com/Frihet-io/frihet-mcp.git"
41
41
  },
42
42
  "mcpName": "io.github.berthelius/frihet",
43
- "homepage": "https://docs.frihet.io/desarrolladores/mcp-server",
43
+ "homepage": "https://github.com/Frihet-io/frihet-mcp#readme",
44
44
  "bugs": {
45
- "url": "https://github.com/berthelius/frihet-mcp/issues"
45
+ "url": "https://github.com/Frihet-io/frihet-mcp/issues"
46
46
  },
47
47
  "engines": {
48
48
  "node": ">=18"
@@ -53,7 +53,7 @@
53
53
  "LICENSE"
54
54
  ],
55
55
  "dependencies": {
56
- "@modelcontextprotocol/sdk": "^1.26.0"
56
+ "@modelcontextprotocol/sdk": "^1.27.0"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "zod": ">=3.25.0"