@frihet/mcp-server 1.0.0 → 1.1.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/README.md +55 -3
- package/dist/client-interface.d.ts +63 -0
- package/dist/client-interface.d.ts.map +1 -0
- package/dist/client-interface.js +9 -0
- package/dist/client-interface.js.map +1 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +21 -8
- package/dist/client.js.map +1 -1
- package/dist/index.js +3 -13
- package/dist/index.js.map +1 -1
- package/dist/tools/clients.d.ts +2 -2
- package/dist/tools/clients.d.ts.map +1 -1
- package/dist/tools/clients.js +6 -1
- package/dist/tools/clients.js.map +1 -1
- package/dist/tools/expenses.d.ts +2 -2
- package/dist/tools/expenses.d.ts.map +1 -1
- package/dist/tools/expenses.js +6 -1
- package/dist/tools/expenses.js.map +1 -1
- package/dist/tools/invoices.d.ts +2 -2
- package/dist/tools/invoices.d.ts.map +1 -1
- package/dist/tools/invoices.js +7 -1
- package/dist/tools/invoices.js.map +1 -1
- package/dist/tools/products.d.ts +2 -2
- package/dist/tools/products.d.ts.map +1 -1
- package/dist/tools/products.js +6 -1
- package/dist/tools/products.js.map +1 -1
- package/dist/tools/quotes.d.ts +2 -2
- package/dist/tools/quotes.d.ts.map +1 -1
- package/dist/tools/quotes.js +6 -1
- package/dist/tools/quotes.js.map +1 -1
- package/dist/tools/register-all.d.ts +10 -0
- package/dist/tools/register-all.d.ts.map +1 -0
- package/dist/tools/register-all.js +21 -0
- package/dist/tools/register-all.js.map +1 -0
- package/dist/tools/shared.d.ts +11 -0
- package/dist/tools/shared.d.ts.map +1 -1
- package/dist/tools/shared.js +32 -4
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/webhooks.d.ts +2 -2
- package/dist/tools/webhooks.d.ts.map +1 -1
- package/dist/tools/webhooks.js +6 -1
- package/dist/tools/webhooks.js.map +1 -1
- package/package.json +15 -4
package/README.md
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<strong>
|
|
7
|
-
<em>
|
|
6
|
+
<strong>AI-native MCP server for business management.</strong><br/>
|
|
7
|
+
<em>Servidor MCP nativo con IA para gestión empresarial.</em>
|
|
8
8
|
</p>
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
@@ -60,6 +60,26 @@ One line. Pick your tool.
|
|
|
60
60
|
|
|
61
61
|
The JSON config is identical for all tools. Only the file path changes.
|
|
62
62
|
|
|
63
|
+
### Remote (no install)
|
|
64
|
+
|
|
65
|
+
If you prefer not to install anything locally, use the hosted endpoint at `mcp.frihet.io`:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"mcpServers": {
|
|
70
|
+
"frihet": {
|
|
71
|
+
"type": "streamable-http",
|
|
72
|
+
"url": "https://mcp.frihet.io/mcp",
|
|
73
|
+
"headers": {
|
|
74
|
+
"Authorization": "Bearer fri_your_key_here"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Same 31 tools, zero local dependencies. Runs on Cloudflare Workers.
|
|
82
|
+
|
|
63
83
|
### Get your API key
|
|
64
84
|
|
|
65
85
|
1. Log into [app.frihet.io](https://app.frihet.io)
|
|
@@ -217,6 +237,37 @@ Rate limiting is handled automatically with exponential backoff. You don't need
|
|
|
217
237
|
|
|
218
238
|
---
|
|
219
239
|
|
|
240
|
+
## Claude Code Skill
|
|
241
|
+
|
|
242
|
+
Beyond raw MCP tools, Frihet ships a **Claude Code skill** that adds business intelligence: Spanish tax context, workflow recipes (monthly close, quarterly tax prep, overdue follow-up), formatted financial reports, and natural language commands.
|
|
243
|
+
|
|
244
|
+
### Install the skill
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# Clone and symlink
|
|
248
|
+
git clone https://github.com/berthelius/frihet-mcp.git
|
|
249
|
+
ln -s "$(pwd)/frihet-mcp/skill" ~/.claude/skills/frihet
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Commands
|
|
253
|
+
|
|
254
|
+
| Command | What it does |
|
|
255
|
+
|---------|-------------|
|
|
256
|
+
| `/frihet status` | Account overview, recent activity, pending payments |
|
|
257
|
+
| `/frihet invoice` | Create, list, search invoices |
|
|
258
|
+
| `/frihet expense` | Log and query expenses |
|
|
259
|
+
| `/frihet clients` | Manage client database |
|
|
260
|
+
| `/frihet quote` | Create and manage quotes |
|
|
261
|
+
| `/frihet report` | Financial summaries (P&L, quarterly, overdue) |
|
|
262
|
+
| `/frihet webhooks` | Configure automation triggers |
|
|
263
|
+
| `/frihet setup` | Guided setup and connection test |
|
|
264
|
+
|
|
265
|
+
The skill knows about IVA rates, IRPF retention, Modelo 303 prep, expense deductibility rules, and Verifactu compliance. It's your accountant in the terminal.
|
|
266
|
+
|
|
267
|
+
Full documentation: [docs.frihet.io/desarrolladores/skill-claude-code](https://docs.frihet.io/desarrolladores/skill-claude-code)
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
220
271
|
## Development
|
|
221
272
|
|
|
222
273
|
```bash
|
|
@@ -251,7 +302,7 @@ npx @modelcontextprotocol/inspector node dist/index.js
|
|
|
251
302
|
| AI assistant built-in | **Yes** | No | No | No | No |
|
|
252
303
|
| Open source tooling | **Yes** | No | No | No | No |
|
|
253
304
|
|
|
254
|
-
|
|
305
|
+
The first business management platform with an official MCP server. No other ERP has this.
|
|
255
306
|
|
|
256
307
|
---
|
|
257
308
|
|
|
@@ -260,6 +311,7 @@ No other Spanish ERP has an official MCP server. Frihet is first.
|
|
|
260
311
|
- [Frihet ERP](https://frihet.io) -- The product
|
|
261
312
|
- [API documentation](https://docs.frihet.io/desarrolladores/api-rest) -- REST API reference
|
|
262
313
|
- [Webhook documentation](https://docs.frihet.io/desarrolladores/webhooks) -- Events, signatures, retries
|
|
314
|
+
- [Remote endpoint](https://mcp.frihet.io) -- Hosted MCP server (Cloudflare Workers)
|
|
263
315
|
- [MCP specification](https://modelcontextprotocol.io) -- The protocol
|
|
264
316
|
|
|
265
317
|
---
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared interface for the Frihet ERP API client.
|
|
3
|
+
*
|
|
4
|
+
* Both the local (Node.js) and remote (Cloudflare Workers) FrihetClient
|
|
5
|
+
* classes satisfy this interface via structural typing. Tool registration
|
|
6
|
+
* functions depend on this interface so they can work with either client.
|
|
7
|
+
*/
|
|
8
|
+
import type { PaginatedResponse } from "./types.js";
|
|
9
|
+
export interface IFrihetClient {
|
|
10
|
+
listInvoices(params?: {
|
|
11
|
+
limit?: number;
|
|
12
|
+
offset?: number;
|
|
13
|
+
}): Promise<PaginatedResponse<Record<string, unknown>>>;
|
|
14
|
+
getInvoice(id: string): Promise<Record<string, unknown>>;
|
|
15
|
+
createInvoice(data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
16
|
+
updateInvoice(id: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
17
|
+
deleteInvoice(id: string): Promise<void>;
|
|
18
|
+
searchInvoices(clientName: string, params?: {
|
|
19
|
+
limit?: number;
|
|
20
|
+
offset?: number;
|
|
21
|
+
}): Promise<PaginatedResponse<Record<string, unknown>>>;
|
|
22
|
+
listExpenses(params?: {
|
|
23
|
+
limit?: number;
|
|
24
|
+
offset?: number;
|
|
25
|
+
}): Promise<PaginatedResponse<Record<string, unknown>>>;
|
|
26
|
+
getExpense(id: string): Promise<Record<string, unknown>>;
|
|
27
|
+
createExpense(data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
28
|
+
updateExpense(id: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
29
|
+
deleteExpense(id: string): Promise<void>;
|
|
30
|
+
listClients(params?: {
|
|
31
|
+
limit?: number;
|
|
32
|
+
offset?: number;
|
|
33
|
+
}): Promise<PaginatedResponse<Record<string, unknown>>>;
|
|
34
|
+
getClient(id: string): Promise<Record<string, unknown>>;
|
|
35
|
+
createClient(data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
36
|
+
updateClient(id: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
37
|
+
deleteClient(id: string): Promise<void>;
|
|
38
|
+
listProducts(params?: {
|
|
39
|
+
limit?: number;
|
|
40
|
+
offset?: number;
|
|
41
|
+
}): Promise<PaginatedResponse<Record<string, unknown>>>;
|
|
42
|
+
getProduct(id: string): Promise<Record<string, unknown>>;
|
|
43
|
+
createProduct(data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
44
|
+
updateProduct(id: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
45
|
+
deleteProduct(id: string): Promise<void>;
|
|
46
|
+
listQuotes(params?: {
|
|
47
|
+
limit?: number;
|
|
48
|
+
offset?: number;
|
|
49
|
+
}): Promise<PaginatedResponse<Record<string, unknown>>>;
|
|
50
|
+
getQuote(id: string): Promise<Record<string, unknown>>;
|
|
51
|
+
createQuote(data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
52
|
+
updateQuote(id: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
53
|
+
deleteQuote(id: string): Promise<void>;
|
|
54
|
+
listWebhooks(params?: {
|
|
55
|
+
limit?: number;
|
|
56
|
+
offset?: number;
|
|
57
|
+
}): Promise<PaginatedResponse<Record<string, unknown>>>;
|
|
58
|
+
getWebhook(id: string): Promise<Record<string, unknown>>;
|
|
59
|
+
createWebhook(data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
60
|
+
updateWebhook(id: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
61
|
+
deleteWebhook(id: string): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=client-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-interface.d.ts","sourceRoot":"","sources":["../src/client-interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared interface for the Frihet ERP API client.
|
|
3
|
+
*
|
|
4
|
+
* Both the local (Node.js) and remote (Cloudflare Workers) FrihetClient
|
|
5
|
+
* classes satisfy this interface via structural typing. Tool registration
|
|
6
|
+
* functions depend on this interface so they can work with either client.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=client-interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-interface.js","sourceRoot":"","sources":["../src/client-interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/dist/client.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export declare class FrihetClient {
|
|
|
15
15
|
constructor(apiKey: string, baseUrl?: string);
|
|
16
16
|
private request;
|
|
17
17
|
private sleep;
|
|
18
|
+
/** Wrapper for paginated endpoints — validates response shape has `data` array. */
|
|
19
|
+
private requestPaginated;
|
|
18
20
|
listInvoices(params?: {
|
|
19
21
|
limit?: number;
|
|
20
22
|
offset?: number;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAY,MAAM,YAAY,CAAC;AAQ9D,qBAAa,cAAe,SAAQ,KAAK;aAErB,UAAU,EAAE,MAAM;aAClB,SAAS,EAAE,MAAM;gBADjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjC,OAAO,CAAC,EAAE,MAAM;CAKnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;YAa9B,OAAO;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -93,16 +93,29 @@ export class FrihetClient {
|
|
|
93
93
|
if (response.status === 204) {
|
|
94
94
|
return undefined;
|
|
95
95
|
}
|
|
96
|
-
|
|
96
|
+
const data = await response.json();
|
|
97
|
+
// Basic response validation
|
|
98
|
+
if (data === null || data === undefined) {
|
|
99
|
+
throw new FrihetApiError(response.status, 'invalid_response', 'API returned empty response');
|
|
100
|
+
}
|
|
101
|
+
return data;
|
|
97
102
|
}
|
|
98
103
|
sleep(ms) {
|
|
99
104
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
100
105
|
}
|
|
106
|
+
/** Wrapper for paginated endpoints — validates response shape has `data` array. */
|
|
107
|
+
async requestPaginated(method, path, body, query) {
|
|
108
|
+
const result = await this.request(method, path, body, query);
|
|
109
|
+
if (!result || !Array.isArray(result.data)) {
|
|
110
|
+
throw new FrihetApiError(200, 'invalid_response', 'API returned invalid paginated response');
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
101
114
|
// ---------------------------------------------------------------- Public
|
|
102
115
|
// ----------------------------------------------------------------
|
|
103
116
|
// Invoices
|
|
104
117
|
async listInvoices(params) {
|
|
105
|
-
return this.
|
|
118
|
+
return this.requestPaginated("GET", "/invoices", undefined, {
|
|
106
119
|
limit: params?.limit,
|
|
107
120
|
offset: params?.offset,
|
|
108
121
|
});
|
|
@@ -120,7 +133,7 @@ export class FrihetClient {
|
|
|
120
133
|
return this.request("DELETE", `/invoices/${encodeURIComponent(id)}`);
|
|
121
134
|
}
|
|
122
135
|
async searchInvoices(clientName, params) {
|
|
123
|
-
return this.
|
|
136
|
+
return this.requestPaginated("GET", "/invoices", undefined, {
|
|
124
137
|
clientName,
|
|
125
138
|
limit: params?.limit,
|
|
126
139
|
offset: params?.offset,
|
|
@@ -128,7 +141,7 @@ export class FrihetClient {
|
|
|
128
141
|
}
|
|
129
142
|
// Expenses
|
|
130
143
|
async listExpenses(params) {
|
|
131
|
-
return this.
|
|
144
|
+
return this.requestPaginated("GET", "/expenses", undefined, {
|
|
132
145
|
limit: params?.limit,
|
|
133
146
|
offset: params?.offset,
|
|
134
147
|
});
|
|
@@ -147,7 +160,7 @@ export class FrihetClient {
|
|
|
147
160
|
}
|
|
148
161
|
// Clients
|
|
149
162
|
async listClients(params) {
|
|
150
|
-
return this.
|
|
163
|
+
return this.requestPaginated("GET", "/clients", undefined, {
|
|
151
164
|
limit: params?.limit,
|
|
152
165
|
offset: params?.offset,
|
|
153
166
|
});
|
|
@@ -166,7 +179,7 @@ export class FrihetClient {
|
|
|
166
179
|
}
|
|
167
180
|
// Products
|
|
168
181
|
async listProducts(params) {
|
|
169
|
-
return this.
|
|
182
|
+
return this.requestPaginated("GET", "/products", undefined, {
|
|
170
183
|
limit: params?.limit,
|
|
171
184
|
offset: params?.offset,
|
|
172
185
|
});
|
|
@@ -185,7 +198,7 @@ export class FrihetClient {
|
|
|
185
198
|
}
|
|
186
199
|
// Quotes
|
|
187
200
|
async listQuotes(params) {
|
|
188
|
-
return this.
|
|
201
|
+
return this.requestPaginated("GET", "/quotes", undefined, {
|
|
189
202
|
limit: params?.limit,
|
|
190
203
|
offset: params?.offset,
|
|
191
204
|
});
|
|
@@ -204,7 +217,7 @@ export class FrihetClient {
|
|
|
204
217
|
}
|
|
205
218
|
// Webhooks
|
|
206
219
|
async listWebhooks(params) {
|
|
207
|
-
return this.
|
|
220
|
+
return this.requestPaginated("GET", "/webhooks", undefined, {
|
|
208
221
|
limit: params?.limit,
|
|
209
222
|
offset: params?.offset,
|
|
210
223
|
});
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,12 +11,7 @@
|
|
|
11
11
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
12
12
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
13
13
|
import { FrihetClient } from "./client.js";
|
|
14
|
-
import {
|
|
15
|
-
import { registerExpenseTools } from "./tools/expenses.js";
|
|
16
|
-
import { registerClientTools } from "./tools/clients.js";
|
|
17
|
-
import { registerProductTools } from "./tools/products.js";
|
|
18
|
-
import { registerQuoteTools } from "./tools/quotes.js";
|
|
19
|
-
import { registerWebhookTools } from "./tools/webhooks.js";
|
|
14
|
+
import { registerAllTools } from "./tools/register-all.js";
|
|
20
15
|
function main() {
|
|
21
16
|
const apiKey = process.env.FRIHET_API_KEY;
|
|
22
17
|
if (!apiKey) {
|
|
@@ -32,13 +27,8 @@ function main() {
|
|
|
32
27
|
name: "frihet-erp",
|
|
33
28
|
version: "1.0.0",
|
|
34
29
|
});
|
|
35
|
-
// Register all tools
|
|
36
|
-
|
|
37
|
-
registerExpenseTools(server, client);
|
|
38
|
-
registerClientTools(server, client);
|
|
39
|
-
registerProductTools(server, client);
|
|
40
|
-
registerQuoteTools(server, client);
|
|
41
|
-
registerWebhookTools(server, client);
|
|
30
|
+
// Register all 31 tools
|
|
31
|
+
registerAllTools(server, client);
|
|
42
32
|
// Connect via stdio transport
|
|
43
33
|
const transport = new StdioServerTransport();
|
|
44
34
|
server.connect(transport).then(() => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,SAAS,IAAI;IACX,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,2DAA2D;YACzD,kEAAkE;YAClE,YAAY;YACZ,mDAAmD,CACtD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,wBAAwB;IACxB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,8BAA8B;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAClC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/tools/clients.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Client tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
|
-
import type {
|
|
6
|
-
export declare function registerClientTools(server: McpServer, client:
|
|
5
|
+
import type { IFrihetClient } from "../client-interface.js";
|
|
6
|
+
export declare function registerClientTools(server: McpServer, client: IFrihetClient): void;
|
|
7
7
|
//# sourceMappingURL=clients.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../src/tools/clients.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../src/tools/clients.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAa5D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAkJlF"}
|
package/dist/tools/clients.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Client tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
|
-
import { handleToolError, formatPaginatedResponse, formatRecord } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } from "./shared.js";
|
|
6
6
|
const addressSchema = z
|
|
7
7
|
.object({
|
|
8
8
|
street: z.string().optional().describe("Street address / Direccion"),
|
|
@@ -20,6 +20,7 @@ export function registerClientTools(server, client) {
|
|
|
20
20
|
"Returns contact info, tax IDs, and addresses. " +
|
|
21
21
|
"/ Lista todos los clientes con paginacion opcional. " +
|
|
22
22
|
"Devuelve informacion de contacto, NIF/CIF y direcciones.",
|
|
23
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
23
24
|
inputSchema: {
|
|
24
25
|
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
|
|
25
26
|
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
@@ -40,6 +41,7 @@ export function registerClientTools(server, client) {
|
|
|
40
41
|
title: "Get Client",
|
|
41
42
|
description: "Get a single client by their ID. Returns full contact details. " +
|
|
42
43
|
"/ Obtiene un cliente por su ID. Devuelve todos los datos de contacto.",
|
|
44
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
43
45
|
inputSchema: {
|
|
44
46
|
id: z.string().describe("Client ID / ID del cliente"),
|
|
45
47
|
},
|
|
@@ -61,6 +63,7 @@ export function registerClientTools(server, client) {
|
|
|
61
63
|
"Clients are used when creating invoices and quotes. " +
|
|
62
64
|
"/ Crea un nuevo cliente. Requiere como minimo un nombre. " +
|
|
63
65
|
"Los clientes se usan al crear facturas y presupuestos.",
|
|
66
|
+
annotations: CREATE_ANNOTATIONS,
|
|
64
67
|
inputSchema: {
|
|
65
68
|
name: z.string().describe("Client/company name / Nombre del cliente o empresa"),
|
|
66
69
|
email: z.string().optional().describe("Email address / Correo electronico"),
|
|
@@ -84,6 +87,7 @@ export function registerClientTools(server, client) {
|
|
|
84
87
|
title: "Update Client",
|
|
85
88
|
description: "Update an existing client. Only the provided fields will be changed. " +
|
|
86
89
|
"/ Actualiza un cliente existente. Solo se modifican los campos proporcionados.",
|
|
90
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
87
91
|
inputSchema: {
|
|
88
92
|
id: z.string().describe("Client ID / ID del cliente"),
|
|
89
93
|
name: z.string().optional().describe("Name / Nombre"),
|
|
@@ -110,6 +114,7 @@ export function registerClientTools(server, client) {
|
|
|
110
114
|
"Warning: this may affect existing invoices and quotes referencing this client. " +
|
|
111
115
|
"/ Elimina permanentemente un cliente por su ID. Esta accion no se puede deshacer. " +
|
|
112
116
|
"Advertencia: puede afectar a facturas y presupuestos existentes.",
|
|
117
|
+
annotations: DELETE_ANNOTATIONS,
|
|
113
118
|
inputSchema: {
|
|
114
119
|
id: z.string().describe("Client ID / ID del cliente"),
|
|
115
120
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.js","sourceRoot":"","sources":["../../src/tools/clients.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"clients.js","sourceRoot":"","sources":["../../src/tools/clients.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/expenses.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Expense tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
|
-
import type {
|
|
6
|
-
export declare function registerExpenseTools(server: McpServer, client:
|
|
5
|
+
import type { IFrihetClient } from "../client-interface.js";
|
|
6
|
+
export declare function registerExpenseTools(server: McpServer, client: IFrihetClient): void;
|
|
7
7
|
//# sourceMappingURL=expenses.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expenses.d.ts","sourceRoot":"","sources":["../../src/tools/expenses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"expenses.d.ts","sourceRoot":"","sources":["../../src/tools/expenses.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,CAyJnF"}
|
package/dist/tools/expenses.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* Expense tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
|
-
import { handleToolError, formatPaginatedResponse, formatRecord } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } from "./shared.js";
|
|
6
6
|
export function registerExpenseTools(server, client) {
|
|
7
7
|
// -- list_expenses --
|
|
8
8
|
server.registerTool("list_expenses", {
|
|
9
9
|
title: "List Expenses",
|
|
10
10
|
description: "List all expenses with optional pagination. " +
|
|
11
11
|
"/ Lista todos los gastos con paginacion opcional.",
|
|
12
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
12
13
|
inputSchema: {
|
|
13
14
|
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
|
|
14
15
|
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
@@ -29,6 +30,7 @@ export function registerExpenseTools(server, client) {
|
|
|
29
30
|
title: "Get Expense",
|
|
30
31
|
description: "Get a single expense by its ID. " +
|
|
31
32
|
"/ Obtiene un gasto por su ID.",
|
|
33
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
32
34
|
inputSchema: {
|
|
33
35
|
id: z.string().describe("Expense ID / ID del gasto"),
|
|
34
36
|
},
|
|
@@ -50,6 +52,7 @@ export function registerExpenseTools(server, client) {
|
|
|
50
52
|
"Useful for tracking business costs, deductible expenses, and vendor payments. " +
|
|
51
53
|
"/ Registra un nuevo gasto. Requiere descripcion e importe. " +
|
|
52
54
|
"Util para seguimiento de costes, gastos deducibles y pagos a proveedores.",
|
|
55
|
+
annotations: CREATE_ANNOTATIONS,
|
|
53
56
|
inputSchema: {
|
|
54
57
|
description: z.string().describe("Expense description / Descripcion del gasto"),
|
|
55
58
|
amount: z.number().describe("Amount in EUR / Importe en EUR"),
|
|
@@ -83,6 +86,7 @@ export function registerExpenseTools(server, client) {
|
|
|
83
86
|
title: "Update Expense",
|
|
84
87
|
description: "Update an existing expense. Only the provided fields will be changed. " +
|
|
85
88
|
"/ Actualiza un gasto existente. Solo se modifican los campos proporcionados.",
|
|
89
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
86
90
|
inputSchema: {
|
|
87
91
|
id: z.string().describe("Expense ID / ID del gasto"),
|
|
88
92
|
description: z.string().optional().describe("Description / Descripcion"),
|
|
@@ -108,6 +112,7 @@ export function registerExpenseTools(server, client) {
|
|
|
108
112
|
title: "Delete Expense",
|
|
109
113
|
description: "Permanently delete an expense by its ID. This action cannot be undone. " +
|
|
110
114
|
"/ Elimina permanentemente un gasto por su ID. Esta accion no se puede deshacer.",
|
|
115
|
+
annotations: DELETE_ANNOTATIONS,
|
|
111
116
|
inputSchema: {
|
|
112
117
|
id: z.string().describe("Expense ID / ID del gasto"),
|
|
113
118
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expenses.js","sourceRoot":"","sources":["../../src/tools/expenses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"expenses.js","sourceRoot":"","sources":["../../src/tools/expenses.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;AAExK,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAqB;IAC3E,sBAAsB;IAEtB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,8CAA8C;YAC9C,mDAAmD;QACrD,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACvG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SAC/E;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;aAC/E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oBAAoB;IAEpB,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,kCAAkC;YAClC,+BAA+B;QACjC,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SACrD;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uBAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,2DAA2D;YAC3D,gFAAgF;YAChF,6DAA6D;YAC7D,2EAA2E;QAC7E,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YAC/E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC7D,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;YACjF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yDAAyD,CAAC;YACtE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACrF,aAAa,EAAE,CAAC;iBACb,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,8EAA8E,CAAC;SAC5F;KACF,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC;aAC3E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uBAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,wEAAwE;YACxE,8EAA8E;QAChF,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACpD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACxE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACjE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC5D,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SAC7E;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC;aAC3E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uBAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,yEAAyE;YACzE,iFAAiF;QACnF,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SACrD;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kCAAkC,EAAE,2BAA2B,EAAE,CAAC;aAChH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/invoices.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Invoice tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
|
-
import type {
|
|
6
|
-
export declare function registerInvoiceTools(server: McpServer, client:
|
|
5
|
+
import type { IFrihetClient } from "../client-interface.js";
|
|
6
|
+
export declare function registerInvoiceTools(server: McpServer, client: IFrihetClient): void;
|
|
7
7
|
//# sourceMappingURL=invoices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../../src/tools/invoices.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,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAsNnF"}
|
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 } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } 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"),
|
|
@@ -16,6 +16,7 @@ export function registerInvoiceTools(server, client) {
|
|
|
16
16
|
"Returns a paginated list of invoices sorted by creation date. " +
|
|
17
17
|
"/ Lista todas las facturas con paginacion opcional. " +
|
|
18
18
|
"Devuelve una lista paginada de facturas ordenadas por fecha de creacion.",
|
|
19
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
19
20
|
inputSchema: {
|
|
20
21
|
limit: z
|
|
21
22
|
.number()
|
|
@@ -47,6 +48,7 @@ export function registerInvoiceTools(server, client) {
|
|
|
47
48
|
title: "Get Invoice",
|
|
48
49
|
description: "Get a single invoice by its ID. Returns the full invoice including line items, totals, and status. " +
|
|
49
50
|
"/ Obtiene una factura por su ID. Devuelve la factura completa con conceptos, totales y estado.",
|
|
51
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
50
52
|
inputSchema: {
|
|
51
53
|
id: z.string().describe("Invoice ID / ID de la factura"),
|
|
52
54
|
},
|
|
@@ -68,6 +70,7 @@ export function registerInvoiceTools(server, client) {
|
|
|
68
70
|
"The invoice number is auto-generated. " +
|
|
69
71
|
"/ Crea una nueva factura. Requiere nombre del cliente y al menos un concepto. " +
|
|
70
72
|
"El numero de factura se genera automaticamente.",
|
|
73
|
+
annotations: CREATE_ANNOTATIONS,
|
|
71
74
|
inputSchema: {
|
|
72
75
|
clientName: z.string().describe("Client/customer name / Nombre del cliente"),
|
|
73
76
|
items: z
|
|
@@ -109,6 +112,7 @@ export function registerInvoiceTools(server, client) {
|
|
|
109
112
|
title: "Update Invoice",
|
|
110
113
|
description: "Update an existing invoice. Only the provided fields will be changed. " +
|
|
111
114
|
"/ Actualiza una factura existente. Solo se modifican los campos proporcionados.",
|
|
115
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
112
116
|
inputSchema: {
|
|
113
117
|
id: z.string().describe("Invoice ID / ID de la factura"),
|
|
114
118
|
clientName: z.string().optional().describe("Client name / Nombre del cliente"),
|
|
@@ -141,6 +145,7 @@ export function registerInvoiceTools(server, client) {
|
|
|
141
145
|
title: "Delete Invoice",
|
|
142
146
|
description: "Permanently delete an invoice by its ID. This action cannot be undone. " +
|
|
143
147
|
"/ Elimina permanentemente una factura por su ID. Esta accion no se puede deshacer.",
|
|
148
|
+
annotations: DELETE_ANNOTATIONS,
|
|
144
149
|
inputSchema: {
|
|
145
150
|
id: z.string().describe("Invoice ID / ID de la factura"),
|
|
146
151
|
},
|
|
@@ -160,6 +165,7 @@ export function registerInvoiceTools(server, client) {
|
|
|
160
165
|
title: "Search Invoices",
|
|
161
166
|
description: "Search invoices by client name. Useful for finding all invoices for a specific client. " +
|
|
162
167
|
"/ Busca facturas por nombre de cliente. Util para encontrar todas las facturas de un cliente concreto.",
|
|
168
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
163
169
|
inputSchema: {
|
|
164
170
|
clientName: z.string().describe("Client name to search for / Nombre del cliente a buscar"),
|
|
165
171
|
limit: z.number().int().min(1).max(100).optional().describe("Max results / Resultados maximos"),
|
|
@@ -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,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/products.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Product tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
|
-
import type {
|
|
6
|
-
export declare function registerProductTools(server: McpServer, client:
|
|
5
|
+
import type { IFrihetClient } from "../client-interface.js";
|
|
6
|
+
export declare function registerProductTools(server: McpServer, client: IFrihetClient): void;
|
|
7
7
|
//# sourceMappingURL=products.d.ts.map
|
|
@@ -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,
|
|
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,CA0JnF"}
|
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 } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } from "./shared.js";
|
|
6
6
|
export function registerProductTools(server, client) {
|
|
7
7
|
// -- list_products --
|
|
8
8
|
server.registerTool("list_products", {
|
|
@@ -11,6 +11,7 @@ export function registerProductTools(server, client) {
|
|
|
11
11
|
"Products are reusable items that can be added to invoices and quotes. " +
|
|
12
12
|
"/ Lista todos los productos/servicios con paginacion opcional. " +
|
|
13
13
|
"Los productos son conceptos reutilizables para facturas y presupuestos.",
|
|
14
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
14
15
|
inputSchema: {
|
|
15
16
|
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
|
|
16
17
|
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
@@ -31,6 +32,7 @@ export function registerProductTools(server, client) {
|
|
|
31
32
|
title: "Get Product",
|
|
32
33
|
description: "Get a single product/service by its ID. " +
|
|
33
34
|
"/ Obtiene un producto/servicio por su ID.",
|
|
35
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
34
36
|
inputSchema: {
|
|
35
37
|
id: z.string().describe("Product ID / ID del producto"),
|
|
36
38
|
},
|
|
@@ -52,6 +54,7 @@ export function registerProductTools(server, client) {
|
|
|
52
54
|
"Products can be referenced when creating invoices and quotes for faster data entry. " +
|
|
53
55
|
"/ Crea un nuevo producto o servicio. Requiere nombre y precio unitario. " +
|
|
54
56
|
"Los productos se pueden usar al crear facturas y presupuestos.",
|
|
57
|
+
annotations: CREATE_ANNOTATIONS,
|
|
55
58
|
inputSchema: {
|
|
56
59
|
name: z.string().describe("Product/service name / Nombre del producto o servicio"),
|
|
57
60
|
unitPrice: z.number().describe("Unit price in EUR / Precio unitario en EUR"),
|
|
@@ -84,6 +87,7 @@ export function registerProductTools(server, client) {
|
|
|
84
87
|
title: "Update Product",
|
|
85
88
|
description: "Update an existing product. Only the provided fields will be changed. " +
|
|
86
89
|
"/ Actualiza un producto existente. Solo se modifican los campos proporcionados.",
|
|
90
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
87
91
|
inputSchema: {
|
|
88
92
|
id: z.string().describe("Product ID / ID del producto"),
|
|
89
93
|
name: z.string().optional().describe("Name / Nombre"),
|
|
@@ -109,6 +113,7 @@ export function registerProductTools(server, client) {
|
|
|
109
113
|
title: "Delete Product",
|
|
110
114
|
description: "Permanently delete a product by its ID. This action cannot be undone. " +
|
|
111
115
|
"/ Elimina permanentemente un producto por su ID. Esta accion no se puede deshacer.",
|
|
116
|
+
annotations: DELETE_ANNOTATIONS,
|
|
112
117
|
inputSchema: {
|
|
113
118
|
id: z.string().describe("Product ID / ID del producto"),
|
|
114
119
|
},
|
|
@@ -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,MAAM,aAAa,CAAC;
|
|
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;AAExK,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAqB;IAC3E,sBAAsB;IAEtB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,uDAAuD;YACvD,wEAAwE;YACxE,iEAAiE;YACjE,yEAAyE;QAC3E,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACvG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SAC/E;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;aAC/E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oBAAoB;IAEpB,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,0CAA0C;YAC1C,2CAA2C;QAC7C,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SACxD;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uBAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,mEAAmE;YACnE,sFAAsF;YACtF,0EAA0E;YAC1E,gEAAgE;QAClE,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YAClF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YAC5E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YAChF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;YACjF,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;YACzE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;SACnF;KACF,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC;aAC3E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uBAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,wEAAwE;YACxE,iFAAiF;QACnF,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACrD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACzE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACxE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC7E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SACxD;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC;aAC3E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uBAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,wEAAwE;YACxE,oFAAoF;QACtF,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SACxD;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,qCAAqC,EAAE,2BAA2B,EAAE,CAAC;aACnH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/quotes.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Quote tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
|
-
import type {
|
|
6
|
-
export declare function registerQuoteTools(server: McpServer, client:
|
|
5
|
+
import type { IFrihetClient } from "../client-interface.js";
|
|
6
|
+
export declare function registerQuoteTools(server: McpServer, client: IFrihetClient): void;
|
|
7
7
|
//# sourceMappingURL=quotes.d.ts.map
|
|
@@ -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,
|
|
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,CA4JjF"}
|
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 } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } 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"),
|
|
@@ -16,6 +16,7 @@ export function registerQuoteTools(server, client) {
|
|
|
16
16
|
"Quotes are proposals sent to clients before they become invoices. " +
|
|
17
17
|
"/ Lista todos los presupuestos con paginacion opcional. " +
|
|
18
18
|
"Los presupuestos son propuestas enviadas a clientes antes de facturar.",
|
|
19
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
19
20
|
inputSchema: {
|
|
20
21
|
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
|
|
21
22
|
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
@@ -36,6 +37,7 @@ export function registerQuoteTools(server, client) {
|
|
|
36
37
|
title: "Get Quote",
|
|
37
38
|
description: "Get a single quote/estimate by its ID. Returns the full quote with line items and totals. " +
|
|
38
39
|
"/ Obtiene un presupuesto por su ID. Devuelve el presupuesto completo con conceptos y totales.",
|
|
40
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
39
41
|
inputSchema: {
|
|
40
42
|
id: z.string().describe("Quote ID / ID del presupuesto"),
|
|
41
43
|
},
|
|
@@ -57,6 +59,7 @@ export function registerQuoteTools(server, client) {
|
|
|
57
59
|
"Quotes can later be converted to invoices. " +
|
|
58
60
|
"/ Crea un nuevo presupuesto para un cliente. Requiere nombre del cliente y al menos un concepto. " +
|
|
59
61
|
"Los presupuestos se pueden convertir en facturas despues.",
|
|
62
|
+
annotations: CREATE_ANNOTATIONS,
|
|
60
63
|
inputSchema: {
|
|
61
64
|
clientName: z.string().describe("Client name / Nombre del cliente"),
|
|
62
65
|
items: z
|
|
@@ -89,6 +92,7 @@ export function registerQuoteTools(server, client) {
|
|
|
89
92
|
title: "Update Quote",
|
|
90
93
|
description: "Update an existing quote. Only the provided fields will be changed. " +
|
|
91
94
|
"/ Actualiza un presupuesto existente. Solo se modifican los campos proporcionados.",
|
|
95
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
92
96
|
inputSchema: {
|
|
93
97
|
id: z.string().describe("Quote ID / ID del presupuesto"),
|
|
94
98
|
clientName: z.string().optional().describe("Client name / Nombre del cliente"),
|
|
@@ -116,6 +120,7 @@ export function registerQuoteTools(server, client) {
|
|
|
116
120
|
title: "Delete Quote",
|
|
117
121
|
description: "Permanently delete a quote by its ID. This action cannot be undone. " +
|
|
118
122
|
"/ Elimina permanentemente un presupuesto por su ID. Esta accion no se puede deshacer.",
|
|
123
|
+
annotations: DELETE_ANNOTATIONS,
|
|
119
124
|
inputSchema: {
|
|
120
125
|
id: z.string().describe("Quote ID / ID del presupuesto"),
|
|
121
126
|
},
|
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,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"quotes.js","sourceRoot":"","sources":["../../src/tools/quotes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel module that registers all 31 Frihet ERP tools on an McpServer.
|
|
3
|
+
*
|
|
4
|
+
* Used by both the local (stdio) and remote (Cloudflare Workers) servers
|
|
5
|
+
* so tool definitions stay in sync — one source of truth.
|
|
6
|
+
*/
|
|
7
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
|
+
import type { IFrihetClient } from "../client-interface.js";
|
|
9
|
+
export declare function registerAllTools(server: McpServer, client: IFrihetClient): void;
|
|
10
|
+
//# sourceMappingURL=register-all.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-all.d.ts","sourceRoot":"","sources":["../../src/tools/register-all.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAQ5D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAO/E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel module that registers all 31 Frihet ERP tools on an McpServer.
|
|
3
|
+
*
|
|
4
|
+
* Used by both the local (stdio) and remote (Cloudflare Workers) servers
|
|
5
|
+
* so tool definitions stay in sync — one source of truth.
|
|
6
|
+
*/
|
|
7
|
+
import { registerInvoiceTools } from "./invoices.js";
|
|
8
|
+
import { registerExpenseTools } from "./expenses.js";
|
|
9
|
+
import { registerClientTools } from "./clients.js";
|
|
10
|
+
import { registerProductTools } from "./products.js";
|
|
11
|
+
import { registerQuoteTools } from "./quotes.js";
|
|
12
|
+
import { registerWebhookTools } from "./webhooks.js";
|
|
13
|
+
export function registerAllTools(server, client) {
|
|
14
|
+
registerInvoiceTools(server, client);
|
|
15
|
+
registerExpenseTools(server, client);
|
|
16
|
+
registerClientTools(server, client);
|
|
17
|
+
registerProductTools(server, client);
|
|
18
|
+
registerQuoteTools(server, client);
|
|
19
|
+
registerWebhookTools(server, client);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=register-all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-all.js","sourceRoot":"","sources":["../../src/tools/register-all.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAqB;IACvE,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/tools/shared.d.ts
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared utilities for MCP tool handlers.
|
|
3
|
+
*
|
|
4
|
+
* This module is used by both the local (stdio) and remote (Cloudflare Workers)
|
|
5
|
+
* MCP servers. It must NOT import concrete classes from either client — error
|
|
6
|
+
* detection uses duck-typing (checking for `statusCode`/`errorCode` properties)
|
|
7
|
+
* so it works regardless of which FrihetApiError class threw the error.
|
|
3
8
|
*/
|
|
9
|
+
import type { ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
|
|
4
10
|
import type { PaginatedResponse } from "../types.js";
|
|
11
|
+
export declare const READ_ONLY_ANNOTATIONS: ToolAnnotations;
|
|
12
|
+
export declare const CREATE_ANNOTATIONS: ToolAnnotations;
|
|
13
|
+
export declare const UPDATE_ANNOTATIONS: ToolAnnotations;
|
|
14
|
+
export declare const DELETE_ANNOTATIONS: ToolAnnotations;
|
|
15
|
+
export declare function truncateResponse(text: string): string;
|
|
5
16
|
/**
|
|
6
17
|
* Maps an error to a user-friendly MCP tool response.
|
|
7
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA
|
|
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;AAC1E,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;AAQvJ,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAmBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG;IAC/C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,IAAI,CAAC;CACf,CAkCA;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"}
|
package/dist/tools/shared.js
CHANGED
|
@@ -1,12 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared utilities for MCP tool handlers.
|
|
3
|
+
*
|
|
4
|
+
* This module is used by both the local (stdio) and remote (Cloudflare Workers)
|
|
5
|
+
* MCP servers. It must NOT import concrete classes from either client — error
|
|
6
|
+
* detection uses duck-typing (checking for `statusCode`/`errorCode` properties)
|
|
7
|
+
* so it works regardless of which FrihetApiError class threw the error.
|
|
3
8
|
*/
|
|
4
|
-
|
|
9
|
+
/* ------------------------------------------------------------------ */
|
|
10
|
+
/* Safety annotations for MCP tool registrations */
|
|
11
|
+
/* ------------------------------------------------------------------ */
|
|
12
|
+
export const READ_ONLY_ANNOTATIONS = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
|
|
13
|
+
export const CREATE_ANNOTATIONS = { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false };
|
|
14
|
+
export const UPDATE_ANNOTATIONS = { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false };
|
|
15
|
+
export const DELETE_ANNOTATIONS = { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false };
|
|
16
|
+
/* ------------------------------------------------------------------ */
|
|
17
|
+
/* Response size guard */
|
|
18
|
+
/* ------------------------------------------------------------------ */
|
|
19
|
+
const MAX_RESPONSE_CHARS = 80_000; // ~20,000 tokens safety margin
|
|
20
|
+
export function truncateResponse(text) {
|
|
21
|
+
if (text.length <= MAX_RESPONSE_CHARS)
|
|
22
|
+
return text;
|
|
23
|
+
return text.slice(0, MAX_RESPONSE_CHARS) +
|
|
24
|
+
'\n\n[Response truncated. Use pagination (limit/offset) to retrieve smaller result sets.]';
|
|
25
|
+
}
|
|
26
|
+
function isFrihetApiError(error) {
|
|
27
|
+
return (typeof error === "object" &&
|
|
28
|
+
error !== null &&
|
|
29
|
+
"statusCode" in error &&
|
|
30
|
+
"errorCode" in error &&
|
|
31
|
+
typeof error.statusCode === "number");
|
|
32
|
+
}
|
|
5
33
|
/**
|
|
6
34
|
* Maps an error to a user-friendly MCP tool response.
|
|
7
35
|
*/
|
|
8
36
|
export function handleToolError(error) {
|
|
9
|
-
if (error
|
|
37
|
+
if (isFrihetApiError(error)) {
|
|
10
38
|
const messages = {
|
|
11
39
|
400: "Bad request. Check your input parameters. / Solicitud incorrecta. Revisa los parametros.",
|
|
12
40
|
401: "Authentication failed. Check your API key. / Autenticacion fallida. Revisa tu API key.",
|
|
@@ -49,12 +77,12 @@ export function formatPaginatedResponse(resourceName, response) {
|
|
|
49
77
|
if (response.total > response.offset + response.data.length) {
|
|
50
78
|
lines.push(`More results available. Use offset=${response.offset + response.data.length} to see the next page.`);
|
|
51
79
|
}
|
|
52
|
-
return lines.join("\n");
|
|
80
|
+
return truncateResponse(lines.join("\n"));
|
|
53
81
|
}
|
|
54
82
|
/**
|
|
55
83
|
* Formats a single record for display.
|
|
56
84
|
*/
|
|
57
85
|
export function formatRecord(label, record) {
|
|
58
|
-
return `${label}:\n${JSON.stringify(record, null, 2)}
|
|
86
|
+
return truncateResponse(`${label}:\n${JSON.stringify(record, null, 2)}`);
|
|
59
87
|
}
|
|
60
88
|
//# sourceMappingURL=shared.js.map
|
package/dist/tools/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/webhooks.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Webhook management tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
|
-
import type {
|
|
6
|
-
export declare function registerWebhookTools(server: McpServer, client:
|
|
5
|
+
import type { IFrihetClient } from "../client-interface.js";
|
|
6
|
+
export declare function registerWebhookTools(server: McpServer, client: IFrihetClient): void;
|
|
7
7
|
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -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,
|
|
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"}
|
package/dist/tools/webhooks.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* Webhook management tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
|
-
import { handleToolError, formatPaginatedResponse, formatRecord } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } from "./shared.js";
|
|
6
6
|
export function registerWebhookTools(server, client) {
|
|
7
7
|
// -- list_webhooks --
|
|
8
8
|
server.registerTool("list_webhooks", {
|
|
9
9
|
title: "List Webhooks",
|
|
10
10
|
description: "List all configured webhooks. Webhooks send HTTP POST notifications when events occur in Frihet. " +
|
|
11
11
|
"/ Lista todos los webhooks configurados. Los webhooks envian notificaciones HTTP POST cuando ocurren eventos en Frihet.",
|
|
12
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
12
13
|
inputSchema: {
|
|
13
14
|
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
|
|
14
15
|
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
@@ -29,6 +30,7 @@ export function registerWebhookTools(server, client) {
|
|
|
29
30
|
title: "Get Webhook",
|
|
30
31
|
description: "Get a single webhook configuration by its ID. " +
|
|
31
32
|
"/ Obtiene la configuracion de un webhook por su ID.",
|
|
33
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
32
34
|
inputSchema: {
|
|
33
35
|
id: z.string().describe("Webhook ID / ID del webhook"),
|
|
34
36
|
},
|
|
@@ -50,6 +52,7 @@ export function registerWebhookTools(server, client) {
|
|
|
50
52
|
"and which events to subscribe to (e.g. 'invoice.created', 'invoice.paid', 'expense.created'). " +
|
|
51
53
|
"/ Registra un nuevo endpoint de webhook. Debes especificar la URL y los eventos " +
|
|
52
54
|
"a los que suscribirte (ej. 'invoice.created', 'invoice.paid', 'expense.created').",
|
|
55
|
+
annotations: CREATE_ANNOTATIONS,
|
|
53
56
|
inputSchema: {
|
|
54
57
|
url: z.string().url().describe("Webhook endpoint URL / URL del endpoint del webhook"),
|
|
55
58
|
events: z
|
|
@@ -82,6 +85,7 @@ export function registerWebhookTools(server, client) {
|
|
|
82
85
|
title: "Update Webhook",
|
|
83
86
|
description: "Update an existing webhook configuration. Only the provided fields will be changed. " +
|
|
84
87
|
"/ Actualiza la configuracion de un webhook. Solo se modifican los campos proporcionados.",
|
|
88
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
85
89
|
inputSchema: {
|
|
86
90
|
id: z.string().describe("Webhook ID / ID del webhook"),
|
|
87
91
|
url: z.string().url().optional().describe("Endpoint URL / URL"),
|
|
@@ -105,6 +109,7 @@ export function registerWebhookTools(server, client) {
|
|
|
105
109
|
title: "Delete Webhook",
|
|
106
110
|
description: "Permanently delete a webhook by its ID. Notifications will stop immediately. " +
|
|
107
111
|
"/ Elimina permanentemente un webhook por su ID. Las notificaciones se detendran inmediatamente.",
|
|
112
|
+
annotations: DELETE_ANNOTATIONS,
|
|
108
113
|
inputSchema: {
|
|
109
114
|
id: z.string().describe("Webhook ID / ID del webhook"),
|
|
110
115
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frihet/mcp-server",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "MCP server for
|
|
3
|
+
"version": "1.1.0",
|
|
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",
|
|
7
7
|
"bin": {
|
|
@@ -21,7 +21,17 @@
|
|
|
21
21
|
"model-context-protocol",
|
|
22
22
|
"claude",
|
|
23
23
|
"cursor",
|
|
24
|
-
"windsurf"
|
|
24
|
+
"windsurf",
|
|
25
|
+
"business-management",
|
|
26
|
+
"accounting",
|
|
27
|
+
"expenses",
|
|
28
|
+
"tax-compliance",
|
|
29
|
+
"verifactu",
|
|
30
|
+
"copilot",
|
|
31
|
+
"cline",
|
|
32
|
+
"codex",
|
|
33
|
+
"ai-agent",
|
|
34
|
+
"automation"
|
|
25
35
|
],
|
|
26
36
|
"author": "BRTHLS <viktor@brthls.com>",
|
|
27
37
|
"license": "MIT",
|
|
@@ -29,7 +39,8 @@
|
|
|
29
39
|
"type": "git",
|
|
30
40
|
"url": "https://github.com/berthelius/frihet-mcp.git"
|
|
31
41
|
},
|
|
32
|
-
"
|
|
42
|
+
"mcpName": "io.github.berthelius/frihet",
|
|
43
|
+
"homepage": "https://docs.frihet.io/desarrolladores/mcp-server",
|
|
33
44
|
"bugs": {
|
|
34
45
|
"url": "https://github.com/berthelius/frihet-mcp/issues"
|
|
35
46
|
},
|