@intangle/mcp-server 2.5.5 → 2.6.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/.env.local +1 -0
- package/dist/index.js +161 -12
- package/dist/tool-definitions.js +515 -53
- package/index.ts +241 -12
- package/package.json +1 -1
- package/tool-definitions.ts +571 -53
package/tool-definitions.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Tools definition - matches the stdio server
|
|
2
|
-
|
|
2
|
+
const TOOL_DEFINITIONS = [
|
|
3
3
|
{
|
|
4
4
|
name: "search",
|
|
5
5
|
title: "Search Space",
|
|
6
6
|
description:
|
|
7
|
-
"Search for context, tasks, skills, and projects within a space. System automatically extracts quantity from natural language ('show 3 tasks' → 3 results, 'the last one' → 1 result) and intelligently formats results (1-3 items → summaries, 4+ items → IDs only).
|
|
7
|
+
"Search for context, tasks, skills, and projects within a space. System automatically extracts quantity from natural language ('show 3 tasks' → 3 results, 'the last one' → 1 result) and intelligently formats results (1-3 items → summaries, 4+ items → IDs only). Default to one search per question, then use fetch_items for full details instead of repeating paraphrased searches.",
|
|
8
8
|
inputSchema: {
|
|
9
9
|
type: "object",
|
|
10
10
|
properties: {
|
|
@@ -49,55 +49,409 @@ export const TOOLS = [
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
52
|
+
{
|
|
53
|
+
name: "fetch_conversation_messages",
|
|
54
|
+
title: "Fetch Conversation Messages",
|
|
55
|
+
description:
|
|
56
|
+
"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`.",
|
|
57
|
+
inputSchema: {
|
|
58
|
+
type: "object",
|
|
59
|
+
properties: {
|
|
60
|
+
space_id: {
|
|
61
|
+
type: "string",
|
|
62
|
+
description:
|
|
63
|
+
"REQUIRED: Space containing the conversation (use view_spaces first)."
|
|
64
|
+
},
|
|
65
|
+
conversation_id: {
|
|
66
|
+
type: "string",
|
|
67
|
+
description:
|
|
68
|
+
"REQUIRED: Chat summary / conversation ID to read (e.g. 'summary_123...')."
|
|
69
|
+
},
|
|
70
|
+
organization_id: {
|
|
71
|
+
type: "string",
|
|
72
|
+
description:
|
|
73
|
+
"Optional Clerk org ID when the space belongs to an organization graph."
|
|
74
|
+
},
|
|
75
|
+
since_timestamp: {
|
|
76
|
+
type: "integer",
|
|
77
|
+
description:
|
|
78
|
+
"Optional millisecond cursor. Only messages newer than this timestamp are returned."
|
|
79
|
+
},
|
|
80
|
+
limit: {
|
|
81
|
+
type: "integer",
|
|
82
|
+
description:
|
|
83
|
+
"Optional page size from 1 to 200 (default 50)."
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
required: ["space_id", "conversation_id"]
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: "subscribe_conversation",
|
|
91
|
+
title: "Subscribe Conversation",
|
|
92
|
+
description:
|
|
93
|
+
"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.",
|
|
94
|
+
inputSchema: {
|
|
95
|
+
type: "object",
|
|
96
|
+
properties: {
|
|
97
|
+
space_id: {
|
|
98
|
+
type: "string",
|
|
99
|
+
description:
|
|
100
|
+
"REQUIRED: Space containing the conversation (use view_spaces first)."
|
|
101
|
+
},
|
|
102
|
+
conversation_id: {
|
|
103
|
+
type: "string",
|
|
104
|
+
description:
|
|
105
|
+
"REQUIRED: Chat summary / conversation ID to subscribe to."
|
|
106
|
+
},
|
|
107
|
+
organization_id: {
|
|
108
|
+
type: "string",
|
|
109
|
+
description:
|
|
110
|
+
"Optional Clerk org ID when the space belongs to an organization graph."
|
|
111
|
+
},
|
|
112
|
+
participant_id: {
|
|
113
|
+
type: "string",
|
|
114
|
+
description:
|
|
115
|
+
"Optional stable participant ID. Use an explicit `user_*` or `agent_*` style ID when you want the same participant identity reused across calls."
|
|
116
|
+
},
|
|
117
|
+
participant_type: {
|
|
118
|
+
type: "string",
|
|
119
|
+
description:
|
|
120
|
+
"Optional participant type. Defaults to `user`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
121
|
+
},
|
|
122
|
+
participant_label: {
|
|
123
|
+
type: "string",
|
|
124
|
+
description:
|
|
125
|
+
"Optional display label for the participant in collaborative chat UIs."
|
|
126
|
+
},
|
|
127
|
+
mark_read: {
|
|
128
|
+
type: "boolean",
|
|
129
|
+
description:
|
|
130
|
+
"Optional. Defaults to true. When true, the subscription starts caught up at the current latest message."
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
required: ["space_id", "conversation_id"]
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: "list_conversation_inbox",
|
|
138
|
+
title: "List Conversation Inbox",
|
|
139
|
+
description:
|
|
140
|
+
"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.",
|
|
141
|
+
inputSchema: {
|
|
142
|
+
type: "object",
|
|
143
|
+
properties: {
|
|
144
|
+
space_id: {
|
|
145
|
+
type: "string",
|
|
146
|
+
description:
|
|
147
|
+
"REQUIRED: Space to list inbox conversations from (use view_spaces first)."
|
|
148
|
+
},
|
|
149
|
+
organization_id: {
|
|
150
|
+
type: "string",
|
|
151
|
+
description:
|
|
152
|
+
"Optional Clerk org ID when the space belongs to an organization graph."
|
|
153
|
+
},
|
|
154
|
+
participant_id: {
|
|
155
|
+
type: "string",
|
|
156
|
+
description:
|
|
157
|
+
"Optional stable participant ID. Use the same value you used for message/subscribe calls to read the same inbox."
|
|
158
|
+
},
|
|
159
|
+
participant_type: {
|
|
160
|
+
type: "string",
|
|
161
|
+
description:
|
|
162
|
+
"Optional participant type. Defaults to `user`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
163
|
+
},
|
|
164
|
+
participant_label: {
|
|
165
|
+
type: "string",
|
|
166
|
+
description:
|
|
167
|
+
"Optional display label used when the participant identity is being created for the first time."
|
|
168
|
+
},
|
|
169
|
+
unread_only: {
|
|
170
|
+
type: "boolean",
|
|
171
|
+
description:
|
|
172
|
+
"Optional. When true, only return conversations that currently have unread messages."
|
|
173
|
+
},
|
|
174
|
+
since_timestamp: {
|
|
175
|
+
type: "integer",
|
|
176
|
+
description:
|
|
177
|
+
"Optional millisecond cursor. Only conversations updated after this timestamp are returned."
|
|
178
|
+
},
|
|
179
|
+
limit: {
|
|
180
|
+
type: "integer",
|
|
181
|
+
description:
|
|
182
|
+
"Optional page size from 1 to 200 (default 50)."
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
required: ["space_id"]
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
name: "mark_conversation_read",
|
|
190
|
+
title: "Mark Conversation Read",
|
|
191
|
+
description:
|
|
192
|
+
"Advance a participant's read cursor for a shared conversation. Use this after processing messages returned from fetch_conversation_messages.",
|
|
193
|
+
inputSchema: {
|
|
194
|
+
type: "object",
|
|
195
|
+
properties: {
|
|
196
|
+
space_id: {
|
|
197
|
+
type: "string",
|
|
198
|
+
description:
|
|
199
|
+
"REQUIRED: Space containing the conversation (use view_spaces first)."
|
|
200
|
+
},
|
|
201
|
+
conversation_id: {
|
|
202
|
+
type: "string",
|
|
203
|
+
description:
|
|
204
|
+
"REQUIRED: Chat summary / conversation ID to mark as read."
|
|
205
|
+
},
|
|
206
|
+
organization_id: {
|
|
207
|
+
type: "string",
|
|
208
|
+
description:
|
|
209
|
+
"Optional Clerk org ID when the space belongs to an organization graph."
|
|
210
|
+
},
|
|
211
|
+
participant_id: {
|
|
212
|
+
type: "string",
|
|
213
|
+
description:
|
|
214
|
+
"Optional stable participant ID. Use the same value you used for message/subscribe calls."
|
|
215
|
+
},
|
|
216
|
+
participant_type: {
|
|
217
|
+
type: "string",
|
|
218
|
+
description:
|
|
219
|
+
"Optional participant type. Defaults to `user`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
220
|
+
},
|
|
221
|
+
participant_label: {
|
|
222
|
+
type: "string",
|
|
223
|
+
description:
|
|
224
|
+
"Optional display label used when the participant identity is being created for the first time."
|
|
225
|
+
},
|
|
226
|
+
read_at: {
|
|
227
|
+
type: "integer",
|
|
228
|
+
description:
|
|
229
|
+
"Optional millisecond cursor to advance to. If omitted, the conversation is marked read through its latest message."
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
required: ["space_id", "conversation_id"]
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
name: "view_groups",
|
|
237
|
+
title: "View Groups",
|
|
238
|
+
description:
|
|
239
|
+
"List all groups in a space, including the projects currently inside each group plus any ungrouped projects.",
|
|
240
|
+
inputSchema: {
|
|
241
|
+
type: "object",
|
|
242
|
+
properties: {
|
|
243
|
+
space_id: {
|
|
244
|
+
type: "string",
|
|
245
|
+
description:
|
|
246
|
+
"REQUIRED: Space to list groups from (use view_spaces to see available options)"
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
required: ["space_id"]
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
name: "create_group",
|
|
254
|
+
title: "Create Group",
|
|
255
|
+
description: "Create a new group inside a space.",
|
|
256
|
+
inputSchema: {
|
|
257
|
+
type: "object",
|
|
258
|
+
properties: {
|
|
259
|
+
space_id: {
|
|
260
|
+
type: "string",
|
|
261
|
+
description:
|
|
262
|
+
"REQUIRED: Space to create the group in."
|
|
263
|
+
},
|
|
264
|
+
name: {
|
|
265
|
+
type: "string",
|
|
266
|
+
description: "Name for the new group."
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
required: ["space_id", "name"]
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
name: "rename_group",
|
|
274
|
+
title: "Rename Group",
|
|
275
|
+
description: "Rename an existing group.",
|
|
276
|
+
inputSchema: {
|
|
277
|
+
type: "object",
|
|
278
|
+
properties: {
|
|
279
|
+
space_id: {
|
|
280
|
+
type: "string",
|
|
281
|
+
description: "REQUIRED: Space containing the group."
|
|
282
|
+
},
|
|
283
|
+
group_id: {
|
|
284
|
+
type: "string",
|
|
285
|
+
description: "REQUIRED: Group ID to rename."
|
|
286
|
+
},
|
|
287
|
+
name: {
|
|
288
|
+
type: "string",
|
|
289
|
+
description: "REQUIRED: New group name."
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
required: ["space_id", "group_id", "name"]
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
name: "delete_group",
|
|
297
|
+
title: "Delete Group",
|
|
298
|
+
description:
|
|
299
|
+
"Delete a group. Projects inside it are preserved and become ungrouped.",
|
|
300
|
+
inputSchema: {
|
|
301
|
+
type: "object",
|
|
302
|
+
properties: {
|
|
303
|
+
space_id: {
|
|
304
|
+
type: "string",
|
|
305
|
+
description: "REQUIRED: Space containing the group."
|
|
306
|
+
},
|
|
307
|
+
group_id: {
|
|
308
|
+
type: "string",
|
|
309
|
+
description: "REQUIRED: Group ID to delete."
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
required: ["space_id", "group_id"]
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
name: "view_projects",
|
|
317
|
+
title: "View Projects",
|
|
318
|
+
description:
|
|
319
|
+
"List all projects in a space, including which group each project belongs to.",
|
|
320
|
+
inputSchema: {
|
|
321
|
+
type: "object",
|
|
322
|
+
properties: {
|
|
323
|
+
space_id: {
|
|
324
|
+
type: "string",
|
|
325
|
+
description:
|
|
326
|
+
"REQUIRED: Space to list projects from (use view_spaces to see available options)"
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
required: ["space_id"]
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
name: "view_project",
|
|
334
|
+
title: "View Project",
|
|
335
|
+
description:
|
|
336
|
+
"View a specific project with all its items. Use fetch_items to retrieve full content for specific item IDs.",
|
|
337
|
+
inputSchema: {
|
|
338
|
+
type: "object",
|
|
339
|
+
properties: {
|
|
340
|
+
project_id: {
|
|
341
|
+
type: "string",
|
|
342
|
+
description:
|
|
343
|
+
"Project ID to view (e.g., 'proj_123...'). Get project IDs from view_projects."
|
|
344
|
+
},
|
|
345
|
+
space_id: {
|
|
346
|
+
type: "string",
|
|
347
|
+
description:
|
|
348
|
+
"REQUIRED: Space containing the project."
|
|
349
|
+
},
|
|
350
|
+
slug: {
|
|
351
|
+
type: "string",
|
|
352
|
+
description:
|
|
353
|
+
"Optional: Project slug (URL-friendly name)."
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
required: ["space_id"]
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
name: "create_project",
|
|
361
|
+
title: "Create Project",
|
|
362
|
+
description:
|
|
363
|
+
"Create a new project in a space. Optionally place it inside a group immediately.",
|
|
364
|
+
inputSchema: {
|
|
365
|
+
type: "object",
|
|
366
|
+
properties: {
|
|
367
|
+
space_id: {
|
|
368
|
+
type: "string",
|
|
369
|
+
description: "REQUIRED: Space to create the project in."
|
|
370
|
+
},
|
|
371
|
+
name: {
|
|
372
|
+
type: "string",
|
|
373
|
+
description: "REQUIRED: Project name."
|
|
374
|
+
},
|
|
375
|
+
group_id: {
|
|
376
|
+
type: "string",
|
|
377
|
+
description: "Optional: Group ID to place the project inside."
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
required: ["space_id", "name"]
|
|
381
|
+
}
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
name: "rename_project",
|
|
385
|
+
title: "Rename Project",
|
|
386
|
+
description: "Rename an existing project.",
|
|
387
|
+
inputSchema: {
|
|
388
|
+
type: "object",
|
|
389
|
+
properties: {
|
|
390
|
+
space_id: {
|
|
391
|
+
type: "string",
|
|
392
|
+
description: "REQUIRED: Space containing the project."
|
|
393
|
+
},
|
|
394
|
+
project_id: {
|
|
395
|
+
type: "string",
|
|
396
|
+
description: "REQUIRED: Project ID to rename."
|
|
397
|
+
},
|
|
398
|
+
name: {
|
|
399
|
+
type: "string",
|
|
400
|
+
description: "REQUIRED: New project name."
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
required: ["space_id", "project_id", "name"]
|
|
404
|
+
}
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
name: "delete_project",
|
|
408
|
+
title: "Delete Project",
|
|
409
|
+
description: "Delete an existing project from a space.",
|
|
410
|
+
inputSchema: {
|
|
411
|
+
type: "object",
|
|
412
|
+
properties: {
|
|
413
|
+
space_id: {
|
|
414
|
+
type: "string",
|
|
415
|
+
description: "REQUIRED: Space containing the project."
|
|
416
|
+
},
|
|
417
|
+
project_id: {
|
|
418
|
+
type: "string",
|
|
419
|
+
description: "REQUIRED: Project ID to delete."
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
required: ["space_id", "project_id"]
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
name: "assign_project_to_group",
|
|
427
|
+
title: "Assign Project To Group",
|
|
428
|
+
description:
|
|
429
|
+
"Move a project into a group. Omit group_id to make the project ungrouped.",
|
|
430
|
+
inputSchema: {
|
|
431
|
+
type: "object",
|
|
432
|
+
properties: {
|
|
433
|
+
space_id: {
|
|
434
|
+
type: "string",
|
|
435
|
+
description: "REQUIRED: Space containing the project."
|
|
436
|
+
},
|
|
437
|
+
project_id: {
|
|
438
|
+
type: "string",
|
|
439
|
+
description: "REQUIRED: Project ID to move."
|
|
440
|
+
},
|
|
441
|
+
group_id: {
|
|
442
|
+
type: "string",
|
|
443
|
+
description:
|
|
444
|
+
"Optional: Target group ID. Omit this to ungroup the project."
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
required: ["space_id", "project_id"]
|
|
448
|
+
}
|
|
449
|
+
},
|
|
96
450
|
{
|
|
97
451
|
name: "start",
|
|
98
452
|
title: "Start Space Session",
|
|
99
453
|
description:
|
|
100
|
-
"
|
|
454
|
+
"Load a space fast for a new external caller. Returns assistant-curated current items, useful insights, skills, recent conversations, and assistant preferences so the caller can get oriented quickly and fetch deeper details only when needed.",
|
|
101
455
|
inputSchema: {
|
|
102
456
|
type: "object",
|
|
103
457
|
properties: {
|
|
@@ -171,7 +525,7 @@ export const TOOLS = [
|
|
|
171
525
|
name: "update_memory",
|
|
172
526
|
title: "Update Memory",
|
|
173
527
|
description:
|
|
174
|
-
"Add, update, or delete items in a space. Supports any combination of operations in a single call.\n\nTIPS FOR RICH MEMORY: The more context you provide, the smarter the system becomes:\n- Include WHY something matters, not just WHAT it is\n- Note user preferences, patterns, and approaches you observe\n- Describe repeatable workflows as skills (step-by-step procedures)\n- Link related items using parent_id or linkedItemIds\n- Use descriptive titles that capture the essence\n- Add context about decisions, reasoning, and outcomes\n\nThe system learns from patterns - sharing how the user works helps it anticipate their needs.",
|
|
528
|
+
"Add, update, or delete items in a space. Supports any combination of operations in a single call.\n\nIMPORTANT: Include at least one operation: add, update, or delete.\n\nTIPS FOR RICH MEMORY: The more context you provide, the smarter the system becomes:\n- Include WHY something matters, not just WHAT it is\n- Note user preferences, patterns, and approaches you observe\n- Describe repeatable workflows as skills (step-by-step procedures)\n- Link related items using parent_id or linkedItemIds\n- Use descriptive titles that capture the essence\n- Add context about decisions, reasoning, and outcomes\n\nThe system learns from patterns - sharing how the user works helps it anticipate their needs.",
|
|
175
529
|
inputSchema: {
|
|
176
530
|
type: "object",
|
|
177
531
|
properties: {
|
|
@@ -203,9 +557,9 @@ export const TOOLS = [
|
|
|
203
557
|
},
|
|
204
558
|
type: {
|
|
205
559
|
type: "string",
|
|
206
|
-
enum: ["task", "context", "skill", "document"],
|
|
560
|
+
enum: ["task", "context", "skill", "document", "insight"],
|
|
207
561
|
description:
|
|
208
|
-
"REQUIRED: Item type. 'task' for actionable items, 'context' for knowledge/facts, 'skill' for workflows, 'document' for long-form reference material. Omitting this triggers expensive auto-classification."
|
|
562
|
+
"REQUIRED: Item type. 'task' for actionable items, 'context' for knowledge/facts, 'skill' for workflows, 'document' for long-form reference material, 'insight' for durable patterns/principles. Omitting this triggers expensive auto-classification."
|
|
209
563
|
},
|
|
210
564
|
subtasks: {
|
|
211
565
|
type: "array",
|
|
@@ -339,14 +693,122 @@ export const TOOLS = [
|
|
|
339
693
|
}
|
|
340
694
|
}
|
|
341
695
|
},
|
|
342
|
-
required: ["space_id"]
|
|
696
|
+
required: ["space_id"],
|
|
697
|
+
anyOf: [{ required: ["add"] }, { required: ["update"] }, { required: ["delete"] }]
|
|
698
|
+
}
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
name: "update_folders",
|
|
702
|
+
title: "Update Folders",
|
|
703
|
+
description:
|
|
704
|
+
"Unified folder management. Supports list, create, rename, move_items, and delete operations in one call so external MCP callers can organize memory the same way as the in-app assistant.",
|
|
705
|
+
inputSchema: {
|
|
706
|
+
type: "object",
|
|
707
|
+
properties: {
|
|
708
|
+
space_id: {
|
|
709
|
+
type: "string",
|
|
710
|
+
description:
|
|
711
|
+
"REQUIRED: Space to operate in (use view_spaces to see available options)."
|
|
712
|
+
},
|
|
713
|
+
list: {
|
|
714
|
+
type: "object",
|
|
715
|
+
description:
|
|
716
|
+
"Optional list operation. Use this first to discover existing folders and IDs.",
|
|
717
|
+
properties: {
|
|
718
|
+
section_type: {
|
|
719
|
+
type: "string",
|
|
720
|
+
enum: [
|
|
721
|
+
"projects",
|
|
722
|
+
"insights",
|
|
723
|
+
"insights_space",
|
|
724
|
+
"insights_user",
|
|
725
|
+
"agents",
|
|
726
|
+
"skills",
|
|
727
|
+
"conversations",
|
|
728
|
+
"dashboard"
|
|
729
|
+
],
|
|
730
|
+
description: "Optional: filter folders by sidebar section."
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
},
|
|
734
|
+
create: {
|
|
735
|
+
type: "array",
|
|
736
|
+
description: "Optional create operations.",
|
|
737
|
+
items: {
|
|
738
|
+
type: "object",
|
|
739
|
+
properties: {
|
|
740
|
+
name: { type: "string", description: "Folder name." },
|
|
741
|
+
section_type: {
|
|
742
|
+
type: "string",
|
|
743
|
+
enum: [
|
|
744
|
+
"projects",
|
|
745
|
+
"insights",
|
|
746
|
+
"insights_space",
|
|
747
|
+
"insights_user",
|
|
748
|
+
"agents",
|
|
749
|
+
"skills",
|
|
750
|
+
"conversations",
|
|
751
|
+
"dashboard"
|
|
752
|
+
],
|
|
753
|
+
description: "Sidebar section this folder belongs to."
|
|
754
|
+
},
|
|
755
|
+
parent_id: {
|
|
756
|
+
type: "string",
|
|
757
|
+
description: "Optional parent folder ID for nesting."
|
|
758
|
+
}
|
|
759
|
+
},
|
|
760
|
+
required: ["name", "section_type"]
|
|
761
|
+
}
|
|
762
|
+
},
|
|
763
|
+
rename: {
|
|
764
|
+
type: "array",
|
|
765
|
+
description: "Optional rename operations.",
|
|
766
|
+
items: {
|
|
767
|
+
type: "object",
|
|
768
|
+
properties: {
|
|
769
|
+
folder_id: { type: "string", description: "Folder ID to rename." },
|
|
770
|
+
new_name: { type: "string", description: "New folder name." }
|
|
771
|
+
},
|
|
772
|
+
required: ["folder_id", "new_name"]
|
|
773
|
+
}
|
|
774
|
+
},
|
|
775
|
+
move_items: {
|
|
776
|
+
type: "array",
|
|
777
|
+
description:
|
|
778
|
+
"Optional item move operations. Set folder_id to null to move an item back to root.",
|
|
779
|
+
items: {
|
|
780
|
+
type: "object",
|
|
781
|
+
properties: {
|
|
782
|
+
item_id: { type: "string", description: "Item ID to move." },
|
|
783
|
+
folder_id: {
|
|
784
|
+
type: ["string", "null"],
|
|
785
|
+
description: "Target folder ID, or null to remove from folder."
|
|
786
|
+
}
|
|
787
|
+
},
|
|
788
|
+
required: ["item_id", "folder_id"]
|
|
789
|
+
}
|
|
790
|
+
},
|
|
791
|
+
delete: {
|
|
792
|
+
type: "array",
|
|
793
|
+
description: "Optional delete operations (folder IDs).",
|
|
794
|
+
items: { type: "string" }
|
|
795
|
+
}
|
|
796
|
+
},
|
|
797
|
+
required: ["space_id"],
|
|
798
|
+
anyOf: [
|
|
799
|
+
{ required: ["list"] },
|
|
800
|
+
{ required: ["create"] },
|
|
801
|
+
{ required: ["rename"] },
|
|
802
|
+
{ required: ["move_items"] },
|
|
803
|
+
{ required: ["delete"] }
|
|
804
|
+
]
|
|
343
805
|
}
|
|
344
806
|
},
|
|
345
807
|
{
|
|
346
808
|
name: "message",
|
|
347
809
|
title: "Message Assistant",
|
|
348
810
|
description:
|
|
349
|
-
"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.",
|
|
811
|
+
"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.",
|
|
350
812
|
inputSchema: {
|
|
351
813
|
type: "object",
|
|
352
814
|
properties: {
|
|
@@ -387,6 +849,26 @@ export const TOOLS = [
|
|
|
387
849
|
description:
|
|
388
850
|
"Optional timeout in milliseconds (10,000 to 300,000; default 120,000)."
|
|
389
851
|
},
|
|
852
|
+
wait_for_response: {
|
|
853
|
+
type: "boolean",
|
|
854
|
+
description:
|
|
855
|
+
"Optional. Defaults to true. Set false to submit the turn asynchronously and poll the conversation later with fetch_conversation_messages."
|
|
856
|
+
},
|
|
857
|
+
participant_id: {
|
|
858
|
+
type: "string",
|
|
859
|
+
description:
|
|
860
|
+
"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."
|
|
861
|
+
},
|
|
862
|
+
participant_type: {
|
|
863
|
+
type: "string",
|
|
864
|
+
description:
|
|
865
|
+
"Optional participant type. Defaults to `user`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
866
|
+
},
|
|
867
|
+
participant_label: {
|
|
868
|
+
type: "string",
|
|
869
|
+
description:
|
|
870
|
+
"Optional display label for the participant in collaborative chat UIs."
|
|
871
|
+
},
|
|
390
872
|
timezone: {
|
|
391
873
|
type: "string",
|
|
392
874
|
description: "Optional IANA timezone for assistant context."
|
|
@@ -396,7 +878,7 @@ export const TOOLS = [
|
|
|
396
878
|
}
|
|
397
879
|
}
|
|
398
880
|
// DISABLED: memory_action tool is broken and causing errors.
|
|
399
|
-
// Pending OHM protocol fix. Use
|
|
881
|
+
// Pending OHM protocol fix. Use update_memory, search, or fetch_items instead.
|
|
400
882
|
// {
|
|
401
883
|
// name: "memory_action",
|
|
402
884
|
// title: "Memory Action (OHM Protocol)",
|
|
@@ -419,3 +901,39 @@ export const TOOLS = [
|
|
|
419
901
|
// }
|
|
420
902
|
// }
|
|
421
903
|
]
|
|
904
|
+
|
|
905
|
+
const READ_ONLY_TOOLS = new Set([
|
|
906
|
+
"search",
|
|
907
|
+
"fetch_items",
|
|
908
|
+
"fetch_conversation_messages",
|
|
909
|
+
"list_conversation_inbox",
|
|
910
|
+
"start",
|
|
911
|
+
"view_spaces",
|
|
912
|
+
"view_space"
|
|
913
|
+
])
|
|
914
|
+
|
|
915
|
+
const DESTRUCTIVE_TOOLS = new Set([
|
|
916
|
+
"create_space",
|
|
917
|
+
"update_memory",
|
|
918
|
+
"update_folders"
|
|
919
|
+
])
|
|
920
|
+
|
|
921
|
+
const IDEMPOTENT_TOOLS = new Set([
|
|
922
|
+
"search",
|
|
923
|
+
"fetch_items",
|
|
924
|
+
"fetch_conversation_messages",
|
|
925
|
+
"list_conversation_inbox",
|
|
926
|
+
"start",
|
|
927
|
+
"view_spaces",
|
|
928
|
+
"view_space"
|
|
929
|
+
])
|
|
930
|
+
|
|
931
|
+
export const TOOLS = TOOL_DEFINITIONS.map((tool) => ({
|
|
932
|
+
...tool,
|
|
933
|
+
annotations: {
|
|
934
|
+
...(READ_ONLY_TOOLS.has(tool.name) ? { readOnlyHint: true } : {}),
|
|
935
|
+
...(DESTRUCTIVE_TOOLS.has(tool.name) ? { destructiveHint: true } : {}),
|
|
936
|
+
...(IDEMPOTENT_TOOLS.has(tool.name) ? { idempotentHint: true } : {}),
|
|
937
|
+
openWorldHint: true
|
|
938
|
+
}
|
|
939
|
+
}))
|