@intangle/mcp-server 2.6.7 → 2.6.9
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 +4 -4
- package/dist/index.js +4 -10
- package/dist/tool-definitions.js +16 -26
- package/package.json +9 -3
- package/.env.local +0 -4
- package/biome.json +0 -39
- package/index.ts +0 -813
- package/tool-definitions.ts +0 -990
- package/tsconfig.json +0 -18
package/tool-definitions.ts
DELETED
|
@@ -1,990 +0,0 @@
|
|
|
1
|
-
// Tools definition - matches the stdio server
|
|
2
|
-
const TOOL_DEFINITIONS = [
|
|
3
|
-
{
|
|
4
|
-
name: "search",
|
|
5
|
-
title: "Search Space",
|
|
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). Default to one search per question, then use fetch_items for full details instead of repeating paraphrased searches.",
|
|
8
|
-
inputSchema: {
|
|
9
|
-
type: "object",
|
|
10
|
-
properties: {
|
|
11
|
-
query: {
|
|
12
|
-
type: "string",
|
|
13
|
-
description:
|
|
14
|
-
"Search query with optional natural language hints for quantity ('show 5 tasks', 'the most recent', 'top 5'). Examples: 'show me 3 pending tasks', 'recent bugs', 'authentication issues'"
|
|
15
|
-
},
|
|
16
|
-
space_id: {
|
|
17
|
-
type: "string",
|
|
18
|
-
description:
|
|
19
|
-
"REQUIRED: Space to search in (use view_spaces to see available options)"
|
|
20
|
-
},
|
|
21
|
-
group_id: {
|
|
22
|
-
type: "string",
|
|
23
|
-
description:
|
|
24
|
-
"Optional: Restrict search to one group inside the chosen space."
|
|
25
|
-
},
|
|
26
|
-
project_id: {
|
|
27
|
-
type: "string",
|
|
28
|
-
description:
|
|
29
|
-
"Optional: Restrict search to one project inside the chosen space."
|
|
30
|
-
},
|
|
31
|
-
folder_id: {
|
|
32
|
-
type: "string",
|
|
33
|
-
description:
|
|
34
|
-
"Optional: Restrict search to one folder inside the chosen space/project."
|
|
35
|
-
},
|
|
36
|
-
topics: {
|
|
37
|
-
type: "array",
|
|
38
|
-
items: { type: "string" },
|
|
39
|
-
description: "Optional: Filter by specific topics"
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
required: ["query", "space_id"]
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: "fetch_items",
|
|
47
|
-
title: "Fetch Items by ID",
|
|
48
|
-
description:
|
|
49
|
-
"Retrieve full content for specific items by ID, including `file_*`, `artifact_*`, and `summary_*` ids. File fetches return extracted content, file metadata, chunk metadata, and decrypted `data.source_data_url` when available; use this before asking Tan to reason over a specific uploaded contract/file in detail. Artifact fetches return content plus render metadata and `config`/`state`/`data` when available.",
|
|
50
|
-
inputSchema: {
|
|
51
|
-
type: "object",
|
|
52
|
-
properties: {
|
|
53
|
-
space_id: {
|
|
54
|
-
type: "string",
|
|
55
|
-
description:
|
|
56
|
-
"Optional: Space containing the items. Provide this for shared/org spaces so fetch resolves against the correct graph."
|
|
57
|
-
},
|
|
58
|
-
id: {
|
|
59
|
-
type: "string",
|
|
60
|
-
description:
|
|
61
|
-
"Single ID to fetch (e.g. `mem_123`, `task_456`, `skill_789`, `doc_321`, `file_654`, `artifact_654`, or `summary_987`)."
|
|
62
|
-
},
|
|
63
|
-
ids: {
|
|
64
|
-
type: "array",
|
|
65
|
-
items: { type: "string" },
|
|
66
|
-
description:
|
|
67
|
-
"Array of IDs to fetch (mix of context, task, skill, document, file, artifact, insight, or conversation IDs). Use this to fetch multiple items in one call."
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
{ name: "read_artifact", title: "Read Artifact", description: "Read one existing artifact by `artifact_id` without asking Tan to restream it in chat. Returns content plus render metadata and `config`/`state`/`data` when available. Prefer this when an external agent already has the artifact id and needs the current artifact payload directly.", inputSchema: { type: "object", properties: { space_id: { type: "string", description: "Optional: Space containing the artifact. Provide this for shared/org spaces so access checks resolve against the correct graph." }, artifact_id: { type: "string", description: "REQUIRED: Existing artifact ID to read (e.g. `artifact_123`)." }, item_id: { type: "string", description: "Optional alias for `artifact_id`." }, organization_id: { type: "string", description: "Optional Clerk org ID when the space belongs to an organization graph." } }, required: ["artifact_id"] } },
|
|
73
|
-
{
|
|
74
|
-
name: "usage_status",
|
|
75
|
-
title: "Usage Status",
|
|
76
|
-
description:
|
|
77
|
-
"Return the live shared AI + voice usage status for the authenticated user, including 4-hour and weekly counters and reset times when available.",
|
|
78
|
-
inputSchema: {
|
|
79
|
-
type: "object",
|
|
80
|
-
properties: {}
|
|
81
|
-
},
|
|
82
|
-
annotations: {
|
|
83
|
-
readOnlyHint: true
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
name: "fetch_conversation_messages",
|
|
88
|
-
title: "Fetch Conversation Messages",
|
|
89
|
-
description:
|
|
90
|
-
"Read persisted messages from a conversation/chat summary. Use this to poll shared threads after async `message` calls and to fetch only new messages via `since_timestamp` instead of reloading the whole thread. External agents should pass stable participant fields so unread counts and subscriptions stay consistent.",
|
|
91
|
-
inputSchema: {
|
|
92
|
-
type: "object",
|
|
93
|
-
properties: {
|
|
94
|
-
space_id: {
|
|
95
|
-
type: "string",
|
|
96
|
-
description:
|
|
97
|
-
"REQUIRED: Space containing the conversation (use view_spaces first)."
|
|
98
|
-
},
|
|
99
|
-
conversation_id: {
|
|
100
|
-
type: "string",
|
|
101
|
-
description:
|
|
102
|
-
"REQUIRED: Chat summary / conversation ID to read (e.g. 'summary_123...')."
|
|
103
|
-
},
|
|
104
|
-
organization_id: {
|
|
105
|
-
type: "string",
|
|
106
|
-
description:
|
|
107
|
-
"Optional Clerk org ID when the space belongs to an organization graph."
|
|
108
|
-
},
|
|
109
|
-
since_timestamp: {
|
|
110
|
-
type: "integer",
|
|
111
|
-
description:
|
|
112
|
-
"Optional millisecond cursor. Only messages newer than this timestamp are returned."
|
|
113
|
-
},
|
|
114
|
-
limit: {
|
|
115
|
-
type: "integer",
|
|
116
|
-
description:
|
|
117
|
-
"Optional page size from 1 to 200 (default 50)."
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
required: ["space_id", "conversation_id"]
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
name: "subscribe_conversation",
|
|
125
|
-
title: "Subscribe Conversation",
|
|
126
|
-
description:
|
|
127
|
-
"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. External agents should reuse a stable participant_id, set participant_type to `agent`, and send a clear participant_label so Tan can distinguish callers.",
|
|
128
|
-
inputSchema: {
|
|
129
|
-
type: "object",
|
|
130
|
-
properties: {
|
|
131
|
-
space_id: {
|
|
132
|
-
type: "string",
|
|
133
|
-
description:
|
|
134
|
-
"REQUIRED: Space containing the conversation (use view_spaces first)."
|
|
135
|
-
},
|
|
136
|
-
conversation_id: {
|
|
137
|
-
type: "string",
|
|
138
|
-
description:
|
|
139
|
-
"REQUIRED: Chat summary / conversation ID to subscribe to."
|
|
140
|
-
},
|
|
141
|
-
organization_id: {
|
|
142
|
-
type: "string",
|
|
143
|
-
description:
|
|
144
|
-
"Optional Clerk org ID when the space belongs to an organization graph."
|
|
145
|
-
},
|
|
146
|
-
participant_id: {
|
|
147
|
-
type: "string",
|
|
148
|
-
description:
|
|
149
|
-
"Optional stable participant ID. External agents should always reuse the same explicit `agent_*` style ID across message, subscribe_conversation, list_conversation_inbox, fetch_conversation_messages, and mark_conversation_read."
|
|
150
|
-
},
|
|
151
|
-
participant_type: {
|
|
152
|
-
type: "string",
|
|
153
|
-
description:
|
|
154
|
-
"Optional participant type. External MCP callers should set this to `agent`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
155
|
-
},
|
|
156
|
-
participant_label: {
|
|
157
|
-
type: "string",
|
|
158
|
-
description:
|
|
159
|
-
"Optional display label for the participant in collaborative chat UIs. External agents should send a human-readable label such as `Claude Research` or `Codex Builder`."
|
|
160
|
-
},
|
|
161
|
-
mark_read: {
|
|
162
|
-
type: "boolean",
|
|
163
|
-
description:
|
|
164
|
-
"Optional. Defaults to true. When true, the subscription starts caught up at the current latest message."
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
required: ["space_id", "conversation_id"]
|
|
168
|
-
}
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
name: "list_conversation_inbox",
|
|
172
|
-
title: "List Conversation Inbox",
|
|
173
|
-
description:
|
|
174
|
-
"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 without reloading full transcripts. Reuse the same participant_id, participant_type=`agent`, and participant_label so unread state stays attached to the right caller.",
|
|
175
|
-
inputSchema: {
|
|
176
|
-
type: "object",
|
|
177
|
-
properties: {
|
|
178
|
-
space_id: {
|
|
179
|
-
type: "string",
|
|
180
|
-
description:
|
|
181
|
-
"REQUIRED: Space to list inbox conversations from (use view_spaces first)."
|
|
182
|
-
},
|
|
183
|
-
organization_id: {
|
|
184
|
-
type: "string",
|
|
185
|
-
description:
|
|
186
|
-
"Optional Clerk org ID when the space belongs to an organization graph."
|
|
187
|
-
},
|
|
188
|
-
participant_id: {
|
|
189
|
-
type: "string",
|
|
190
|
-
description:
|
|
191
|
-
"Optional stable participant ID. Use the exact same value you used for message and subscribe_conversation so the inbox stays tied to one external agent identity."
|
|
192
|
-
},
|
|
193
|
-
participant_type: {
|
|
194
|
-
type: "string",
|
|
195
|
-
description:
|
|
196
|
-
"Optional participant type. External MCP callers should set this to `agent`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
197
|
-
},
|
|
198
|
-
participant_label: {
|
|
199
|
-
type: "string",
|
|
200
|
-
description:
|
|
201
|
-
"Optional display label used when the participant identity is being created for the first time. Reuse the same label for the same external agent."
|
|
202
|
-
},
|
|
203
|
-
unread_only: {
|
|
204
|
-
type: "boolean",
|
|
205
|
-
description:
|
|
206
|
-
"Optional. When true, only return conversations that currently have unread messages."
|
|
207
|
-
},
|
|
208
|
-
since_timestamp: {
|
|
209
|
-
type: "integer",
|
|
210
|
-
description:
|
|
211
|
-
"Optional millisecond cursor. Only conversations updated after this timestamp are returned."
|
|
212
|
-
},
|
|
213
|
-
limit: {
|
|
214
|
-
type: "integer",
|
|
215
|
-
description:
|
|
216
|
-
"Optional page size from 1 to 200 (default 50)."
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
required: ["space_id"]
|
|
220
|
-
}
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
name: "mark_conversation_read",
|
|
224
|
-
title: "Mark Conversation Read",
|
|
225
|
-
description:
|
|
226
|
-
"Advance a participant's read cursor for a shared conversation. Use this after processing messages returned from fetch_conversation_messages so unread counts stay accurate for external agents and separate callers do not share one cursor.",
|
|
227
|
-
inputSchema: {
|
|
228
|
-
type: "object",
|
|
229
|
-
properties: {
|
|
230
|
-
space_id: {
|
|
231
|
-
type: "string",
|
|
232
|
-
description:
|
|
233
|
-
"REQUIRED: Space containing the conversation (use view_spaces first)."
|
|
234
|
-
},
|
|
235
|
-
conversation_id: {
|
|
236
|
-
type: "string",
|
|
237
|
-
description:
|
|
238
|
-
"REQUIRED: Chat summary / conversation ID to mark as read."
|
|
239
|
-
},
|
|
240
|
-
organization_id: {
|
|
241
|
-
type: "string",
|
|
242
|
-
description:
|
|
243
|
-
"Optional Clerk org ID when the space belongs to an organization graph."
|
|
244
|
-
},
|
|
245
|
-
participant_id: {
|
|
246
|
-
type: "string",
|
|
247
|
-
description:
|
|
248
|
-
"Optional stable participant ID. Use the same value you used for message, subscribe_conversation, and list_conversation_inbox."
|
|
249
|
-
},
|
|
250
|
-
participant_type: {
|
|
251
|
-
type: "string",
|
|
252
|
-
description:
|
|
253
|
-
"Optional participant type. External MCP callers should set this to `agent`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
254
|
-
},
|
|
255
|
-
participant_label: {
|
|
256
|
-
type: "string",
|
|
257
|
-
description:
|
|
258
|
-
"Optional display label used when the participant identity is being created for the first time. Reuse the same label for the same external agent."
|
|
259
|
-
},
|
|
260
|
-
read_at: {
|
|
261
|
-
type: "integer",
|
|
262
|
-
description:
|
|
263
|
-
"Optional millisecond cursor to advance to. If omitted, the conversation is marked read through its latest message."
|
|
264
|
-
}
|
|
265
|
-
},
|
|
266
|
-
required: ["space_id", "conversation_id"]
|
|
267
|
-
}
|
|
268
|
-
},
|
|
269
|
-
{
|
|
270
|
-
name: "view_groups",
|
|
271
|
-
title: "View Groups",
|
|
272
|
-
description:
|
|
273
|
-
"List all groups in a space, including the projects currently inside each group plus any ungrouped projects.",
|
|
274
|
-
inputSchema: {
|
|
275
|
-
type: "object",
|
|
276
|
-
properties: {
|
|
277
|
-
space_id: {
|
|
278
|
-
type: "string",
|
|
279
|
-
description:
|
|
280
|
-
"REQUIRED: Space to list groups from (use view_spaces to see available options)"
|
|
281
|
-
}
|
|
282
|
-
},
|
|
283
|
-
required: ["space_id"]
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
|
-
{
|
|
287
|
-
name: "create_group",
|
|
288
|
-
title: "Create Group",
|
|
289
|
-
description: "Create a new group inside a space.",
|
|
290
|
-
inputSchema: {
|
|
291
|
-
type: "object",
|
|
292
|
-
properties: {
|
|
293
|
-
space_id: {
|
|
294
|
-
type: "string",
|
|
295
|
-
description:
|
|
296
|
-
"REQUIRED: Space to create the group in."
|
|
297
|
-
},
|
|
298
|
-
name: {
|
|
299
|
-
type: "string",
|
|
300
|
-
description: "Name for the new group."
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
required: ["space_id", "name"]
|
|
304
|
-
}
|
|
305
|
-
},
|
|
306
|
-
{
|
|
307
|
-
name: "rename_group",
|
|
308
|
-
title: "Rename Group",
|
|
309
|
-
description: "Rename an existing group.",
|
|
310
|
-
inputSchema: {
|
|
311
|
-
type: "object",
|
|
312
|
-
properties: {
|
|
313
|
-
space_id: {
|
|
314
|
-
type: "string",
|
|
315
|
-
description: "REQUIRED: Space containing the group."
|
|
316
|
-
},
|
|
317
|
-
group_id: {
|
|
318
|
-
type: "string",
|
|
319
|
-
description: "REQUIRED: Group ID to rename."
|
|
320
|
-
},
|
|
321
|
-
name: {
|
|
322
|
-
type: "string",
|
|
323
|
-
description: "REQUIRED: New group name."
|
|
324
|
-
}
|
|
325
|
-
},
|
|
326
|
-
required: ["space_id", "group_id", "name"]
|
|
327
|
-
}
|
|
328
|
-
},
|
|
329
|
-
{
|
|
330
|
-
name: "delete_group",
|
|
331
|
-
title: "Delete Group",
|
|
332
|
-
description:
|
|
333
|
-
"Delete a group. Projects inside it are preserved and become ungrouped.",
|
|
334
|
-
inputSchema: {
|
|
335
|
-
type: "object",
|
|
336
|
-
properties: {
|
|
337
|
-
space_id: {
|
|
338
|
-
type: "string",
|
|
339
|
-
description: "REQUIRED: Space containing the group."
|
|
340
|
-
},
|
|
341
|
-
group_id: {
|
|
342
|
-
type: "string",
|
|
343
|
-
description: "REQUIRED: Group ID to delete."
|
|
344
|
-
}
|
|
345
|
-
},
|
|
346
|
-
required: ["space_id", "group_id"]
|
|
347
|
-
}
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
name: "view_projects",
|
|
351
|
-
title: "View Projects",
|
|
352
|
-
description:
|
|
353
|
-
"List all projects in a space, including which group each project belongs to.",
|
|
354
|
-
inputSchema: {
|
|
355
|
-
type: "object",
|
|
356
|
-
properties: {
|
|
357
|
-
space_id: {
|
|
358
|
-
type: "string",
|
|
359
|
-
description:
|
|
360
|
-
"REQUIRED: Space to list projects from (use view_spaces to see available options)"
|
|
361
|
-
}
|
|
362
|
-
},
|
|
363
|
-
required: ["space_id"]
|
|
364
|
-
}
|
|
365
|
-
},
|
|
366
|
-
{
|
|
367
|
-
name: "view_project",
|
|
368
|
-
title: "View Project",
|
|
369
|
-
description:
|
|
370
|
-
"View a specific project with all its items. Use fetch_items to retrieve full content for specific item IDs.",
|
|
371
|
-
inputSchema: {
|
|
372
|
-
type: "object",
|
|
373
|
-
properties: {
|
|
374
|
-
project_id: {
|
|
375
|
-
type: "string",
|
|
376
|
-
description:
|
|
377
|
-
"Project ID to view (e.g., 'proj_123...'). Get project IDs from view_projects."
|
|
378
|
-
},
|
|
379
|
-
space_id: {
|
|
380
|
-
type: "string",
|
|
381
|
-
description:
|
|
382
|
-
"REQUIRED: Space containing the project."
|
|
383
|
-
},
|
|
384
|
-
slug: {
|
|
385
|
-
type: "string",
|
|
386
|
-
description:
|
|
387
|
-
"Optional: Project slug (URL-friendly name)."
|
|
388
|
-
}
|
|
389
|
-
},
|
|
390
|
-
required: ["space_id"]
|
|
391
|
-
}
|
|
392
|
-
},
|
|
393
|
-
{
|
|
394
|
-
name: "create_project",
|
|
395
|
-
title: "Create Project",
|
|
396
|
-
description:
|
|
397
|
-
"Create a new project in a space. Optionally place it inside a group immediately.",
|
|
398
|
-
inputSchema: {
|
|
399
|
-
type: "object",
|
|
400
|
-
properties: {
|
|
401
|
-
space_id: {
|
|
402
|
-
type: "string",
|
|
403
|
-
description: "REQUIRED: Space to create the project in."
|
|
404
|
-
},
|
|
405
|
-
name: {
|
|
406
|
-
type: "string",
|
|
407
|
-
description: "REQUIRED: Project name."
|
|
408
|
-
},
|
|
409
|
-
group_id: {
|
|
410
|
-
type: "string",
|
|
411
|
-
description: "Optional: Group ID to place the project inside."
|
|
412
|
-
}
|
|
413
|
-
},
|
|
414
|
-
required: ["space_id", "name"]
|
|
415
|
-
}
|
|
416
|
-
},
|
|
417
|
-
{
|
|
418
|
-
name: "rename_project",
|
|
419
|
-
title: "Rename Project",
|
|
420
|
-
description: "Rename an existing project.",
|
|
421
|
-
inputSchema: {
|
|
422
|
-
type: "object",
|
|
423
|
-
properties: {
|
|
424
|
-
space_id: {
|
|
425
|
-
type: "string",
|
|
426
|
-
description: "REQUIRED: Space containing the project."
|
|
427
|
-
},
|
|
428
|
-
project_id: {
|
|
429
|
-
type: "string",
|
|
430
|
-
description: "REQUIRED: Project ID to rename."
|
|
431
|
-
},
|
|
432
|
-
name: {
|
|
433
|
-
type: "string",
|
|
434
|
-
description: "REQUIRED: New project name."
|
|
435
|
-
}
|
|
436
|
-
},
|
|
437
|
-
required: ["space_id", "project_id", "name"]
|
|
438
|
-
}
|
|
439
|
-
},
|
|
440
|
-
{
|
|
441
|
-
name: "delete_project",
|
|
442
|
-
title: "Delete Project",
|
|
443
|
-
description: "Delete an existing project from a space.",
|
|
444
|
-
inputSchema: {
|
|
445
|
-
type: "object",
|
|
446
|
-
properties: {
|
|
447
|
-
space_id: {
|
|
448
|
-
type: "string",
|
|
449
|
-
description: "REQUIRED: Space containing the project."
|
|
450
|
-
},
|
|
451
|
-
project_id: {
|
|
452
|
-
type: "string",
|
|
453
|
-
description: "REQUIRED: Project ID to delete."
|
|
454
|
-
}
|
|
455
|
-
},
|
|
456
|
-
required: ["space_id", "project_id"]
|
|
457
|
-
}
|
|
458
|
-
},
|
|
459
|
-
{
|
|
460
|
-
name: "assign_project_to_group",
|
|
461
|
-
title: "Assign Project To Group",
|
|
462
|
-
description:
|
|
463
|
-
"Move a project into a group. Omit group_id to make the project ungrouped.",
|
|
464
|
-
inputSchema: {
|
|
465
|
-
type: "object",
|
|
466
|
-
properties: {
|
|
467
|
-
space_id: {
|
|
468
|
-
type: "string",
|
|
469
|
-
description: "REQUIRED: Space containing the project."
|
|
470
|
-
},
|
|
471
|
-
project_id: {
|
|
472
|
-
type: "string",
|
|
473
|
-
description: "REQUIRED: Project ID to move."
|
|
474
|
-
},
|
|
475
|
-
group_id: {
|
|
476
|
-
type: "string",
|
|
477
|
-
description:
|
|
478
|
-
"Optional: Target group ID. Omit this to ungroup the project."
|
|
479
|
-
}
|
|
480
|
-
},
|
|
481
|
-
required: ["space_id", "project_id"]
|
|
482
|
-
}
|
|
483
|
-
},
|
|
484
|
-
{
|
|
485
|
-
name: "start",
|
|
486
|
-
title: "Start Space Session",
|
|
487
|
-
description:
|
|
488
|
-
"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. Use this before asking Tan to do work in that space.",
|
|
489
|
-
inputSchema: {
|
|
490
|
-
type: "object",
|
|
491
|
-
properties: {
|
|
492
|
-
space_id: {
|
|
493
|
-
type: "string",
|
|
494
|
-
description: "Space to start (e.g., 'renvoi', 'personal')"
|
|
495
|
-
}
|
|
496
|
-
},
|
|
497
|
-
required: ["space_id"]
|
|
498
|
-
}
|
|
499
|
-
},
|
|
500
|
-
{
|
|
501
|
-
name: "view_spaces",
|
|
502
|
-
title: "View Spaces",
|
|
503
|
-
description:
|
|
504
|
-
"View the spaces this connector can access so you can choose the right space for memory, communicating and collaborating with Tan agent. If your connector is scoped to one space, you will only see that space. Use the exact space_id from this list for all space-scoped tools.",
|
|
505
|
-
inputSchema: {
|
|
506
|
-
type: "object",
|
|
507
|
-
properties: {}
|
|
508
|
-
}
|
|
509
|
-
},
|
|
510
|
-
{
|
|
511
|
-
name: "create_space",
|
|
512
|
-
title: "Create Space",
|
|
513
|
-
description: "Create a new space with optional configuration.",
|
|
514
|
-
inputSchema: {
|
|
515
|
-
type: "object",
|
|
516
|
-
properties: {
|
|
517
|
-
name: {
|
|
518
|
-
type: "string",
|
|
519
|
-
description:
|
|
520
|
-
"Name for the NEW space being created (e.g., 'Work', 'Personal', 'Project X')"
|
|
521
|
-
},
|
|
522
|
-
description: {
|
|
523
|
-
type: "string",
|
|
524
|
-
description:
|
|
525
|
-
"Brief description of what this NEW space is for (e.g., 'Work-related context and tasks')"
|
|
526
|
-
},
|
|
527
|
-
config_badges: {
|
|
528
|
-
type: "array",
|
|
529
|
-
items: { type: "string" },
|
|
530
|
-
description:
|
|
531
|
-
"Array of keywords for start tool keywords in this NEW space. These keywords help steer what context gets loaded when running 'start' for this space. Examples: ['fitness', 'recipes', 'travel planning'], ['client work', 'meetings', 'proposals'], ['TypeScript', 'React', 'API design']. They act as search terms to prioritize relevant context."
|
|
532
|
-
},
|
|
533
|
-
startup_preferences: {
|
|
534
|
-
type: "string",
|
|
535
|
-
description:
|
|
536
|
-
"AI behavior preferences for this NEW space. Guides how AI assistants and agents should communicate and behave (e.g., 'be concise and frank', 'think critically', 'play devils advocate'). This appears in the start briefing under 'Assistant Preferences'."
|
|
537
|
-
}
|
|
538
|
-
},
|
|
539
|
-
required: ["name"]
|
|
540
|
-
}
|
|
541
|
-
},
|
|
542
|
-
{
|
|
543
|
-
name: "view_space",
|
|
544
|
-
title: "View Space",
|
|
545
|
-
description:
|
|
546
|
-
"View detailed information about a space including configuration and overview. Use this when you need the exact active scope before saving memory or communicating and collaborating with Tan agent.",
|
|
547
|
-
inputSchema: {
|
|
548
|
-
type: "object",
|
|
549
|
-
properties: {
|
|
550
|
-
space_id: {
|
|
551
|
-
type: "string",
|
|
552
|
-
description: "ID of space to get info for"
|
|
553
|
-
}
|
|
554
|
-
},
|
|
555
|
-
required: ["space_id"]
|
|
556
|
-
}
|
|
557
|
-
},
|
|
558
|
-
{
|
|
559
|
-
name: "update_memory",
|
|
560
|
-
title: "Update Memory",
|
|
561
|
-
description:
|
|
562
|
-
"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- Prefer updating an existing related memory when the new information refines or extends it instead of creating a duplicate\n- Use descriptive titles that capture the essence\n- Add context about decisions, reasoning, and outcomes\n- Every write should reassess the surrounding scope and improve organization when possible: prefer updating, merging, linking, reparenting, or retitling existing items over spraying disconnected new ones\n\nUse project_id and group_id when you know the active project or group scope. The system learns from patterns - sharing how the user works helps it anticipate their needs.",
|
|
563
|
-
inputSchema: {
|
|
564
|
-
type: "object",
|
|
565
|
-
properties: {
|
|
566
|
-
space_id: {
|
|
567
|
-
type: "string",
|
|
568
|
-
description:
|
|
569
|
-
"REQUIRED: Space to operate in (use view_spaces to see available options)"
|
|
570
|
-
},
|
|
571
|
-
project_id: {
|
|
572
|
-
type: "string",
|
|
573
|
-
description:
|
|
574
|
-
"Optional: Project to add items to. All items created in this request will be linked to this project and appear on its canvas. Get project IDs from the start tool output."
|
|
575
|
-
},
|
|
576
|
-
group_id: {
|
|
577
|
-
type: "string",
|
|
578
|
-
description:
|
|
579
|
-
"Optional: Group to add items to. Use this alongside project_id when the current item belongs in a group."
|
|
580
|
-
},
|
|
581
|
-
add: {
|
|
582
|
-
type: "object",
|
|
583
|
-
description:
|
|
584
|
-
"Add new items. ALWAYS pass 'type' field on each item to skip expensive auto-classification.",
|
|
585
|
-
properties: {
|
|
586
|
-
items: {
|
|
587
|
-
type: "array",
|
|
588
|
-
items: {
|
|
589
|
-
type: "object",
|
|
590
|
-
properties: {
|
|
591
|
-
title: { type: "string", description: "Item title" },
|
|
592
|
-
content: {
|
|
593
|
-
type: "string",
|
|
594
|
-
description:
|
|
595
|
-
"Item content. VALUABLE CONTENT INCLUDES: decisions and their reasoning, user preferences observed, lessons learned, process descriptions, meeting outcomes, project context, expertise areas, working patterns, and anything that would help future sessions understand this user/space better."
|
|
596
|
-
},
|
|
597
|
-
type: {
|
|
598
|
-
type: "string",
|
|
599
|
-
enum: ["task", "context", "skill", "document", "insight"],
|
|
600
|
-
description:
|
|
601
|
-
"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."
|
|
602
|
-
},
|
|
603
|
-
subtasks: {
|
|
604
|
-
type: "array",
|
|
605
|
-
items: {
|
|
606
|
-
type: "object",
|
|
607
|
-
properties: {
|
|
608
|
-
title: { type: "string", description: "Subtask title" },
|
|
609
|
-
content: {
|
|
610
|
-
type: "string",
|
|
611
|
-
description: "Subtask details"
|
|
612
|
-
}
|
|
613
|
-
},
|
|
614
|
-
required: ["title"]
|
|
615
|
-
},
|
|
616
|
-
description:
|
|
617
|
-
"Optional: Array of subtasks for task items. Each subtask becomes a linked child task."
|
|
618
|
-
},
|
|
619
|
-
parent_id: {
|
|
620
|
-
type: "string",
|
|
621
|
-
description:
|
|
622
|
-
"Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent."
|
|
623
|
-
},
|
|
624
|
-
assignee_id: {
|
|
625
|
-
type: "string",
|
|
626
|
-
description:
|
|
627
|
-
"Optional: Assignee ID (user or agent ID) for task assignment on creation."
|
|
628
|
-
},
|
|
629
|
-
assignee_type: {
|
|
630
|
-
type: "string",
|
|
631
|
-
enum: ["agent", "user"],
|
|
632
|
-
description:
|
|
633
|
-
"Optional: Type of assignee (agent or user). Required if assignee_id provided."
|
|
634
|
-
},
|
|
635
|
-
linkedItemIds: {
|
|
636
|
-
type: "array",
|
|
637
|
-
items: { type: "string" },
|
|
638
|
-
description:
|
|
639
|
-
"Optional: Array of item IDs to create explicit LINKED_TO relationships with."
|
|
640
|
-
}
|
|
641
|
-
},
|
|
642
|
-
required: ["title", "content", "type"]
|
|
643
|
-
},
|
|
644
|
-
description:
|
|
645
|
-
"Array of items to add. ALWAYS pass 'type' field to skip auto-classification. System suggests 1-3 relevant topics based on content. Tasks can include subtasks array for hierarchical task management. Before adding, check whether updating, merging, linking, or reparenting an existing item would keep the touched scope cleaner."
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
|
-
},
|
|
649
|
-
update: {
|
|
650
|
-
type: "object",
|
|
651
|
-
description:
|
|
652
|
-
"Update existing items (context, tasks, or skills) - system detects type from ID prefix",
|
|
653
|
-
properties: {
|
|
654
|
-
items: {
|
|
655
|
-
type: "array",
|
|
656
|
-
items: {
|
|
657
|
-
type: "object",
|
|
658
|
-
properties: {
|
|
659
|
-
id: {
|
|
660
|
-
type: "string",
|
|
661
|
-
description:
|
|
662
|
-
"Item ID to update (mem_* for context, task_* for tasks, skill_* for skills)"
|
|
663
|
-
},
|
|
664
|
-
title: {
|
|
665
|
-
type: "string",
|
|
666
|
-
description: "New title (optional)"
|
|
667
|
-
},
|
|
668
|
-
content: {
|
|
669
|
-
type: "string",
|
|
670
|
-
description: "New content (optional)"
|
|
671
|
-
},
|
|
672
|
-
topics: {
|
|
673
|
-
type: "array",
|
|
674
|
-
items: { type: "string" },
|
|
675
|
-
description: "New topics (optional)"
|
|
676
|
-
},
|
|
677
|
-
status: {
|
|
678
|
-
type: "string",
|
|
679
|
-
enum: [
|
|
680
|
-
"pending",
|
|
681
|
-
"in_progress",
|
|
682
|
-
"completed",
|
|
683
|
-
"invalidated"
|
|
684
|
-
],
|
|
685
|
-
description: "New status (optional, tasks only)"
|
|
686
|
-
},
|
|
687
|
-
priority: {
|
|
688
|
-
type: "string",
|
|
689
|
-
enum: ["urgent", "high", "medium", "low"],
|
|
690
|
-
description: "New priority (optional, tasks only)"
|
|
691
|
-
},
|
|
692
|
-
assignee_id: {
|
|
693
|
-
type: "string",
|
|
694
|
-
description:
|
|
695
|
-
"Assignee ID (user or agent ID). Set to null to unassign. (optional, tasks only)"
|
|
696
|
-
},
|
|
697
|
-
assignee_type: {
|
|
698
|
-
type: "string",
|
|
699
|
-
enum: ["agent", "user"],
|
|
700
|
-
description: "Type of assignee (optional, tasks only)"
|
|
701
|
-
},
|
|
702
|
-
parent_id: {
|
|
703
|
-
type: "string",
|
|
704
|
-
description:
|
|
705
|
-
"Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent."
|
|
706
|
-
},
|
|
707
|
-
linkedItemIds: {
|
|
708
|
-
type: "array",
|
|
709
|
-
items: { type: "string" },
|
|
710
|
-
description:
|
|
711
|
-
"Optional: Array of item IDs to create explicit LINKED_TO relationships with."
|
|
712
|
-
}
|
|
713
|
-
},
|
|
714
|
-
required: ["id"]
|
|
715
|
-
},
|
|
716
|
-
description:
|
|
717
|
-
"Array of items to update. Type automatically detected from ID prefix (mem_* = context, task_* = task, skill_* = skill). For context/skill items, status/priority/assignee are ignored. Treat updates as a chance to improve title clarity, links, parent placement, deduplication, and overall organization of the touched scope."
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
|
-
},
|
|
721
|
-
delete: {
|
|
722
|
-
type: "object",
|
|
723
|
-
description:
|
|
724
|
-
"Delete items by ID - system detects type from ID prefix",
|
|
725
|
-
properties: {
|
|
726
|
-
item_ids: {
|
|
727
|
-
type: "array",
|
|
728
|
-
items: { type: "string" },
|
|
729
|
-
description:
|
|
730
|
-
"Array of item IDs to delete (mem_* for context, task_* for tasks, skill_* for skills). Type automatically detected from ID prefix."
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
},
|
|
735
|
-
required: ["space_id"]
|
|
736
|
-
}
|
|
737
|
-
},
|
|
738
|
-
{
|
|
739
|
-
name: "update_folders",
|
|
740
|
-
title: "Update Folders",
|
|
741
|
-
description:
|
|
742
|
-
"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.",
|
|
743
|
-
inputSchema: {
|
|
744
|
-
type: "object",
|
|
745
|
-
properties: {
|
|
746
|
-
space_id: {
|
|
747
|
-
type: "string",
|
|
748
|
-
description:
|
|
749
|
-
"REQUIRED: Space to operate in (use view_spaces to see available options)."
|
|
750
|
-
},
|
|
751
|
-
list: {
|
|
752
|
-
type: "object",
|
|
753
|
-
description:
|
|
754
|
-
"Optional list operation. Use this first to discover existing folders and IDs.",
|
|
755
|
-
properties: {
|
|
756
|
-
section_type: {
|
|
757
|
-
type: "string",
|
|
758
|
-
enum: [
|
|
759
|
-
"projects",
|
|
760
|
-
"insights",
|
|
761
|
-
"insights_space",
|
|
762
|
-
"insights_user",
|
|
763
|
-
"agents",
|
|
764
|
-
"skills",
|
|
765
|
-
"conversations",
|
|
766
|
-
"dashboard"
|
|
767
|
-
],
|
|
768
|
-
description: "Optional: filter folders by sidebar section."
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
},
|
|
772
|
-
create: {
|
|
773
|
-
type: "array",
|
|
774
|
-
description: "Optional create operations.",
|
|
775
|
-
items: {
|
|
776
|
-
type: "object",
|
|
777
|
-
properties: {
|
|
778
|
-
name: { type: "string", description: "Folder name." },
|
|
779
|
-
section_type: {
|
|
780
|
-
type: "string",
|
|
781
|
-
enum: [
|
|
782
|
-
"projects",
|
|
783
|
-
"insights",
|
|
784
|
-
"insights_space",
|
|
785
|
-
"insights_user",
|
|
786
|
-
"agents",
|
|
787
|
-
"skills",
|
|
788
|
-
"conversations",
|
|
789
|
-
"dashboard"
|
|
790
|
-
],
|
|
791
|
-
description: "Sidebar section this folder belongs to."
|
|
792
|
-
},
|
|
793
|
-
parent_id: {
|
|
794
|
-
type: "string",
|
|
795
|
-
description: "Optional parent folder ID for nesting."
|
|
796
|
-
}
|
|
797
|
-
},
|
|
798
|
-
required: ["name", "section_type"]
|
|
799
|
-
}
|
|
800
|
-
},
|
|
801
|
-
rename: {
|
|
802
|
-
type: "array",
|
|
803
|
-
description: "Optional rename operations.",
|
|
804
|
-
items: {
|
|
805
|
-
type: "object",
|
|
806
|
-
properties: {
|
|
807
|
-
folder_id: { type: "string", description: "Folder ID to rename." },
|
|
808
|
-
new_name: { type: "string", description: "New folder name." }
|
|
809
|
-
},
|
|
810
|
-
required: ["folder_id", "new_name"]
|
|
811
|
-
}
|
|
812
|
-
},
|
|
813
|
-
move_items: {
|
|
814
|
-
type: "array",
|
|
815
|
-
description:
|
|
816
|
-
"Optional item move operations. Omit folder_id to move an item back to root.",
|
|
817
|
-
items: {
|
|
818
|
-
type: "object",
|
|
819
|
-
properties: {
|
|
820
|
-
item_id: { type: "string", description: "Item ID to move." },
|
|
821
|
-
folder_id: {
|
|
822
|
-
type: "string",
|
|
823
|
-
description:
|
|
824
|
-
"Optional target folder ID. Omit this field to remove the item from its current folder."
|
|
825
|
-
}
|
|
826
|
-
},
|
|
827
|
-
required: ["item_id"]
|
|
828
|
-
}
|
|
829
|
-
},
|
|
830
|
-
delete: {
|
|
831
|
-
type: "array",
|
|
832
|
-
description: "Optional delete operations (folder IDs).",
|
|
833
|
-
items: { type: "string" }
|
|
834
|
-
}
|
|
835
|
-
},
|
|
836
|
-
required: ["space_id"]
|
|
837
|
-
}
|
|
838
|
-
},
|
|
839
|
-
{
|
|
840
|
-
name: "message",
|
|
841
|
-
title: "Message Assistant",
|
|
842
|
-
description:
|
|
843
|
-
"Primary way to use Intangle for memory, communicating and collaborating with Tan agent in a shared thread. Send a request and either wait for one assistant turn to complete or submit asynchronously for later polling. External agents should include a stable participant_id, participant_type=`agent`, and participant_label so Tan can identify who is speaking and keep progress updates attached to the right caller. Conversations are backed by `summary_*` IDs; reuse the returned `conversation_id` and reuse the returned `session_id` so callers can continue the same thread reliably across turns. For shared coordination channels, pass a stable `channel_id` and keep reusing the same `conversation_id`; `channel_id` scopes context, while `conversation_id` is the durable thread anchor.",
|
|
844
|
-
inputSchema: {
|
|
845
|
-
type: "object",
|
|
846
|
-
properties: {
|
|
847
|
-
space_id: {
|
|
848
|
-
type: "string",
|
|
849
|
-
description:
|
|
850
|
-
"Space to run the assistant turn in (use view_spaces first)."
|
|
851
|
-
},
|
|
852
|
-
content: {
|
|
853
|
-
type: "string",
|
|
854
|
-
description: "User message content to send to Tan."
|
|
855
|
-
},
|
|
856
|
-
provider: {
|
|
857
|
-
type: "string",
|
|
858
|
-
description: "Optional provider alias (defaults to 'tan')."
|
|
859
|
-
},
|
|
860
|
-
conversation_id: {
|
|
861
|
-
type: "string",
|
|
862
|
-
description:
|
|
863
|
-
"Optional existing conversation/chat summary ID to resume a specific conversation. If omitted, Intangle uses/creates the active conversation for this space."
|
|
864
|
-
},
|
|
865
|
-
new_conversation: {
|
|
866
|
-
type: "boolean",
|
|
867
|
-
description:
|
|
868
|
-
"Optional escape hatch. When true, force a fresh conversation instead of reusing the current active thread."
|
|
869
|
-
},
|
|
870
|
-
session_id: {
|
|
871
|
-
type: "string",
|
|
872
|
-
description:
|
|
873
|
-
"Optional runtime session ID to reuse across calls. For follow-up turns, reuse the exact session_id returned by the previous call for best continuity and lower warm-up overhead."
|
|
874
|
-
},
|
|
875
|
-
project_id: {
|
|
876
|
-
type: "string",
|
|
877
|
-
description: "Optional project scope for the assistant turn."
|
|
878
|
-
},
|
|
879
|
-
group_id: {
|
|
880
|
-
type: "string",
|
|
881
|
-
description:
|
|
882
|
-
"Optional group scope for the assistant turn. Use this with channel_id for group-scoped coordination."
|
|
883
|
-
},
|
|
884
|
-
channel_id: {
|
|
885
|
-
type: "string",
|
|
886
|
-
description:
|
|
887
|
-
"Optional route/channel scope for the assistant turn. Defaults to root when omitted. Examples: root, group|legal, project|work/launch."
|
|
888
|
-
},
|
|
889
|
-
organization_id: {
|
|
890
|
-
type: "string",
|
|
891
|
-
description:
|
|
892
|
-
"Optional Clerk org ID when the space belongs to an organization graph."
|
|
893
|
-
},
|
|
894
|
-
timeout_ms: {
|
|
895
|
-
type: "integer",
|
|
896
|
-
description:
|
|
897
|
-
"Optional timeout in milliseconds (10,000 to 300,000; default 120,000)."
|
|
898
|
-
},
|
|
899
|
-
wait_for_response: {
|
|
900
|
-
type: "boolean",
|
|
901
|
-
description:
|
|
902
|
-
"Optional. Defaults to true. Set false to submit the turn asynchronously when you want a quick acknowledgement first and then poll later with list_conversation_inbox or fetch_conversation_messages."
|
|
903
|
-
},
|
|
904
|
-
participant_id: {
|
|
905
|
-
type: "string",
|
|
906
|
-
description:
|
|
907
|
-
"Optional stable participant ID for collaborative/shared chats. External agents should always send and reuse an explicit `agent_*` style ID so Tan can tell different external agents apart."
|
|
908
|
-
},
|
|
909
|
-
participant_type: {
|
|
910
|
-
type: "string",
|
|
911
|
-
description:
|
|
912
|
-
"Optional participant type. External MCP callers should set this to `agent`. Supported values: `user`, `agent`, `assistant`, `connector`."
|
|
913
|
-
},
|
|
914
|
-
participant_label: {
|
|
915
|
-
type: "string",
|
|
916
|
-
description:
|
|
917
|
-
"Optional display label for the participant in collaborative chat UIs. External agents should send a clear label that Tan can use in follow-up coordination."
|
|
918
|
-
},
|
|
919
|
-
timezone: {
|
|
920
|
-
type: "string",
|
|
921
|
-
description: "Optional IANA timezone for assistant context."
|
|
922
|
-
}
|
|
923
|
-
},
|
|
924
|
-
required: ["space_id", "content"]
|
|
925
|
-
}
|
|
926
|
-
}
|
|
927
|
-
// DISABLED: memory_action tool is broken and causing errors.
|
|
928
|
-
// Pending OHM protocol fix. Use update_memory, search, or fetch_items instead.
|
|
929
|
-
// {
|
|
930
|
-
// name: "memory_action",
|
|
931
|
-
// title: "Memory Action (OHM Protocol)",
|
|
932
|
-
// description:
|
|
933
|
-
// "Perform memory operations using natural language. Add, update, delete items, fetch details, view topics. The system parses your intent into structured actions. Do NOT use for search - context comes from background activation.",
|
|
934
|
-
// inputSchema: {
|
|
935
|
-
// type: "object",
|
|
936
|
-
// properties: {
|
|
937
|
-
// space_id: {
|
|
938
|
-
// type: "string",
|
|
939
|
-
// description: "The space to operate in"
|
|
940
|
-
// },
|
|
941
|
-
// intent: {
|
|
942
|
-
// type: "string",
|
|
943
|
-
// description:
|
|
944
|
-
// "Natural language description of the memory operation (e.g., 'add a task to fix the login bug', 'mark task_123 as completed', 'delete mem_456')"
|
|
945
|
-
// }
|
|
946
|
-
// },
|
|
947
|
-
// required: ["space_id", "intent"]
|
|
948
|
-
// }
|
|
949
|
-
// }
|
|
950
|
-
]
|
|
951
|
-
|
|
952
|
-
const READ_ONLY_TOOLS = new Set([
|
|
953
|
-
"search",
|
|
954
|
-
"fetch_items",
|
|
955
|
-
"read_artifact",
|
|
956
|
-
"usage_status",
|
|
957
|
-
"fetch_conversation_messages",
|
|
958
|
-
"list_conversation_inbox",
|
|
959
|
-
"start",
|
|
960
|
-
"view_spaces",
|
|
961
|
-
"view_space"
|
|
962
|
-
])
|
|
963
|
-
|
|
964
|
-
const DESTRUCTIVE_TOOLS = new Set([
|
|
965
|
-
"create_space",
|
|
966
|
-
"update_memory",
|
|
967
|
-
"update_folders"
|
|
968
|
-
])
|
|
969
|
-
|
|
970
|
-
const IDEMPOTENT_TOOLS = new Set([
|
|
971
|
-
"search",
|
|
972
|
-
"fetch_items",
|
|
973
|
-
"read_artifact",
|
|
974
|
-
"usage_status",
|
|
975
|
-
"fetch_conversation_messages",
|
|
976
|
-
"list_conversation_inbox",
|
|
977
|
-
"start",
|
|
978
|
-
"view_spaces",
|
|
979
|
-
"view_space"
|
|
980
|
-
])
|
|
981
|
-
|
|
982
|
-
export const TOOLS = TOOL_DEFINITIONS.map((tool) => ({
|
|
983
|
-
...tool,
|
|
984
|
-
annotations: {
|
|
985
|
-
...(READ_ONLY_TOOLS.has(tool.name) ? { readOnlyHint: true } : {}),
|
|
986
|
-
...(DESTRUCTIVE_TOOLS.has(tool.name) ? { destructiveHint: true } : {}),
|
|
987
|
-
...(IDEMPOTENT_TOOLS.has(tool.name) ? { idempotentHint: true } : {}),
|
|
988
|
-
openWorldHint: true
|
|
989
|
-
}
|
|
990
|
-
}))
|