@omnifox/mcp-server 0.2.1 → 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.
- package/README.md +1 -1
- package/dist/omnifox/client.js +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/calendar.d.ts +19 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +91 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/conversations.d.ts.map +1 -1
- package/dist/tools/conversations.js +24 -2
- package/dist/tools/conversations.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -136,7 +136,7 @@ In Composio's MCP integration UI, register the URL `https://your-host.example.co
|
|
|
136
136
|
| `list_conversations` | List the conversations of the workspace, most recently updated first. Filter by status to find what needs attention. |
|
|
137
137
|
| `get_conversation` | Fetch one conversation with its contact, channel, status and assignment. Start here when you have an id and need context before acting. |
|
|
138
138
|
| `get_conversation_sending_window` | Whether free-form text can still be sent, or only an approved template. WhatsApp and TikTok close 24h after the customer's last message; other channels always answer open. Check it before send_message on WhatsApp. |
|
|
139
|
-
| `assign_conversation` | Assign a conversation to a user, a team or an AI agent — or unassign it. |
|
|
139
|
+
| `assign_conversation` | Assign a conversation to a user, a team or an AI agent — or unassign it. Assigning to a team applies that team's distribution rule; `assign_logic` / `only_online` / `max_open` override it for one call. |
|
|
140
140
|
| `assign_contact_conversation` | Assign the contact's currently OPEN conversation. Use this when you know the contact but not the conversation id. |
|
|
141
141
|
| `update_conversation_status` | Reopen, resolve or close a conversation. Closing accepts a resolution label and free-text notes that stay in the thread. |
|
|
142
142
|
| `update_contact_conversation_status` | Set the status of the contact's open conversation when you only know the contact. |
|
package/dist/omnifox/client.js
CHANGED
|
@@ -23,7 +23,7 @@ export class OmnifoxApiError extends Error {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
const DEFAULT_BASE_URL = "https://omnifox.io/api/v1";
|
|
26
|
-
const SERVER_VERSION = "0.2.
|
|
26
|
+
const SERVER_VERSION = "0.2.2";
|
|
27
27
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
28
28
|
const DEFAULT_MAX_RETRIES = 3;
|
|
29
29
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
package/dist/server.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
5
|
import { OmnifoxClient, type OmnifoxClientOptions } from "./omnifox/client.js";
|
|
6
6
|
export declare const SERVER_NAME = "omnifox-mcp-server";
|
|
7
|
-
export declare const SERVER_VERSION = "0.2.
|
|
7
|
+
export declare const SERVER_VERSION = "0.2.2";
|
|
8
8
|
export interface BuildServerOptions {
|
|
9
9
|
client?: OmnifoxClient;
|
|
10
10
|
clientOptions?: OmnifoxClientOptions;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -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;
|
|
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,9 +8,10 @@ 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
|
-
export const SERVER_VERSION = "0.2.
|
|
14
|
+
export const SERVER_VERSION = "0.2.2";
|
|
14
15
|
/**
|
|
15
16
|
* Construct an Omnifox MCP server with every tool wired up.
|
|
16
17
|
* Pass `client` to inject a pre-configured / mocked client (useful for tests).
|
|
@@ -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
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/tools/conversations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAU1D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/tools/conversations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAU1D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAkLxF"}
|
|
@@ -31,7 +31,10 @@ export function registerConversationTools(server, client) {
|
|
|
31
31
|
"answers open:true. Call this BEFORE send_message on a WhatsApp thread — sending into a closed " +
|
|
32
32
|
"window fails at Meta. When it is closed, use send_template instead. The window belongs to the " +
|
|
33
33
|
"contact+channel pair, so reopening the conversation does not reset it.", { id: conversationId }, async ({ id }) => ok(await client.get(`/conversations/${encodeURIComponent(String(id))}/window-status`)));
|
|
34
|
-
server.tool("assign_conversation", "Assign a conversation to a user, a team or an AI agent — or unassign it."
|
|
34
|
+
server.tool("assign_conversation", "Assign a conversation to a user, a team or an AI agent — or unassign it. " +
|
|
35
|
+
"Assigning to a TEAM applies that team's own distribution rule: 'shared' leaves it in the team " +
|
|
36
|
+
"inbox with no owner, while round-robin / least-load / first-available also pick a person. " +
|
|
37
|
+
"The three optional fields below override that rule for this one call without changing the team.", {
|
|
35
38
|
id: conversationId,
|
|
36
39
|
assignee_type: z
|
|
37
40
|
.enum(["user", "team", "ai_agent", "none"])
|
|
@@ -41,9 +44,28 @@ export function registerConversationTools(server, client) {
|
|
|
41
44
|
.int()
|
|
42
45
|
.optional()
|
|
43
46
|
.describe("Id of the user / team / AI agent. Omit when assignee_type is 'none'."),
|
|
44
|
-
|
|
47
|
+
assign_logic: z
|
|
48
|
+
.enum(["shared", "round_robin", "least_load", "first_available"])
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("Team only. How to pick an owner inside the team, for this call only. Omit to use the team's own setting."),
|
|
51
|
+
only_online: z
|
|
52
|
+
.boolean()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Team only. Skip members who are not connected right now."),
|
|
55
|
+
max_open: z
|
|
56
|
+
.number()
|
|
57
|
+
.int()
|
|
58
|
+
.min(1)
|
|
59
|
+
.optional()
|
|
60
|
+
.describe("Team only. Skip members who already have this many open conversations."),
|
|
61
|
+
}, async ({ id, assignee_type, assignee_id, assign_logic, only_online, max_open }) => ok(await client.post(`/conversations/${encodeURIComponent(String(id))}/assign`, {
|
|
45
62
|
assignee_type,
|
|
46
63
|
...(assignee_id !== undefined ? { assignee_id } : {}),
|
|
64
|
+
// Only what the caller set: omitting only_online means "keep the
|
|
65
|
+
// team's setting", which differs from sending it as false.
|
|
66
|
+
...(assign_logic !== undefined ? { assign_logic } : {}),
|
|
67
|
+
...(only_online !== undefined ? { only_online } : {}),
|
|
68
|
+
...(max_open !== undefined ? { max_open } : {}),
|
|
47
69
|
})));
|
|
48
70
|
server.tool("assign_contact_conversation", "Assign the contact's currently OPEN conversation. Use this when you know the contact but not the conversation id.", {
|
|
49
71
|
identifier: z.string().min(1).describe("Contact id or kind:value selector."),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/tools/conversations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,EAAE,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;CAC1E,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC;KACrB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;KAC/D,QAAQ,CAAC,iCAAiC,CAAC,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAqB;IAChF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,sHAAsH,EACtH;QACE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;aAC1D,QAAQ,EAAE;aACV,QAAQ,CAAC,6BAA6B,CAAC;QAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KACzC,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CACpD,EAAE,CACA,MAAM,MAAM,CAAC,GAAG,CACd,gBAAgB,EAChB,MAAM,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAC9E,CACF,CACJ,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,yIAAyI,EACzI,EAAE,EAAE,EAAE,cAAc,EAAE,EACtB,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3F,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iCAAiC,EACjC,kGAAkG;QAChG,mGAAmG;QACnG,gGAAgG;QAChG,gGAAgG;QAChG,wEAAwE,EAC1E,EAAE,EAAE,EAAE,cAAc,EAAE,EACtB,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CACf,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CACzF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/tools/conversations.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.
|
|
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",
|