@frihet/mcp-server 1.6.1 → 1.9.0-beta.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 +19 -6
- package/dist/__tests__/banking-tools.test.d.ts +18 -0
- package/dist/__tests__/banking-tools.test.d.ts.map +1 -0
- package/dist/__tests__/banking-tools.test.js +252 -0
- package/dist/__tests__/banking-tools.test.js.map +1 -0
- package/dist/__tests__/einvoice-integration.test.d.ts +24 -0
- package/dist/__tests__/einvoice-integration.test.d.ts.map +1 -0
- package/dist/__tests__/einvoice-integration.test.js +142 -0
- package/dist/__tests__/einvoice-integration.test.js.map +1 -0
- package/dist/__tests__/einvoice-tools.test.d.ts +16 -0
- package/dist/__tests__/einvoice-tools.test.d.ts.map +1 -0
- package/dist/__tests__/einvoice-tools.test.js +435 -0
- package/dist/__tests__/einvoice-tools.test.js.map +1 -0
- package/dist/__tests__/fiscal-tools.test.d.ts +20 -0
- package/dist/__tests__/fiscal-tools.test.d.ts.map +1 -0
- package/dist/__tests__/fiscal-tools.test.js +233 -0
- package/dist/__tests__/fiscal-tools.test.js.map +1 -0
- package/dist/__tests__/pos-tools.test.d.ts +16 -0
- package/dist/__tests__/pos-tools.test.d.ts.map +1 -0
- package/dist/__tests__/pos-tools.test.js +244 -0
- package/dist/__tests__/pos-tools.test.js.map +1 -0
- package/dist/__tests__/recurring-tools.test.d.ts +16 -0
- package/dist/__tests__/recurring-tools.test.d.ts.map +1 -0
- package/dist/__tests__/recurring-tools.test.js +166 -0
- package/dist/__tests__/recurring-tools.test.js.map +1 -0
- package/dist/__tests__/stay-tools.test.d.ts +17 -0
- package/dist/__tests__/stay-tools.test.d.ts.map +1 -0
- package/dist/__tests__/stay-tools.test.js +259 -0
- package/dist/__tests__/stay-tools.test.js.map +1 -0
- package/dist/__tests__/time-tools.test.d.ts +17 -0
- package/dist/__tests__/time-tools.test.d.ts.map +1 -0
- package/dist/__tests__/time-tools.test.js +199 -0
- package/dist/__tests__/time-tools.test.js.map +1 -0
- package/dist/client-interface.d.ts +131 -0
- package/dist/client-interface.d.ts.map +1 -1
- package/dist/client.d.ts +131 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +159 -0
- package/dist/client.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/tools/banking.d.ts +19 -0
- package/dist/tools/banking.d.ts.map +1 -0
- package/dist/tools/banking.js +155 -0
- package/dist/tools/banking.js.map +1 -0
- package/dist/tools/einvoice.d.ts +92 -0
- package/dist/tools/einvoice.d.ts.map +1 -0
- package/dist/tools/einvoice.js +400 -0
- package/dist/tools/einvoice.js.map +1 -0
- package/dist/tools/fiscal.d.ts +22 -0
- package/dist/tools/fiscal.d.ts.map +1 -0
- package/dist/tools/fiscal.js +215 -0
- package/dist/tools/fiscal.js.map +1 -0
- package/dist/tools/pos.d.ts +15 -0
- package/dist/tools/pos.d.ts.map +1 -0
- package/dist/tools/pos.js +156 -0
- package/dist/tools/pos.js.map +1 -0
- package/dist/tools/recurring.d.ts +16 -0
- package/dist/tools/recurring.d.ts.map +1 -0
- package/dist/tools/recurring.js +67 -0
- package/dist/tools/recurring.js.map +1 -0
- package/dist/tools/register-all.d.ts +2 -2
- package/dist/tools/register-all.d.ts.map +1 -1
- package/dist/tools/register-all.js +16 -2
- package/dist/tools/register-all.js.map +1 -1
- package/dist/tools/shared.d.ts +169 -0
- package/dist/tools/shared.d.ts.map +1 -1
- package/dist/tools/shared.js +140 -0
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/stay.d.ts +6 -78
- package/dist/tools/stay.d.ts.map +1 -1
- package/dist/tools/stay.js +121 -343
- package/dist/tools/stay.js.map +1 -1
- package/dist/tools/time.d.ts +18 -0
- package/dist/tools/time.d.ts.map +1 -0
- package/dist/tools/time.js +134 -0
- package/dist/tools/time.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Time tracking tools for the Frihet MCP server — Wave 6 (4 tools).
|
|
3
|
+
*
|
|
4
|
+
* Tools:
|
|
5
|
+
* 1. list_time_entries — list timesheets (filter: user, project, date range)
|
|
6
|
+
* 2. create_time_entry — log time (project, hours, description, billable flag)
|
|
7
|
+
* 3. update_time_entry — modify existing time entry
|
|
8
|
+
* 4. delete_time_entry — soft delete (Trust Area: requires confirm)
|
|
9
|
+
*
|
|
10
|
+
* REST surface: /v1/time/entries
|
|
11
|
+
*
|
|
12
|
+
* NOTE: ERP backend endpoints /v1/time/* are planned. Tools are wired
|
|
13
|
+
* and will surface 404 errors until the backend ships.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from "zod/v4";
|
|
16
|
+
import { withToolLogging, formatPaginatedResponse, formatRecord, listContent, mutateContent, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, paginatedOutput, deleteResultOutput, timeEntryItemOutput, } from "./shared.js";
|
|
17
|
+
export function registerTimeTools(server, client) {
|
|
18
|
+
// -- list_time_entries --
|
|
19
|
+
server.registerTool("list_time_entries", {
|
|
20
|
+
title: "List Time Entries",
|
|
21
|
+
description: "List time tracking entries with optional filters. " +
|
|
22
|
+
"Filter by user, project, date range, or billable status. " +
|
|
23
|
+
"Useful for generating timesheets, billing reports, and project cost analysis. " +
|
|
24
|
+
"/ Lista entradas de tiempo con filtros opcionales. " +
|
|
25
|
+
"Filtra por usuario, proyecto, rango de fechas o facturabilidad. " +
|
|
26
|
+
"Util para partes de trabajo, informes de facturacion y analisis de costes por proyecto.",
|
|
27
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
28
|
+
inputSchema: {
|
|
29
|
+
userId: z.string().optional().describe("Filter by user ID / Filtrar por ID de usuario"),
|
|
30
|
+
projectId: z.string().optional().describe("Filter by project ID / Filtrar por ID de proyecto"),
|
|
31
|
+
from: z.string().optional().describe("Start date ISO 8601 (YYYY-MM-DD) / Fecha inicio"),
|
|
32
|
+
to: z.string().optional().describe("End date ISO 8601 (YYYY-MM-DD) / Fecha fin"),
|
|
33
|
+
billable: z.boolean().optional().describe("Filter by billable flag / Filtrar por facturabilidad"),
|
|
34
|
+
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
|
|
35
|
+
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
36
|
+
after: z.string().optional().describe("Cursor for cursor-based pagination / Cursor para paginacion"),
|
|
37
|
+
},
|
|
38
|
+
outputSchema: paginatedOutput(timeEntryItemOutput),
|
|
39
|
+
}, async ({ userId, projectId, from, to, billable, limit, offset, after }) => withToolLogging("list_time_entries", async () => {
|
|
40
|
+
const result = await client.listTimeEntries({ userId, projectId, from, to, billable, limit, offset, after });
|
|
41
|
+
return {
|
|
42
|
+
content: [listContent(formatPaginatedResponse("time_entries", result))],
|
|
43
|
+
structuredContent: result,
|
|
44
|
+
};
|
|
45
|
+
}));
|
|
46
|
+
// -- create_time_entry --
|
|
47
|
+
server.registerTool("create_time_entry", {
|
|
48
|
+
title: "Create Time Entry",
|
|
49
|
+
description: "Log a time entry for a project. " +
|
|
50
|
+
"Requires projectId, hours (decimal), and date. " +
|
|
51
|
+
"Mark as billable=true to include in client invoicing. " +
|
|
52
|
+
"Example: projectId='proj_abc', hours=2.5, description='Frontend review', billable=true, date='2026-05-10' " +
|
|
53
|
+
"/ Registra una entrada de tiempo para un proyecto. " +
|
|
54
|
+
"Requiere projectId, horas (decimal) y fecha. " +
|
|
55
|
+
"Marca billable=true para incluirlo en la facturacion al cliente.",
|
|
56
|
+
annotations: CREATE_ANNOTATIONS,
|
|
57
|
+
inputSchema: {
|
|
58
|
+
projectId: z.string().describe("Project ID / ID del proyecto"),
|
|
59
|
+
hours: z.number().min(0.01).describe("Hours worked (decimal, e.g. 1.5) / Horas trabajadas (decimal)"),
|
|
60
|
+
date: z.string().describe("Work date ISO 8601 (YYYY-MM-DD) / Fecha del trabajo"),
|
|
61
|
+
description: z.string().optional().describe("Description of work done / Descripcion del trabajo realizado"),
|
|
62
|
+
billable: z.boolean().optional().describe("Whether hours are billable to client (default true) / Si las horas son facturables"),
|
|
63
|
+
userId: z.string().optional().describe("User ID (defaults to API key owner) / ID del usuario (por defecto el propietario de la API key)"),
|
|
64
|
+
},
|
|
65
|
+
outputSchema: timeEntryItemOutput,
|
|
66
|
+
}, async ({ projectId, hours, date, description, billable, userId }) => withToolLogging("create_time_entry", async () => {
|
|
67
|
+
const result = await client.createTimeEntry({ projectId, hours, date, description, billable, userId });
|
|
68
|
+
return {
|
|
69
|
+
content: [mutateContent(formatRecord("Time entry created", result))],
|
|
70
|
+
structuredContent: result,
|
|
71
|
+
};
|
|
72
|
+
}));
|
|
73
|
+
// -- update_time_entry --
|
|
74
|
+
server.registerTool("update_time_entry", {
|
|
75
|
+
title: "Update Time Entry",
|
|
76
|
+
description: "Update an existing time entry using PATCH semantics. Only provided fields are changed. " +
|
|
77
|
+
"Example: id='te_abc123', hours=3.0, description='Frontend review + testing' " +
|
|
78
|
+
"/ Actualiza una entrada de tiempo existente. Solo se modifican los campos proporcionados.",
|
|
79
|
+
annotations: UPDATE_ANNOTATIONS,
|
|
80
|
+
inputSchema: {
|
|
81
|
+
id: z.string().describe("Time entry ID / ID de la entrada de tiempo"),
|
|
82
|
+
hours: z.number().min(0.01).optional().describe("Updated hours / Horas actualizadas"),
|
|
83
|
+
date: z.string().optional().describe("Updated date ISO 8601 / Fecha actualizada"),
|
|
84
|
+
description: z.string().optional().describe("Updated description / Descripcion actualizada"),
|
|
85
|
+
billable: z.boolean().optional().describe("Updated billable flag / Facturabilidad actualizada"),
|
|
86
|
+
projectId: z.string().optional().describe("Reassign to different project / Reasignar a otro proyecto"),
|
|
87
|
+
},
|
|
88
|
+
outputSchema: timeEntryItemOutput,
|
|
89
|
+
}, async ({ id, ...data }) => withToolLogging("update_time_entry", async () => {
|
|
90
|
+
const result = await client.updateTimeEntry(id, data);
|
|
91
|
+
return {
|
|
92
|
+
content: [mutateContent(formatRecord("Time entry updated", result))],
|
|
93
|
+
structuredContent: result,
|
|
94
|
+
};
|
|
95
|
+
}));
|
|
96
|
+
// -- delete_time_entry --
|
|
97
|
+
server.registerTool("delete_time_entry", {
|
|
98
|
+
title: "Delete Time Entry",
|
|
99
|
+
description: "Soft-delete a time entry by ID. " +
|
|
100
|
+
"Requires confirm=true to prevent accidental deletion. " +
|
|
101
|
+
"Deleted entries are excluded from billing reports but retained for audit. " +
|
|
102
|
+
"/ Elimina (soft-delete) una entrada de tiempo por su ID. " +
|
|
103
|
+
"Requiere confirm=true para evitar eliminaciones accidentales. " +
|
|
104
|
+
"Las entradas eliminadas se excluyen de informes de facturacion pero se retienen en auditoria.",
|
|
105
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
106
|
+
inputSchema: {
|
|
107
|
+
id: z.string().describe("Time entry ID / ID de la entrada de tiempo"),
|
|
108
|
+
confirm: z
|
|
109
|
+
.boolean()
|
|
110
|
+
.describe("Must be true to confirm deletion / Debe ser true para confirmar la eliminacion"),
|
|
111
|
+
},
|
|
112
|
+
outputSchema: deleteResultOutput,
|
|
113
|
+
}, async ({ id, confirm }) => withToolLogging("delete_time_entry", async () => {
|
|
114
|
+
if (!confirm) {
|
|
115
|
+
return {
|
|
116
|
+
content: [
|
|
117
|
+
{
|
|
118
|
+
type: "text",
|
|
119
|
+
text: "Error: confirm=true is required to delete a time entry. " +
|
|
120
|
+
"Deleted entries affect billing reports. Set confirm=true to proceed. / " +
|
|
121
|
+
"Se requiere confirm=true para eliminar una entrada de tiempo.",
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
isError: true,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
await client.deleteTimeEntry(id);
|
|
128
|
+
return {
|
|
129
|
+
content: [mutateContent(`Time entry ${id} deleted (soft). / Entrada de tiempo ${id} eliminada.`)],
|
|
130
|
+
structuredContent: { success: true, id },
|
|
131
|
+
};
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/tools/time.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": "AI-native MCP server for business management — invoices, expenses, deposits, clients, products, quotes, webhooks, CRM.
|
|
3
|
+
"version": "1.9.0-beta.1",
|
|
4
|
+
"description": "AI-native MCP server for business management — invoices, expenses, deposits, clients, products, quotes, webhooks, CRM, e-invoicing, vacation rentals, POS, banking, fiscal (Modelo 303/130/390/180/347, VeriFactu, TicketBAI), time tracking, recurring invoices. 94 tools. Remote endpoint at mcp.frihet.io (zero install). Works with Claude, Cursor, Windsurf, Cline.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc",
|
|
12
|
+
"test": "npm run build && node --test dist/__tests__/einvoice-tools.test.js dist/__tests__/stay-tools.test.js dist/__tests__/pos-tools.test.js dist/__tests__/banking-tools.test.js dist/__tests__/fiscal-tools.test.js dist/__tests__/time-tools.test.js dist/__tests__/recurring-tools.test.js",
|
|
12
13
|
"start": "node dist/index.js",
|
|
13
14
|
"postinstall": "node scripts/postinstall.js || true",
|
|
14
15
|
"prepublishOnly": "npm run build"
|