@omnifox/mcp-server 0.2.2 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAQ/E,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,SAAS,CAuCpE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAS/E,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,SAAS,CAwCpE"}
package/dist/server.js CHANGED
@@ -8,6 +8,7 @@ import { registerMessagingTools } from "./tools/messaging.js";
8
8
  import { registerConversationTools } from "./tools/conversations.js";
9
9
  import { registerCommentTools } from "./tools/comments.js";
10
10
  import { registerWorkspaceTools } from "./tools/workspace.js";
11
+ import { registerCalendarTools } from "./tools/calendar.js";
11
12
  import { registerExtraTools } from "./tools/extras.js";
12
13
  export const SERVER_NAME = "omnifox-mcp-server";
13
14
  export const SERVER_VERSION = "0.2.2";
@@ -45,6 +46,7 @@ export function buildServer(opts = {}) {
45
46
  registerConversationTools(server, client);
46
47
  registerCommentTools(server, client);
47
48
  registerWorkspaceTools(server, client);
49
+ registerCalendarTools(server, client);
48
50
  registerExtraTools(server, client);
49
51
  return server;
50
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAOtC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B,EAAE;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,cAAc;KACxB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACZ;QACD,YAAY,EACV,kEAAkE;YAClE,yEAAyE;YACzE,+CAA+C;YAC/C,sEAAsE;YACtE,uEAAuE;YACvE,2DAA2D;YAC3D,wEAAwE;YACxE,wEAAwE;YACxE,wEAAwE;YACxE,qCAAqC;YACrC,yEAAyE;YACzE,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;KAC5E,CACF,CAAC;IAEF,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAOtC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B,EAAE;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,cAAc;KACxB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACZ;QACD,YAAY,EACV,kEAAkE;YAClE,yEAAyE;YACzE,+CAA+C;YAC/C,sEAAsE;YACtE,uEAAuE;YACvE,2DAA2D;YAC3D,wEAAwE;YACxE,wEAAwE;YACxE,wEAAwE;YACxE,qCAAqC;YACrC,yEAAyE;YACzE,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;KAC5E,CACF,CAAC;IAEF,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Calendar tools — citas, horarios libres y quién atiende.
3
+ *
4
+ * Hasta ahora el MCP sabía de contactos, conversaciones y mensajes pero no
5
+ * tenía nada de calendario: un asistente conectado por MCP podía leer una
6
+ * conversación entera sobre una cita y no podía ni consultar si había hueco.
7
+ *
8
+ * Los nombres de campo son los que valida la API — snake_case, igual que en el
9
+ * resto del paquete.
10
+ *
11
+ * ── UNA REGLA ───────────────────────────────────────────────────────────
12
+ * Nada de inventar horarios: `list_free_slots` primero, y recién con un
13
+ * `start` devuelto por él se llama a `book_appointment`. Las descripciones lo
14
+ * dicen explícitamente porque son lo único que el modelo lee antes de decidir.
15
+ */
16
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
17
+ import type { OmnifoxClient } from "../omnifox/client.js";
18
+ export declare function registerCalendarTools(server: McpServer, client: OmnifoxClient): void;
19
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAM1D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CA4JpF"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Calendar tools — citas, horarios libres y quién atiende.
3
+ *
4
+ * Hasta ahora el MCP sabía de contactos, conversaciones y mensajes pero no
5
+ * tenía nada de calendario: un asistente conectado por MCP podía leer una
6
+ * conversación entera sobre una cita y no podía ni consultar si había hueco.
7
+ *
8
+ * Los nombres de campo son los que valida la API — snake_case, igual que en el
9
+ * resto del paquete.
10
+ *
11
+ * ── UNA REGLA ───────────────────────────────────────────────────────────
12
+ * Nada de inventar horarios: `list_free_slots` primero, y recién con un
13
+ * `start` devuelto por él se llama a `book_appointment`. Las descripciones lo
14
+ * dicen explícitamente porque son lo único que el modelo lee antes de decidir.
15
+ */
16
+ import { z } from "zod";
17
+ const ok = (data) => ({
18
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
19
+ });
20
+ export function registerCalendarTools(server, client) {
21
+ server.tool("list_calendars", "List the workspace's booking calendars. Use it once to learn the calendar ids before asking for slots.", {}, async () => ok(await client.get("/calendar/calendars")));
22
+ server.tool("list_services", "List bookable services (appointment types) with their duration, capacity and booking policies.", {}, async () => ok(await client.get("/calendar/services")));
23
+ server.tool("list_resources", "List the people, rooms and equipment that appointments occupy — each with its own working hours. " +
24
+ "Use it when the customer asks for someone specific ('with Dr. Pérez') or for a particular room.", {
25
+ kind: z.enum(["person", "space", "equipment"]).optional(),
26
+ }, async (params) => ok(await client.get("/calendar/resources", params)));
27
+ server.tool("list_sites", "List the locations (branches) where the business works.", {}, async () => ok(await client.get("/calendar/sites")));
28
+ server.tool("list_free_slots", "Free appointment slots for a service between two dates. ALWAYS call this before offering or booking " +
29
+ "a time — never invent one. Each slot names the resource that covers it, so you can tell the " +
30
+ "customer who they would be seeing.", {
31
+ service_id: z.number().int().describe("Which service. See list_services."),
32
+ from: z.string().describe("Start of the search window (ISO-8601 or YYYY-MM-DD)."),
33
+ to: z.string().describe("End of the search window (ISO-8601 or YYYY-MM-DD)."),
34
+ resource_ids: z
35
+ .array(z.number().int())
36
+ .optional()
37
+ .describe("Limit to these resources — the customer asked for someone specific."),
38
+ site_id: z.number().int().optional().describe("Limit to one location. See list_sites."),
39
+ }, async (params) => ok(await client.get("/calendar/resources/availability", params)));
40
+ server.tool("book_appointment", "Book an appointment. Pass a `starts_at` exactly as returned by list_free_slots. " +
41
+ "If the slot was taken in the meantime you get a 409 — offer another time instead of retrying.", {
42
+ calendar_id: z.number().int(),
43
+ starts_at: z.string().describe("Exact slot start, as returned by list_free_slots."),
44
+ service_id: z.number().int().optional(),
45
+ contact_id: z.number().int().optional().describe("Who the appointment is for."),
46
+ title: z.string().max(255).optional(),
47
+ notes: z.string().optional(),
48
+ resource_ids: z
49
+ .array(z.number().int())
50
+ .optional()
51
+ .describe("Which resources it occupies (the professional, the room)."),
52
+ capacity: z.number().int().min(1).optional().describe(">1 turns it into a class with seats."),
53
+ allow_waitlist: z.boolean().optional(),
54
+ }, async (params) => ok(await client.post("/calendar/appointments", params)));
55
+ server.tool("list_appointments", "List appointments in a date range, optionally for one calendar.", {
56
+ from: z.string().optional(),
57
+ to: z.string().optional(),
58
+ calendar_id: z.number().int().optional(),
59
+ }, async (params) => ok(await client.get("/calendar/appointments", params)));
60
+ server.tool("reschedule_appointment", "Move an appointment to a new start time, keeping its duration. Returns 409 if the new slot is busy.", {
61
+ appointment_id: z.number().int(),
62
+ starts_at: z.string().describe("New start, as returned by list_free_slots."),
63
+ }, async ({ appointment_id, starts_at }) => ok(await client.put(`/calendar/appointments/${appointment_id}`, { starts_at })));
64
+ server.tool("cancel_appointment", "Cancel an appointment. Everyone enrolled is cancelled too, and the freed slot fires the " +
65
+ "'slot freed' automation so the business can offer it to someone else.", {
66
+ appointment_id: z.number().int(),
67
+ reason: z.string().max(255).optional(),
68
+ }, async ({ appointment_id, reason }) => ok(await client.post(`/calendar/appointments/${appointment_id}/cancel`, { reason })));
69
+ server.tool("list_enrollments", "Who is signed up for an appointment or class — including the waiting list, attendance and payment " +
70
+ "status of each person.", { appointment_id: z.number().int() }, async ({ appointment_id }) => ok(await client.get(`/calendar/appointments/${appointment_id}/enrollments`)));
71
+ server.tool("enroll_contact", "Sign a contact up for an appointment or class. If it is full and the event allows it, they go on " +
72
+ "the waiting list and move up automatically when somebody cancels.", {
73
+ appointment_id: z.number().int(),
74
+ contact_id: z.number().int().optional(),
75
+ name: z.string().max(160).optional().describe("For someone who is not a contact (a class roster)."),
76
+ phone: z.string().max(32).optional(),
77
+ email: z.string().email().max(191).optional(),
78
+ allow_waitlist: z.boolean().optional().describe("Accept the waiting list if it is full."),
79
+ }, async ({ appointment_id, ...body }) => ok(await client.post(`/calendar/appointments/${appointment_id}/enrollments`, body)));
80
+ server.tool("mark_attendance", "Mark whether an enrolled person showed up. Per person, not per event: in a class of twelve, one " +
81
+ "person missing is not twelve people missing.", {
82
+ enrollment_id: z.number().int(),
83
+ status: z.enum(["attended", "no_show"]),
84
+ }, async ({ enrollment_id, status }) => ok(await client.post(`/calendar/enrollments/${enrollment_id}/attendance`, { status })));
85
+ server.tool("cancel_enrollment", "Take one person off an appointment or class without cancelling it for everybody. Frees their seat " +
86
+ "and moves up whoever was first on the waiting list.", {
87
+ enrollment_id: z.number().int(),
88
+ reason: z.string().max(255).optional(),
89
+ }, async ({ enrollment_id, reason }) => ok(await client.post(`/calendar/enrollments/${enrollment_id}/cancel`, { reason })));
90
+ }
91
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnifox/mcp-server",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "Official Omnifox.io Model Context Protocol (MCP) server \u2014 48 tools over the Omnifox v1 REST API for Claude, Cursor, Continue and any MCP client. Every tool verified end-to-end against a live workspace.",
5
5
  "license": "MIT",
6
6
  "type": "module",