@frihet/mcp-server 1.7.0-beta.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 +8 -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__/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 +89 -0
- package/dist/client-interface.d.ts.map +1 -1
- package/dist/client.d.ts +89 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +145 -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/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 +14 -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 -3
package/dist/tools/stay.js
CHANGED
|
@@ -1,219 +1,73 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Stay tools for the Frihet MCP server.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Wave 4 — 5 tools for vacation rental management:
|
|
5
|
+
* list_reservations, get_reservation, create_reservation,
|
|
6
|
+
* list_properties, sync_channel
|
|
7
|
+
*
|
|
8
|
+
* ERP backend endpoints land separately (Frihet-ERP S2 sprint).
|
|
9
|
+
* Tools target /v1/stay/reservations, /v1/stay/properties, /v1/stay/channels.
|
|
6
10
|
*/
|
|
7
11
|
import { z } from "zod/v4";
|
|
8
|
-
import { withToolLogging, formatPaginatedResponse, formatRecord, listContent, getContent, mutateContent,
|
|
9
|
-
/* ------------------------------------------------------------------ */
|
|
10
|
-
/* Output schemas */
|
|
11
|
-
/* ------------------------------------------------------------------ */
|
|
12
|
-
export const propertyItemOutput = z.object({
|
|
13
|
-
id: z.string(),
|
|
14
|
-
name: z.string(),
|
|
15
|
-
type: z.string().optional(),
|
|
16
|
-
address: z.string().optional(),
|
|
17
|
-
maxGuests: z.number().optional(),
|
|
18
|
-
bedrooms: z.number().optional(),
|
|
19
|
-
bathrooms: z.number().optional(),
|
|
20
|
-
active: z.boolean().optional(),
|
|
21
|
-
licenseNumber: z.string().optional(),
|
|
22
|
-
createdAt: z.string().optional(),
|
|
23
|
-
updatedAt: z.string().optional(),
|
|
24
|
-
}).passthrough();
|
|
25
|
-
export const reservationItemOutput = z.object({
|
|
26
|
-
id: z.string(),
|
|
27
|
-
propertyId: z.string(),
|
|
28
|
-
propertyName: z.string().optional(),
|
|
29
|
-
guestName: z.string(),
|
|
30
|
-
guestEmail: z.string().optional(),
|
|
31
|
-
guestPhone: z.string().optional(),
|
|
32
|
-
checkIn: z.string(),
|
|
33
|
-
checkOut: z.string(),
|
|
34
|
-
status: z.string().optional(),
|
|
35
|
-
totalAmount: z.number().optional(),
|
|
36
|
-
nightlyRate: z.number().optional(),
|
|
37
|
-
numGuests: z.number().optional(),
|
|
38
|
-
channel: z.string().optional(),
|
|
39
|
-
notes: z.string().optional(),
|
|
40
|
-
createdAt: z.string().optional(),
|
|
41
|
-
updatedAt: z.string().optional(),
|
|
42
|
-
}).passthrough();
|
|
43
|
-
export const cleaningTaskItemOutput = z.object({
|
|
44
|
-
id: z.string(),
|
|
45
|
-
propertyId: z.string(),
|
|
46
|
-
propertyName: z.string().optional(),
|
|
47
|
-
reservationId: z.string().optional(),
|
|
48
|
-
status: z.string().optional(),
|
|
49
|
-
scheduledAt: z.string().optional(),
|
|
50
|
-
completedAt: z.string().optional(),
|
|
51
|
-
assignedTo: z.string().optional(),
|
|
52
|
-
notes: z.string().optional(),
|
|
53
|
-
createdAt: z.string().optional(),
|
|
54
|
-
updatedAt: z.string().optional(),
|
|
55
|
-
}).passthrough();
|
|
56
|
-
export const occupancyStatsOutput = z.object({
|
|
57
|
-
from: z.string(),
|
|
58
|
-
to: z.string(),
|
|
59
|
-
occupancyRate: z.number().optional(),
|
|
60
|
-
totalRevenue: z.number().optional(),
|
|
61
|
-
adr: z.number().optional(),
|
|
62
|
-
revPAR: z.number().optional(),
|
|
63
|
-
totalNights: z.number().optional(),
|
|
64
|
-
occupiedNights: z.number().optional(),
|
|
65
|
-
reservationsCount: z.number().optional(),
|
|
66
|
-
byProperty: z.array(z.object({
|
|
67
|
-
propertyId: z.string(),
|
|
68
|
-
propertyName: z.string().optional(),
|
|
69
|
-
occupancyRate: z.number().optional(),
|
|
70
|
-
revenue: z.number().optional(),
|
|
71
|
-
adr: z.number().optional(),
|
|
72
|
-
}).passthrough()).optional(),
|
|
73
|
-
}).passthrough();
|
|
74
|
-
export const complianceStatusOutput = z.object({
|
|
75
|
-
total: z.number(),
|
|
76
|
-
verified: z.number(),
|
|
77
|
-
pending: z.number(),
|
|
78
|
-
expired: z.number().optional(),
|
|
79
|
-
byProperty: z.array(z.object({
|
|
80
|
-
propertyId: z.string(),
|
|
81
|
-
propertyName: z.string().optional(),
|
|
82
|
-
verified: z.number(),
|
|
83
|
-
pending: z.number(),
|
|
84
|
-
total: z.number(),
|
|
85
|
-
}).passthrough()).optional(),
|
|
86
|
-
}).passthrough();
|
|
87
|
-
/* ------------------------------------------------------------------ */
|
|
88
|
-
/* Tool registration */
|
|
89
|
-
/* ------------------------------------------------------------------ */
|
|
12
|
+
import { withToolLogging, formatPaginatedResponse, formatRecord, listContent, getContent, mutateContent, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, paginatedOutput, reservationItemOutput, propertyItemOutput, } from "./shared.js";
|
|
90
13
|
export function registerStayTools(server, client) {
|
|
91
|
-
// -- list_properties --
|
|
92
|
-
server.registerTool("list_properties", {
|
|
93
|
-
title: "List Properties (Stay)",
|
|
94
|
-
description: "List all Stay properties with optional filters. " +
|
|
95
|
-
"Returns properties the authenticated user manages, sorted by name. " +
|
|
96
|
-
"Use active=true to list only active rentals. " +
|
|
97
|
-
"/ Lista todas las propiedades de Stay con filtros opcionales. " +
|
|
98
|
-
"Devuelve las propiedades del usuario autenticado, ordenadas por nombre. " +
|
|
99
|
-
"Usa active=true para listar solo alquileres activos.",
|
|
100
|
-
annotations: READ_ONLY_ANNOTATIONS,
|
|
101
|
-
inputSchema: {
|
|
102
|
-
active: z
|
|
103
|
-
.boolean()
|
|
104
|
-
.optional()
|
|
105
|
-
.describe("Filter by active/inactive status / Filtrar por estado activo/inactivo"),
|
|
106
|
-
type: z
|
|
107
|
-
.string()
|
|
108
|
-
.optional()
|
|
109
|
-
.describe("Filter by property type (apartment, house, room, villa...) / Filtrar por tipo de propiedad"),
|
|
110
|
-
limit: z
|
|
111
|
-
.number().int().min(1).max(100)
|
|
112
|
-
.optional()
|
|
113
|
-
.describe("Max results per page (1-100, default 50) / Resultados por pagina"),
|
|
114
|
-
offset: z
|
|
115
|
-
.number().int().min(0)
|
|
116
|
-
.optional()
|
|
117
|
-
.describe("Number of results to skip / Resultados a saltar"),
|
|
118
|
-
after: z
|
|
119
|
-
.string()
|
|
120
|
-
.optional()
|
|
121
|
-
.describe("Cursor for cursor-based pagination / Cursor de paginacion"),
|
|
122
|
-
},
|
|
123
|
-
outputSchema: paginatedOutput(propertyItemOutput),
|
|
124
|
-
}, async ({ active, type, limit, offset, after }) => withToolLogging("list_properties", async () => {
|
|
125
|
-
const result = await client.listStayProperties({ active, type, limit, offset, after });
|
|
126
|
-
const hints = enrichResponse("stay_properties", "list", result.data);
|
|
127
|
-
return {
|
|
128
|
-
content: [listContent(formatPaginatedResponse("properties", result))],
|
|
129
|
-
structuredContent: { ...result, ...hints },
|
|
130
|
-
};
|
|
131
|
-
}));
|
|
132
|
-
// -- get_property --
|
|
133
|
-
server.registerTool("get_property", {
|
|
134
|
-
title: "Get Property (Stay)",
|
|
135
|
-
description: "Get full details of a Stay property by its ID. " +
|
|
136
|
-
"Returns address, capacity, license number, pricing, and active status. " +
|
|
137
|
-
"/ Obtiene los detalles completos de una propiedad de Stay por su ID. " +
|
|
138
|
-
"Devuelve direccion, capacidad, numero de licencia, precios y estado activo.",
|
|
139
|
-
annotations: READ_ONLY_ANNOTATIONS,
|
|
140
|
-
inputSchema: {
|
|
141
|
-
id: z.string().describe("Property ID / ID de la propiedad"),
|
|
142
|
-
},
|
|
143
|
-
outputSchema: propertyItemOutput,
|
|
144
|
-
}, async ({ id }) => withToolLogging("get_property", async () => {
|
|
145
|
-
const result = await client.getStayProperty(id);
|
|
146
|
-
return {
|
|
147
|
-
content: [getContent(formatRecord("Property", result))],
|
|
148
|
-
structuredContent: result,
|
|
149
|
-
};
|
|
150
|
-
}));
|
|
151
14
|
// -- list_reservations --
|
|
152
15
|
server.registerTool("list_reservations", {
|
|
153
|
-
title: "List Reservations
|
|
154
|
-
description: "List
|
|
155
|
-
"
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
"Ordenadas por fecha de entrada descendente.",
|
|
16
|
+
title: "List Reservations",
|
|
17
|
+
description: "List all reservations for the workspace, with optional filters by " +
|
|
18
|
+
"property, status, or date range. Returns guest, dates, channel, and total. " +
|
|
19
|
+
"/ Lista todas las reservas del espacio de trabajo, con filtros opcionales " +
|
|
20
|
+
"por propiedad, estado o rango de fechas.",
|
|
159
21
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
160
22
|
inputSchema: {
|
|
161
23
|
propertyId: z
|
|
162
24
|
.string()
|
|
163
25
|
.optional()
|
|
164
|
-
.describe("Filter by property ID / Filtrar por
|
|
165
|
-
from: z
|
|
166
|
-
.string()
|
|
167
|
-
.optional()
|
|
168
|
-
.describe("Check-in on or after this date (YYYY-MM-DD) / Fecha de entrada desde"),
|
|
169
|
-
to: z
|
|
170
|
-
.string()
|
|
171
|
-
.optional()
|
|
172
|
-
.describe("Check-in on or before this date (YYYY-MM-DD) / Fecha de entrada hasta"),
|
|
26
|
+
.describe("Filter by property ID / Filtrar por propiedad"),
|
|
173
27
|
status: z
|
|
174
|
-
.enum(["
|
|
28
|
+
.enum(["confirmed", "pending", "cancelled", "completed", "no_show"])
|
|
175
29
|
.optional()
|
|
176
30
|
.describe("Filter by reservation status / Filtrar por estado"),
|
|
177
|
-
|
|
31
|
+
checkInFrom: z
|
|
178
32
|
.string()
|
|
179
33
|
.optional()
|
|
180
|
-
.describe("
|
|
181
|
-
|
|
182
|
-
.
|
|
34
|
+
.describe("Check-in from date YYYY-MM-DD / Entrada desde (YYYY-MM-DD)"),
|
|
35
|
+
checkInTo: z
|
|
36
|
+
.string()
|
|
183
37
|
.optional()
|
|
184
|
-
.describe("
|
|
185
|
-
|
|
186
|
-
.
|
|
38
|
+
.describe("Check-in to date YYYY-MM-DD / Entrada hasta (YYYY-MM-DD)"),
|
|
39
|
+
fields: z
|
|
40
|
+
.string()
|
|
187
41
|
.optional()
|
|
188
|
-
.describe("
|
|
42
|
+
.describe("Comma-separated fields to return / Campos a devolver"),
|
|
43
|
+
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100)"),
|
|
44
|
+
offset: z.number().int().min(0).optional().describe("Offset for pagination / Desplazamiento"),
|
|
189
45
|
after: z
|
|
190
46
|
.string()
|
|
191
47
|
.optional()
|
|
192
48
|
.describe("Cursor for cursor-based pagination / Cursor de paginacion"),
|
|
193
49
|
},
|
|
194
50
|
outputSchema: paginatedOutput(reservationItemOutput),
|
|
195
|
-
}, async (
|
|
196
|
-
const result = await client.
|
|
197
|
-
const hints = enrichResponse("stay_reservations", "list", result.data);
|
|
51
|
+
}, async (args) => withToolLogging("list_reservations", async () => {
|
|
52
|
+
const result = await client.listReservations(args);
|
|
198
53
|
return {
|
|
199
54
|
content: [listContent(formatPaginatedResponse("reservations", result))],
|
|
200
|
-
structuredContent:
|
|
55
|
+
structuredContent: result,
|
|
201
56
|
};
|
|
202
57
|
}));
|
|
203
58
|
// -- get_reservation --
|
|
204
59
|
server.registerTool("get_reservation", {
|
|
205
|
-
title: "Get Reservation
|
|
206
|
-
description: "Get
|
|
207
|
-
"
|
|
208
|
-
"/ Obtiene
|
|
209
|
-
"Devuelve datos del huesped, fechas, importes, canal y estado.",
|
|
60
|
+
title: "Get Reservation",
|
|
61
|
+
description: "Get a single reservation by ID. Returns full booking details: guest, " +
|
|
62
|
+
"property, dates, channel, payment status, and notes. " +
|
|
63
|
+
"/ Obtiene una reserva por ID. Devuelve todos los detalles de la reserva.",
|
|
210
64
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
211
65
|
inputSchema: {
|
|
212
|
-
id: z.string().describe("Reservation ID / ID de
|
|
66
|
+
id: z.string().describe("Reservation ID / ID de reserva"),
|
|
213
67
|
},
|
|
214
68
|
outputSchema: reservationItemOutput,
|
|
215
69
|
}, async ({ id }) => withToolLogging("get_reservation", async () => {
|
|
216
|
-
const result = await client.
|
|
70
|
+
const result = await client.getReservation(id);
|
|
217
71
|
return {
|
|
218
72
|
content: [getContent(formatRecord("Reservation", result))],
|
|
219
73
|
structuredContent: result,
|
|
@@ -221,201 +75,125 @@ export function registerStayTools(server, client) {
|
|
|
221
75
|
}));
|
|
222
76
|
// -- create_reservation --
|
|
223
77
|
server.registerTool("create_reservation", {
|
|
224
|
-
title: "Create Reservation
|
|
225
|
-
description: "Create a new
|
|
226
|
-
"
|
|
227
|
-
"
|
|
228
|
-
"
|
|
78
|
+
title: "Create Reservation",
|
|
79
|
+
description: "Create a new reservation manually (not via channel sync). Requires property ID, " +
|
|
80
|
+
"check-in/check-out dates, and guest count. Optionally provide a guest ID or " +
|
|
81
|
+
"inline guest data to create a new guest. " +
|
|
82
|
+
"/ Crea una nueva reserva manualmente. Requiere propiedad, fechas y numero de huespedes.",
|
|
229
83
|
annotations: CREATE_ANNOTATIONS,
|
|
230
84
|
inputSchema: {
|
|
231
|
-
propertyId: z.string().describe("Property ID / ID de
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
guestPhone: z.string().optional().describe("Guest phone / Telefono del huesped"),
|
|
235
|
-
checkIn: z.string().describe("Check-in date (YYYY-MM-DD) / Fecha de entrada"),
|
|
236
|
-
checkOut: z.string().describe("Check-out date (YYYY-MM-DD) / Fecha de salida"),
|
|
237
|
-
numGuests: z.number().int().min(1).optional().describe("Number of guests / Numero de huespedes"),
|
|
238
|
-
nightlyRate: z.number().optional().describe("Nightly rate in EUR / Precio por noche en EUR"),
|
|
239
|
-
totalAmount: z.number().optional().describe("Total amount in EUR (override auto-calc) / Importe total en EUR"),
|
|
240
|
-
channel: z.string().optional().describe("Booking channel (airbnb, booking, direct...) / Canal de reserva"),
|
|
241
|
-
status: z
|
|
242
|
-
.enum(["pending", "confirmed"])
|
|
85
|
+
propertyId: z.string().describe("Property ID / ID de propiedad"),
|
|
86
|
+
guestId: z
|
|
87
|
+
.string()
|
|
243
88
|
.optional()
|
|
244
|
-
.describe("
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
"
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
numGuests: z.number().int().min(1).optional().describe("Number of guests / Numero de huespedes"),
|
|
272
|
-
nightlyRate: z.number().optional().describe("Nightly rate in EUR / Precio por noche"),
|
|
273
|
-
totalAmount: z.number().optional().describe("Total amount in EUR / Importe total"),
|
|
274
|
-
status: z
|
|
275
|
-
.enum(["pending", "confirmed", "checked_in", "checked_out", "cancelled", "no_show"])
|
|
89
|
+
.describe("Existing guest ID (if known) / ID de huesped existente"),
|
|
90
|
+
guest: z
|
|
91
|
+
.object({
|
|
92
|
+
name: z.string().describe("Guest full name / Nombre completo del huesped"),
|
|
93
|
+
email: z.string().optional().describe("Guest email / Email del huesped"),
|
|
94
|
+
phone: z.string().optional().describe("Guest phone / Telefono del huesped"),
|
|
95
|
+
idDocument: z
|
|
96
|
+
.string()
|
|
97
|
+
.optional()
|
|
98
|
+
.describe("DNI/passport number / Numero de DNI o pasaporte"),
|
|
99
|
+
country: z
|
|
100
|
+
.string()
|
|
101
|
+
.optional()
|
|
102
|
+
.describe("Country ISO 3166-1 alpha-2 (e.g. ES, DE) / Pais"),
|
|
103
|
+
})
|
|
104
|
+
.optional()
|
|
105
|
+
.describe("New guest data (used if guestId not provided) / Datos del nuevo huesped si no se proporciona guestId"),
|
|
106
|
+
checkIn: z.string().describe("Check-in date YYYY-MM-DD / Fecha de entrada"),
|
|
107
|
+
checkOut: z.string().describe("Check-out date YYYY-MM-DD / Fecha de salida"),
|
|
108
|
+
guestCount: z.number().int().min(1).describe("Number of guests / Numero de huespedes"),
|
|
109
|
+
channelId: z
|
|
110
|
+
.string()
|
|
111
|
+
.optional()
|
|
112
|
+
.describe("Booking channel ID (Airbnb, Booking.com, Direct) / Canal de reserva"),
|
|
113
|
+
totalAmount: z
|
|
114
|
+
.number()
|
|
115
|
+
.nonnegative()
|
|
276
116
|
.optional()
|
|
277
|
-
.describe("
|
|
117
|
+
.describe("Total amount in workspace currency / Importe total"),
|
|
118
|
+
currency: z
|
|
119
|
+
.string()
|
|
120
|
+
.optional()
|
|
121
|
+
.describe("ISO 4217 currency (defaults to workspace currency) / Divisa"),
|
|
278
122
|
notes: z.string().optional().describe("Internal notes / Notas internas"),
|
|
279
123
|
},
|
|
280
124
|
outputSchema: reservationItemOutput,
|
|
281
|
-
}, async (
|
|
282
|
-
const result = await client.
|
|
283
|
-
const hints = enrichResponse("stay_reservations", "update", result);
|
|
125
|
+
}, async (args) => withToolLogging("create_reservation", async () => {
|
|
126
|
+
const result = await client.createReservation(args);
|
|
284
127
|
return {
|
|
285
|
-
content: [mutateContent(formatRecord("Reservation
|
|
286
|
-
structuredContent:
|
|
128
|
+
content: [mutateContent(formatRecord("Reservation created", result))],
|
|
129
|
+
structuredContent: result,
|
|
287
130
|
};
|
|
288
131
|
}));
|
|
289
|
-
// --
|
|
290
|
-
server.registerTool("
|
|
291
|
-
title: "List
|
|
292
|
-
description: "List
|
|
293
|
-
"
|
|
294
|
-
"
|
|
295
|
-
"
|
|
296
|
-
"Estados: pending, in_progress, done, skipped.",
|
|
132
|
+
// -- list_properties --
|
|
133
|
+
server.registerTool("list_properties", {
|
|
134
|
+
title: "List Properties",
|
|
135
|
+
description: "List all rental properties for the workspace. Returns name, address, " +
|
|
136
|
+
"capacity, owner info, and license number. " +
|
|
137
|
+
"/ Lista todas las propiedades de alquiler vacacional. Devuelve nombre, " +
|
|
138
|
+
"direccion, capacidad, datos del propietario y numero de licencia.",
|
|
297
139
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
298
140
|
inputSchema: {
|
|
299
|
-
|
|
300
|
-
.enum(["pending", "in_progress", "done", "skipped"])
|
|
301
|
-
.optional()
|
|
302
|
-
.describe("Filter by task status / Filtrar por estado de la tarea"),
|
|
303
|
-
propertyId: z
|
|
141
|
+
q: z
|
|
304
142
|
.string()
|
|
305
143
|
.optional()
|
|
306
|
-
.describe("
|
|
307
|
-
|
|
308
|
-
.
|
|
144
|
+
.describe("Search by name or address / Buscar por nombre o direccion"),
|
|
145
|
+
isActive: z
|
|
146
|
+
.boolean()
|
|
309
147
|
.optional()
|
|
310
|
-
.describe("
|
|
311
|
-
|
|
148
|
+
.describe("Filter by active status / Filtrar por activas"),
|
|
149
|
+
fields: z
|
|
312
150
|
.string()
|
|
313
151
|
.optional()
|
|
314
|
-
.describe("
|
|
315
|
-
limit: z
|
|
316
|
-
|
|
317
|
-
.optional()
|
|
318
|
-
.describe("Max results per page / Resultados por pagina"),
|
|
319
|
-
offset: z
|
|
320
|
-
.number().int().min(0)
|
|
321
|
-
.optional()
|
|
322
|
-
.describe("Results to skip / Resultados a saltar"),
|
|
152
|
+
.describe("Comma-separated fields to return / Campos a devolver"),
|
|
153
|
+
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100)"),
|
|
154
|
+
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
323
155
|
after: z
|
|
324
156
|
.string()
|
|
325
157
|
.optional()
|
|
326
158
|
.describe("Cursor for cursor-based pagination / Cursor de paginacion"),
|
|
327
159
|
},
|
|
328
|
-
outputSchema: paginatedOutput(
|
|
329
|
-
}, async (
|
|
330
|
-
const result = await client.
|
|
331
|
-
return {
|
|
332
|
-
content: [listContent(formatPaginatedResponse("cleaning tasks", result))],
|
|
333
|
-
structuredContent: result,
|
|
334
|
-
};
|
|
335
|
-
}));
|
|
336
|
-
// -- get_occupancy_stats --
|
|
337
|
-
server.registerTool("get_occupancy_stats", {
|
|
338
|
-
title: "Get Occupancy Stats (Stay)",
|
|
339
|
-
description: "Get occupancy rate, total revenue, ADR (average daily rate), and RevPAR for a date range. " +
|
|
340
|
-
"Optionally filtered to a specific property. " +
|
|
341
|
-
"Returns per-property breakdown when propertyId is not specified. " +
|
|
342
|
-
"/ Obtiene tasa de ocupacion, ingresos totales, ADR y RevPAR para un rango de fechas. " +
|
|
343
|
-
"Filtro opcional por propiedad. Devuelve desglose por propiedad si no se especifica.",
|
|
344
|
-
annotations: READ_ONLY_ANNOTATIONS,
|
|
345
|
-
inputSchema: {
|
|
346
|
-
from: z.string().describe("Start date (YYYY-MM-DD) / Fecha de inicio"),
|
|
347
|
-
to: z.string().describe("End date (YYYY-MM-DD) / Fecha de fin"),
|
|
348
|
-
propertyId: z
|
|
349
|
-
.string()
|
|
350
|
-
.optional()
|
|
351
|
-
.describe("Limit to a specific property / Limitar a una propiedad especifica"),
|
|
352
|
-
},
|
|
353
|
-
outputSchema: occupancyStatsOutput,
|
|
354
|
-
}, async ({ from, to, propertyId }) => withToolLogging("get_occupancy_stats", async () => {
|
|
355
|
-
const result = await client.getStayOccupancyStats({ from, to, propertyId });
|
|
160
|
+
outputSchema: paginatedOutput(propertyItemOutput),
|
|
161
|
+
}, async (args) => withToolLogging("list_properties", async () => {
|
|
162
|
+
const result = await client.listProperties(args);
|
|
356
163
|
return {
|
|
357
|
-
content: [
|
|
164
|
+
content: [listContent(formatPaginatedResponse("properties", result))],
|
|
358
165
|
structuredContent: result,
|
|
359
166
|
};
|
|
360
167
|
}));
|
|
361
|
-
// --
|
|
362
|
-
server.registerTool("
|
|
363
|
-
title: "Sync
|
|
364
|
-
description: "Trigger
|
|
365
|
-
"
|
|
366
|
-
"
|
|
367
|
-
"/
|
|
368
|
-
"El canal debe estar configurado en los ajustes de la propiedad. " +
|
|
369
|
-
"Devuelve el resultado incluyendo el numero de reservas nuevas/actualizadas/eliminadas.",
|
|
168
|
+
// -- sync_channel --
|
|
169
|
+
server.registerTool("sync_channel", {
|
|
170
|
+
title: "Sync Channel",
|
|
171
|
+
description: "Trigger a manual sync of a booking channel (Airbnb, Booking.com, etc.). " +
|
|
172
|
+
"Pulls new reservations and/or pushes calendar updates. Returns sync status and counts. " +
|
|
173
|
+
"/ Dispara sincronizacion manual de un canal de reservas. Importa reservas nuevas " +
|
|
174
|
+
"y/o envia actualizaciones de calendario.",
|
|
370
175
|
annotations: UPDATE_ANNOTATIONS,
|
|
371
176
|
inputSchema: {
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
outputSchema: actionResultOutput,
|
|
376
|
-
}, async ({ propertyId, channelId }) => withToolLogging("sync_ical_channel", async () => {
|
|
377
|
-
const result = await client.syncStayIcalChannel(propertyId, channelId);
|
|
378
|
-
return {
|
|
379
|
-
content: [mutateContent(formatRecord("iCal sync result", result))],
|
|
380
|
-
structuredContent: result,
|
|
381
|
-
};
|
|
382
|
-
}));
|
|
383
|
-
// -- get_compliance_status --
|
|
384
|
-
server.registerTool("get_compliance_status", {
|
|
385
|
-
title: "Get Guest Compliance Status (Stay)",
|
|
386
|
-
description: "Get an overview of guest compliance status across properties. " +
|
|
387
|
-
"Returns counts of verified, pending, and expired guest documents. " +
|
|
388
|
-
"Critical for Spanish STR legal compliance (SES.HOSPEDAJES / parte de viajeros). " +
|
|
389
|
-
"Optionally scope to a single property. " +
|
|
390
|
-
"/ Obtiene un resumen del estado de cumplimiento de huespedes en las propiedades. " +
|
|
391
|
-
"Devuelve conteos de documentos verificados, pendientes y caducados. " +
|
|
392
|
-
"Critico para cumplimiento legal STR espanol (SES.HOSPEDAJES / parte de viajeros).",
|
|
393
|
-
annotations: READ_ONLY_ANNOTATIONS,
|
|
394
|
-
inputSchema: {
|
|
395
|
-
propertyId: z
|
|
396
|
-
.string()
|
|
177
|
+
channelId: z.string().describe("Channel ID / ID de canal"),
|
|
178
|
+
direction: z
|
|
179
|
+
.enum(["pull", "push", "both"])
|
|
397
180
|
.optional()
|
|
398
|
-
.describe("
|
|
399
|
-
|
|
400
|
-
.string()
|
|
401
|
-
.optional()
|
|
402
|
-
.describe("Check-in on or after this date (YYYY-MM-DD) / Fecha de entrada desde"),
|
|
403
|
-
to: z
|
|
404
|
-
.string()
|
|
405
|
-
.optional()
|
|
406
|
-
.describe("Check-in on or before this date (YYYY-MM-DD) / Fecha de entrada hasta"),
|
|
181
|
+
.describe("Sync direction: pull (import reservations), push (export calendar), or both (default). " +
|
|
182
|
+
"/ Direccion: pull (importar), push (exportar) o both (ambas, por defecto)."),
|
|
407
183
|
},
|
|
408
|
-
outputSchema:
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
}
|
|
184
|
+
outputSchema: z.object({
|
|
185
|
+
channelId: z.string(),
|
|
186
|
+
status: z.enum(["ok", "partial", "failed"]),
|
|
187
|
+
pulledCount: z.number().int().nonnegative(),
|
|
188
|
+
pushedCount: z.number().int().nonnegative(),
|
|
189
|
+
errors: z.array(z.string()).optional(),
|
|
190
|
+
lastSyncAt: z.string(),
|
|
191
|
+
}),
|
|
192
|
+
}, async ({ channelId, direction }) => withToolLogging("sync_channel", async () => {
|
|
193
|
+
const result = await client.syncChannel(channelId, direction ?? "both");
|
|
416
194
|
return {
|
|
417
|
-
content: [
|
|
418
|
-
structuredContent:
|
|
195
|
+
content: [mutateContent(formatRecord("Channel sync", result))],
|
|
196
|
+
structuredContent: result,
|
|
419
197
|
};
|
|
420
198
|
}));
|
|
421
199
|
}
|
package/dist/tools/stay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stay.js","sourceRoot":"","sources":["../../src/tools/stay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stay.js","sourceRoot":"","sources":["../../src/tools/stay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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 type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
16
|
+
import type { IFrihetClient } from "../client-interface.js";
|
|
17
|
+
export declare function registerTimeTools(server: McpServer, client: IFrihetClient): void;
|
|
18
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/tools/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAgB5D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAiJhF"}
|