@intangle/mcp-server 2.5.6 → 2.6.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/dist/index.js +132 -9
- package/dist/tool-definitions.js +381 -55
- package/index.ts +199 -9
- package/package.json +1 -1
- package/tool-definitions.ts +430 -55
package/dist/index.js
CHANGED
|
@@ -272,9 +272,44 @@ try {
|
|
|
272
272
|
const { id, ids } = args;
|
|
273
273
|
return makeApiCall("fetch", { id, ids });
|
|
274
274
|
}
|
|
275
|
+
async function handleFetchConversationMessages(args) {
|
|
276
|
+
const { space_id, conversation_id } = args;
|
|
277
|
+
if (!space_id || !conversation_id) {
|
|
278
|
+
throw new Error("space_id and conversation_id are required");
|
|
279
|
+
}
|
|
280
|
+
return makeApiCall("conversation-messages", args);
|
|
281
|
+
}
|
|
282
|
+
async function handleSubscribeConversation(args) {
|
|
283
|
+
const { space_id, conversation_id } = args;
|
|
284
|
+
if (!space_id || !conversation_id) {
|
|
285
|
+
throw new Error("space_id and conversation_id are required");
|
|
286
|
+
}
|
|
287
|
+
return makeApiCall("conversation-subscribe", args);
|
|
288
|
+
}
|
|
289
|
+
async function handleConversationInbox(args) {
|
|
290
|
+
const { space_id } = args;
|
|
291
|
+
if (!space_id) {
|
|
292
|
+
throw new Error("space_id is required");
|
|
293
|
+
}
|
|
294
|
+
return makeApiCall("conversation-inbox", args);
|
|
295
|
+
}
|
|
296
|
+
async function handleMarkConversationRead(args) {
|
|
297
|
+
const { space_id, conversation_id } = args;
|
|
298
|
+
if (!space_id || !conversation_id) {
|
|
299
|
+
throw new Error("space_id and conversation_id are required");
|
|
300
|
+
}
|
|
301
|
+
return makeApiCall("conversation-read", args);
|
|
302
|
+
}
|
|
275
303
|
async function handleViewSpaces() {
|
|
276
304
|
return makeApiCall("list-spaces", {});
|
|
277
305
|
}
|
|
306
|
+
async function handleViewGroups(args) {
|
|
307
|
+
const { space_id } = args;
|
|
308
|
+
if (!space_id) {
|
|
309
|
+
throw new Error("space_id is required. Use view_spaces to see available options.");
|
|
310
|
+
}
|
|
311
|
+
return makeApiCall("view-groups", { space_id });
|
|
312
|
+
}
|
|
278
313
|
async function handleViewProjects(args) {
|
|
279
314
|
const { space_id } = args;
|
|
280
315
|
if (!space_id) {
|
|
@@ -287,11 +322,64 @@ try {
|
|
|
287
322
|
if (!project_id && !slug) {
|
|
288
323
|
throw new Error("Either project_id or slug (with space_id) is required. Use view_projects to get valid IDs.");
|
|
289
324
|
}
|
|
290
|
-
if (
|
|
291
|
-
throw new Error("space_id is required
|
|
325
|
+
if (!space_id) {
|
|
326
|
+
throw new Error("space_id is required. Use view_spaces to see available options.");
|
|
292
327
|
}
|
|
293
328
|
return makeApiCall("view-project", { project_id, space_id, slug });
|
|
294
329
|
}
|
|
330
|
+
async function handleCreateGroup(args) {
|
|
331
|
+
const { space_id, name } = args;
|
|
332
|
+
if (!space_id || !name) {
|
|
333
|
+
throw new Error("space_id and name are required");
|
|
334
|
+
}
|
|
335
|
+
return makeApiCall("create-group", { space_id, name });
|
|
336
|
+
}
|
|
337
|
+
async function handleRenameGroup(args) {
|
|
338
|
+
const { space_id, group_id, name } = args;
|
|
339
|
+
if (!space_id || !group_id || !name) {
|
|
340
|
+
throw new Error("space_id, group_id, and name are required");
|
|
341
|
+
}
|
|
342
|
+
return makeApiCall("rename-group", { space_id, group_id, name });
|
|
343
|
+
}
|
|
344
|
+
async function handleDeleteGroup(args) {
|
|
345
|
+
const { space_id, group_id } = args;
|
|
346
|
+
if (!space_id || !group_id) {
|
|
347
|
+
throw new Error("space_id and group_id are required");
|
|
348
|
+
}
|
|
349
|
+
return makeApiCall("delete-group", { space_id, group_id });
|
|
350
|
+
}
|
|
351
|
+
async function handleCreateProject(args) {
|
|
352
|
+
const { space_id, name, group_id } = args;
|
|
353
|
+
if (!space_id || !name) {
|
|
354
|
+
throw new Error("space_id and name are required");
|
|
355
|
+
}
|
|
356
|
+
return makeApiCall("create-project", { space_id, name, group_id });
|
|
357
|
+
}
|
|
358
|
+
async function handleRenameProject(args) {
|
|
359
|
+
const { space_id, project_id, name } = args;
|
|
360
|
+
if (!space_id || !project_id || !name) {
|
|
361
|
+
throw new Error("space_id, project_id, and name are required");
|
|
362
|
+
}
|
|
363
|
+
return makeApiCall("rename-project", { space_id, project_id, name });
|
|
364
|
+
}
|
|
365
|
+
async function handleDeleteProject(args) {
|
|
366
|
+
const { space_id, project_id } = args;
|
|
367
|
+
if (!space_id || !project_id) {
|
|
368
|
+
throw new Error("space_id and project_id are required");
|
|
369
|
+
}
|
|
370
|
+
return makeApiCall("delete-project", { space_id, project_id });
|
|
371
|
+
}
|
|
372
|
+
async function handleAssignProjectToGroup(args) {
|
|
373
|
+
const { space_id, project_id, group_id } = args;
|
|
374
|
+
if (!space_id || !project_id) {
|
|
375
|
+
throw new Error("space_id and project_id are required");
|
|
376
|
+
}
|
|
377
|
+
return makeApiCall("assign-project-to-group", {
|
|
378
|
+
space_id,
|
|
379
|
+
project_id,
|
|
380
|
+
group_id,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
295
383
|
async function handleCreateSpace(args) {
|
|
296
384
|
return makeApiCall("create-space", args);
|
|
297
385
|
}
|
|
@@ -374,16 +462,51 @@ try {
|
|
|
374
462
|
case "fetch_items":
|
|
375
463
|
result = await handleFetch(args);
|
|
376
464
|
break;
|
|
465
|
+
case "fetch_conversation_messages":
|
|
466
|
+
result = await handleFetchConversationMessages(args);
|
|
467
|
+
break;
|
|
468
|
+
case "subscribe_conversation":
|
|
469
|
+
result = await handleSubscribeConversation(args);
|
|
470
|
+
break;
|
|
471
|
+
case "list_conversation_inbox":
|
|
472
|
+
result = await handleConversationInbox(args);
|
|
473
|
+
break;
|
|
474
|
+
case "mark_conversation_read":
|
|
475
|
+
result = await handleMarkConversationRead(args);
|
|
476
|
+
break;
|
|
377
477
|
case "view_spaces":
|
|
378
478
|
result = await handleViewSpaces();
|
|
379
479
|
break;
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
480
|
+
case "view_groups":
|
|
481
|
+
result = await handleViewGroups(args);
|
|
482
|
+
break;
|
|
483
|
+
case "create_group":
|
|
484
|
+
result = await handleCreateGroup(args);
|
|
485
|
+
break;
|
|
486
|
+
case "rename_group":
|
|
487
|
+
result = await handleRenameGroup(args);
|
|
488
|
+
break;
|
|
489
|
+
case "delete_group":
|
|
490
|
+
result = await handleDeleteGroup(args);
|
|
491
|
+
break;
|
|
492
|
+
case "view_projects":
|
|
493
|
+
result = await handleViewProjects(args);
|
|
494
|
+
break;
|
|
495
|
+
case "view_project":
|
|
496
|
+
result = await handleViewProject(args);
|
|
497
|
+
break;
|
|
498
|
+
case "create_project":
|
|
499
|
+
result = await handleCreateProject(args);
|
|
500
|
+
break;
|
|
501
|
+
case "rename_project":
|
|
502
|
+
result = await handleRenameProject(args);
|
|
503
|
+
break;
|
|
504
|
+
case "delete_project":
|
|
505
|
+
result = await handleDeleteProject(args);
|
|
506
|
+
break;
|
|
507
|
+
case "assign_project_to_group":
|
|
508
|
+
result = await handleAssignProjectToGroup(args);
|
|
509
|
+
break;
|
|
387
510
|
case "create_space":
|
|
388
511
|
result = await handleCreateSpace(args);
|
|
389
512
|
break;
|
package/dist/tool-definitions.js
CHANGED
|
@@ -43,50 +43,360 @@ const TOOL_DEFINITIONS = [
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
46
|
+
{
|
|
47
|
+
name: "fetch_conversation_messages",
|
|
48
|
+
title: "Fetch Conversation Messages",
|
|
49
|
+
description: "Read persisted messages from a conversation/chat summary. Useful for polling shared threads after async `message` calls or when multiple participants are collaborating in the same conversation. Returns stable message IDs and timestamps so callers can dedupe and continue from `next_cursor`.",
|
|
50
|
+
inputSchema: {
|
|
51
|
+
type: "object",
|
|
52
|
+
properties: {
|
|
53
|
+
space_id: {
|
|
54
|
+
type: "string",
|
|
55
|
+
description: "REQUIRED: Space containing the conversation (use view_spaces first)."
|
|
56
|
+
},
|
|
57
|
+
conversation_id: {
|
|
58
|
+
type: "string",
|
|
59
|
+
description: "REQUIRED: Chat summary / conversation ID to read (e.g. 'summary_123...')."
|
|
60
|
+
},
|
|
61
|
+
organization_id: {
|
|
62
|
+
type: "string",
|
|
63
|
+
description: "Optional Clerk org ID when the space belongs to an organization graph."
|
|
64
|
+
},
|
|
65
|
+
since_timestamp: {
|
|
66
|
+
type: "integer",
|
|
67
|
+
description: "Optional millisecond cursor. Only messages newer than this timestamp are returned."
|
|
68
|
+
},
|
|
69
|
+
limit: {
|
|
70
|
+
type: "integer",
|
|
71
|
+
description: "Optional page size from 1 to 200 (default 50)."
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
required: ["space_id", "conversation_id"]
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "subscribe_conversation",
|
|
79
|
+
title: "Subscribe Conversation",
|
|
80
|
+
description: "Register a participant in a shared conversation so it can use inbox and read-cursor tools without first sending a message. By default the subscription starts caught up at the latest message.",
|
|
81
|
+
inputSchema: {
|
|
82
|
+
type: "object",
|
|
83
|
+
properties: {
|
|
84
|
+
space_id: {
|
|
85
|
+
type: "string",
|
|
86
|
+
description: "REQUIRED: Space containing the conversation (use view_spaces first)."
|
|
87
|
+
},
|
|
88
|
+
conversation_id: {
|
|
89
|
+
type: "string",
|
|
90
|
+
description: "REQUIRED: Chat summary / conversation ID to subscribe to."
|
|
91
|
+
},
|
|
92
|
+
organization_id: {
|
|
93
|
+
type: "string",
|
|
94
|
+
description: "Optional Clerk org ID when the space belongs to an organization graph."
|
|
95
|
+
},
|
|
96
|
+
participant_id: {
|
|
97
|
+
type: "string",
|
|
98
|
+
description: "Optional stable participant ID. Use an explicit `user_*` or `agent_*` style ID when you want the same participant identity reused across calls."
|
|
99
|
+
},
|
|
100
|
+
participant_type: {
|
|
101
|
+
type: "string",
|
|
102
|
+
description: "Optional participant type. Defaults to `user`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
103
|
+
},
|
|
104
|
+
participant_label: {
|
|
105
|
+
type: "string",
|
|
106
|
+
description: "Optional display label for the participant in collaborative chat UIs."
|
|
107
|
+
},
|
|
108
|
+
mark_read: {
|
|
109
|
+
type: "boolean",
|
|
110
|
+
description: "Optional. Defaults to true. When true, the subscription starts caught up at the current latest message."
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
required: ["space_id", "conversation_id"]
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: "list_conversation_inbox",
|
|
118
|
+
title: "List Conversation Inbox",
|
|
119
|
+
description: "List the conversations a participant is subscribed to in one space, with unread counts and read cursors. Use this to poll multiple shared threads efficiently.",
|
|
120
|
+
inputSchema: {
|
|
121
|
+
type: "object",
|
|
122
|
+
properties: {
|
|
123
|
+
space_id: {
|
|
124
|
+
type: "string",
|
|
125
|
+
description: "REQUIRED: Space to list inbox conversations from (use view_spaces first)."
|
|
126
|
+
},
|
|
127
|
+
organization_id: {
|
|
128
|
+
type: "string",
|
|
129
|
+
description: "Optional Clerk org ID when the space belongs to an organization graph."
|
|
130
|
+
},
|
|
131
|
+
participant_id: {
|
|
132
|
+
type: "string",
|
|
133
|
+
description: "Optional stable participant ID. Use the same value you used for message/subscribe calls to read the same inbox."
|
|
134
|
+
},
|
|
135
|
+
participant_type: {
|
|
136
|
+
type: "string",
|
|
137
|
+
description: "Optional participant type. Defaults to `user`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
138
|
+
},
|
|
139
|
+
participant_label: {
|
|
140
|
+
type: "string",
|
|
141
|
+
description: "Optional display label used when the participant identity is being created for the first time."
|
|
142
|
+
},
|
|
143
|
+
unread_only: {
|
|
144
|
+
type: "boolean",
|
|
145
|
+
description: "Optional. When true, only return conversations that currently have unread messages."
|
|
146
|
+
},
|
|
147
|
+
since_timestamp: {
|
|
148
|
+
type: "integer",
|
|
149
|
+
description: "Optional millisecond cursor. Only conversations updated after this timestamp are returned."
|
|
150
|
+
},
|
|
151
|
+
limit: {
|
|
152
|
+
type: "integer",
|
|
153
|
+
description: "Optional page size from 1 to 200 (default 50)."
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
required: ["space_id"]
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: "mark_conversation_read",
|
|
161
|
+
title: "Mark Conversation Read",
|
|
162
|
+
description: "Advance a participant's read cursor for a shared conversation. Use this after processing messages returned from fetch_conversation_messages.",
|
|
163
|
+
inputSchema: {
|
|
164
|
+
type: "object",
|
|
165
|
+
properties: {
|
|
166
|
+
space_id: {
|
|
167
|
+
type: "string",
|
|
168
|
+
description: "REQUIRED: Space containing the conversation (use view_spaces first)."
|
|
169
|
+
},
|
|
170
|
+
conversation_id: {
|
|
171
|
+
type: "string",
|
|
172
|
+
description: "REQUIRED: Chat summary / conversation ID to mark as read."
|
|
173
|
+
},
|
|
174
|
+
organization_id: {
|
|
175
|
+
type: "string",
|
|
176
|
+
description: "Optional Clerk org ID when the space belongs to an organization graph."
|
|
177
|
+
},
|
|
178
|
+
participant_id: {
|
|
179
|
+
type: "string",
|
|
180
|
+
description: "Optional stable participant ID. Use the same value you used for message/subscribe calls."
|
|
181
|
+
},
|
|
182
|
+
participant_type: {
|
|
183
|
+
type: "string",
|
|
184
|
+
description: "Optional participant type. Defaults to `user`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
185
|
+
},
|
|
186
|
+
participant_label: {
|
|
187
|
+
type: "string",
|
|
188
|
+
description: "Optional display label used when the participant identity is being created for the first time."
|
|
189
|
+
},
|
|
190
|
+
read_at: {
|
|
191
|
+
type: "integer",
|
|
192
|
+
description: "Optional millisecond cursor to advance to. If omitted, the conversation is marked read through its latest message."
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
required: ["space_id", "conversation_id"]
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: "view_groups",
|
|
200
|
+
title: "View Groups",
|
|
201
|
+
description: "List all groups in a space, including the projects currently inside each group plus any ungrouped projects.",
|
|
202
|
+
inputSchema: {
|
|
203
|
+
type: "object",
|
|
204
|
+
properties: {
|
|
205
|
+
space_id: {
|
|
206
|
+
type: "string",
|
|
207
|
+
description: "REQUIRED: Space to list groups from (use view_spaces to see available options)"
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
required: ["space_id"]
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
name: "create_group",
|
|
215
|
+
title: "Create Group",
|
|
216
|
+
description: "Create a new group inside a space.",
|
|
217
|
+
inputSchema: {
|
|
218
|
+
type: "object",
|
|
219
|
+
properties: {
|
|
220
|
+
space_id: {
|
|
221
|
+
type: "string",
|
|
222
|
+
description: "REQUIRED: Space to create the group in."
|
|
223
|
+
},
|
|
224
|
+
name: {
|
|
225
|
+
type: "string",
|
|
226
|
+
description: "Name for the new group."
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
required: ["space_id", "name"]
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
name: "rename_group",
|
|
234
|
+
title: "Rename Group",
|
|
235
|
+
description: "Rename an existing group.",
|
|
236
|
+
inputSchema: {
|
|
237
|
+
type: "object",
|
|
238
|
+
properties: {
|
|
239
|
+
space_id: {
|
|
240
|
+
type: "string",
|
|
241
|
+
description: "REQUIRED: Space containing the group."
|
|
242
|
+
},
|
|
243
|
+
group_id: {
|
|
244
|
+
type: "string",
|
|
245
|
+
description: "REQUIRED: Group ID to rename."
|
|
246
|
+
},
|
|
247
|
+
name: {
|
|
248
|
+
type: "string",
|
|
249
|
+
description: "REQUIRED: New group name."
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
required: ["space_id", "group_id", "name"]
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
name: "delete_group",
|
|
257
|
+
title: "Delete Group",
|
|
258
|
+
description: "Delete a group. Projects inside it are preserved and become ungrouped.",
|
|
259
|
+
inputSchema: {
|
|
260
|
+
type: "object",
|
|
261
|
+
properties: {
|
|
262
|
+
space_id: {
|
|
263
|
+
type: "string",
|
|
264
|
+
description: "REQUIRED: Space containing the group."
|
|
265
|
+
},
|
|
266
|
+
group_id: {
|
|
267
|
+
type: "string",
|
|
268
|
+
description: "REQUIRED: Group ID to delete."
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
required: ["space_id", "group_id"]
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
name: "view_projects",
|
|
276
|
+
title: "View Projects",
|
|
277
|
+
description: "List all projects in a space, including which group each project belongs to.",
|
|
278
|
+
inputSchema: {
|
|
279
|
+
type: "object",
|
|
280
|
+
properties: {
|
|
281
|
+
space_id: {
|
|
282
|
+
type: "string",
|
|
283
|
+
description: "REQUIRED: Space to list projects from (use view_spaces to see available options)"
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
required: ["space_id"]
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: "view_project",
|
|
291
|
+
title: "View Project",
|
|
292
|
+
description: "View a specific project with all its items. Use fetch_items to retrieve full content for specific item IDs.",
|
|
293
|
+
inputSchema: {
|
|
294
|
+
type: "object",
|
|
295
|
+
properties: {
|
|
296
|
+
project_id: {
|
|
297
|
+
type: "string",
|
|
298
|
+
description: "Project ID to view (e.g., 'proj_123...'). Get project IDs from view_projects."
|
|
299
|
+
},
|
|
300
|
+
space_id: {
|
|
301
|
+
type: "string",
|
|
302
|
+
description: "REQUIRED: Space containing the project."
|
|
303
|
+
},
|
|
304
|
+
slug: {
|
|
305
|
+
type: "string",
|
|
306
|
+
description: "Optional: Project slug (URL-friendly name)."
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
required: ["space_id"]
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
name: "create_project",
|
|
314
|
+
title: "Create Project",
|
|
315
|
+
description: "Create a new project in a space. Optionally place it inside a group immediately.",
|
|
316
|
+
inputSchema: {
|
|
317
|
+
type: "object",
|
|
318
|
+
properties: {
|
|
319
|
+
space_id: {
|
|
320
|
+
type: "string",
|
|
321
|
+
description: "REQUIRED: Space to create the project in."
|
|
322
|
+
},
|
|
323
|
+
name: {
|
|
324
|
+
type: "string",
|
|
325
|
+
description: "REQUIRED: Project name."
|
|
326
|
+
},
|
|
327
|
+
group_id: {
|
|
328
|
+
type: "string",
|
|
329
|
+
description: "Optional: Group ID to place the project inside."
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
required: ["space_id", "name"]
|
|
333
|
+
}
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
name: "rename_project",
|
|
337
|
+
title: "Rename Project",
|
|
338
|
+
description: "Rename an existing project.",
|
|
339
|
+
inputSchema: {
|
|
340
|
+
type: "object",
|
|
341
|
+
properties: {
|
|
342
|
+
space_id: {
|
|
343
|
+
type: "string",
|
|
344
|
+
description: "REQUIRED: Space containing the project."
|
|
345
|
+
},
|
|
346
|
+
project_id: {
|
|
347
|
+
type: "string",
|
|
348
|
+
description: "REQUIRED: Project ID to rename."
|
|
349
|
+
},
|
|
350
|
+
name: {
|
|
351
|
+
type: "string",
|
|
352
|
+
description: "REQUIRED: New project name."
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
required: ["space_id", "project_id", "name"]
|
|
356
|
+
}
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
name: "delete_project",
|
|
360
|
+
title: "Delete Project",
|
|
361
|
+
description: "Delete an existing project from a space.",
|
|
362
|
+
inputSchema: {
|
|
363
|
+
type: "object",
|
|
364
|
+
properties: {
|
|
365
|
+
space_id: {
|
|
366
|
+
type: "string",
|
|
367
|
+
description: "REQUIRED: Space containing the project."
|
|
368
|
+
},
|
|
369
|
+
project_id: {
|
|
370
|
+
type: "string",
|
|
371
|
+
description: "REQUIRED: Project ID to delete."
|
|
372
|
+
}
|
|
373
|
+
},
|
|
374
|
+
required: ["space_id", "project_id"]
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
name: "assign_project_to_group",
|
|
379
|
+
title: "Assign Project To Group",
|
|
380
|
+
description: "Move a project into a group. Omit group_id to make the project ungrouped.",
|
|
381
|
+
inputSchema: {
|
|
382
|
+
type: "object",
|
|
383
|
+
properties: {
|
|
384
|
+
space_id: {
|
|
385
|
+
type: "string",
|
|
386
|
+
description: "REQUIRED: Space containing the project."
|
|
387
|
+
},
|
|
388
|
+
project_id: {
|
|
389
|
+
type: "string",
|
|
390
|
+
description: "REQUIRED: Project ID to move."
|
|
391
|
+
},
|
|
392
|
+
group_id: {
|
|
393
|
+
type: "string",
|
|
394
|
+
description: "Optional: Target group ID. Omit this to ungroup the project."
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
required: ["space_id", "project_id"]
|
|
398
|
+
}
|
|
399
|
+
},
|
|
90
400
|
{
|
|
91
401
|
name: "start",
|
|
92
402
|
title: "Start Space Session",
|
|
@@ -306,8 +616,7 @@ const TOOL_DEFINITIONS = [
|
|
|
306
616
|
}
|
|
307
617
|
}
|
|
308
618
|
},
|
|
309
|
-
required: ["space_id"]
|
|
310
|
-
anyOf: [{ required: ["add"] }, { required: ["update"] }, { required: ["delete"] }]
|
|
619
|
+
required: ["space_id"]
|
|
311
620
|
}
|
|
312
621
|
},
|
|
313
622
|
{
|
|
@@ -403,20 +712,13 @@ const TOOL_DEFINITIONS = [
|
|
|
403
712
|
items: { type: "string" }
|
|
404
713
|
}
|
|
405
714
|
},
|
|
406
|
-
required: ["space_id"]
|
|
407
|
-
anyOf: [
|
|
408
|
-
{ required: ["list"] },
|
|
409
|
-
{ required: ["create"] },
|
|
410
|
-
{ required: ["rename"] },
|
|
411
|
-
{ required: ["move_items"] },
|
|
412
|
-
{ required: ["delete"] }
|
|
413
|
-
]
|
|
715
|
+
required: ["space_id"]
|
|
414
716
|
}
|
|
415
717
|
},
|
|
416
718
|
{
|
|
417
719
|
name: "message",
|
|
418
720
|
title: "Message Assistant",
|
|
419
|
-
description: "Primary orchestration tool. Send a request to the Intangle assistant and wait for one assistant turn to complete. Returns assistant text plus continuity IDs (`session_id`, `conversation_id`) so callers can continue the same thread reliably across turns.",
|
|
721
|
+
description: "Primary orchestration tool. Send a request to the Intangle assistant and either wait for one assistant turn to complete or submit asynchronously for later polling. Returns assistant text plus continuity IDs (`session_id`, `conversation_id`) so callers can continue the same thread reliably across turns.",
|
|
420
722
|
inputSchema: {
|
|
421
723
|
type: "object",
|
|
422
724
|
properties: {
|
|
@@ -436,6 +738,10 @@ const TOOL_DEFINITIONS = [
|
|
|
436
738
|
type: "string",
|
|
437
739
|
description: "Optional existing conversation/chat summary ID to resume a specific conversation. If omitted, Intangle uses/creates the active conversation for this space."
|
|
438
740
|
},
|
|
741
|
+
new_conversation: {
|
|
742
|
+
type: "boolean",
|
|
743
|
+
description: "Optional. When true, force a fresh conversation instead of reusing the current active thread."
|
|
744
|
+
},
|
|
439
745
|
session_id: {
|
|
440
746
|
type: "string",
|
|
441
747
|
description: "Optional runtime session ID to reuse across calls. Reuse the returned session_id for best continuity and lower warm-up overhead."
|
|
@@ -452,6 +758,22 @@ const TOOL_DEFINITIONS = [
|
|
|
452
758
|
type: "integer",
|
|
453
759
|
description: "Optional timeout in milliseconds (10,000 to 300,000; default 120,000)."
|
|
454
760
|
},
|
|
761
|
+
wait_for_response: {
|
|
762
|
+
type: "boolean",
|
|
763
|
+
description: "Optional. Defaults to true. Set false to submit the turn asynchronously and poll the conversation later with fetch_conversation_messages."
|
|
764
|
+
},
|
|
765
|
+
participant_id: {
|
|
766
|
+
type: "string",
|
|
767
|
+
description: "Optional stable participant ID for collaborative/shared chats. Use an explicit `user_*` or `agent_*` style ID when you want the same participant identity reused across calls."
|
|
768
|
+
},
|
|
769
|
+
participant_type: {
|
|
770
|
+
type: "string",
|
|
771
|
+
description: "Optional participant type. Defaults to `user`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
772
|
+
},
|
|
773
|
+
participant_label: {
|
|
774
|
+
type: "string",
|
|
775
|
+
description: "Optional display label for the participant in collaborative chat UIs."
|
|
776
|
+
},
|
|
455
777
|
timezone: {
|
|
456
778
|
type: "string",
|
|
457
779
|
description: "Optional IANA timezone for assistant context."
|
|
@@ -487,6 +809,8 @@ const TOOL_DEFINITIONS = [
|
|
|
487
809
|
const READ_ONLY_TOOLS = new Set([
|
|
488
810
|
"search",
|
|
489
811
|
"fetch_items",
|
|
812
|
+
"fetch_conversation_messages",
|
|
813
|
+
"list_conversation_inbox",
|
|
490
814
|
"start",
|
|
491
815
|
"view_spaces",
|
|
492
816
|
"view_space"
|
|
@@ -499,6 +823,8 @@ const DESTRUCTIVE_TOOLS = new Set([
|
|
|
499
823
|
const IDEMPOTENT_TOOLS = new Set([
|
|
500
824
|
"search",
|
|
501
825
|
"fetch_items",
|
|
826
|
+
"fetch_conversation_messages",
|
|
827
|
+
"list_conversation_inbox",
|
|
502
828
|
"start",
|
|
503
829
|
"view_spaces",
|
|
504
830
|
"view_space"
|