@intangle/mcp-server 2.3.5 → 2.3.6

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.
@@ -9,20 +9,20 @@ export const TOOLS = [
9
9
  properties: {
10
10
  query: {
11
11
  type: "string",
12
- description: "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'",
12
+ description: "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'"
13
13
  },
14
14
  space_id: {
15
15
  type: "string",
16
- description: "REQUIRED: Space to search in (use view_spaces to see available options)",
16
+ description: "REQUIRED: Space to search in (use view_spaces to see available options)"
17
17
  },
18
18
  topics: {
19
19
  type: "array",
20
20
  items: { type: "string" },
21
- description: "Optional: Filter by specific topics",
22
- },
21
+ description: "Optional: Filter by specific topics"
22
+ }
23
23
  },
24
- required: ["query", "space_id"],
25
- },
24
+ required: ["query", "space_id"]
25
+ }
26
26
  },
27
27
  {
28
28
  name: "fetch_items",
@@ -33,15 +33,15 @@ export const TOOLS = [
33
33
  properties: {
34
34
  id: {
35
35
  type: "string",
36
- description: "Single ID to fetch (context or task ID like 'mem_123' or 'task_456' or 'skill_789')",
36
+ description: "Single ID to fetch (context or task ID like 'mem_123' or 'task_456' or 'skill_789')"
37
37
  },
38
38
  ids: {
39
39
  type: "array",
40
40
  items: { type: "string" },
41
- description: "Array of IDs to fetch (mix of context, task, and skill IDs). Use this to fetch multiple items in one call.",
42
- },
43
- },
44
- },
41
+ description: "Array of IDs to fetch (mix of context, task, and skill IDs). Use this to fetch multiple items in one call."
42
+ }
43
+ }
44
+ }
45
45
  },
46
46
  {
47
47
  name: "view_projects",
@@ -52,11 +52,11 @@ export const TOOLS = [
52
52
  properties: {
53
53
  space_id: {
54
54
  type: "string",
55
- description: "REQUIRED: Space to list projects from (use view_spaces to see available options)",
56
- },
55
+ description: "REQUIRED: Space to list projects from (use view_spaces to see available options)"
56
+ }
57
57
  },
58
- required: ["space_id"],
59
- },
58
+ required: ["space_id"]
59
+ }
60
60
  },
61
61
  {
62
62
  name: "view_project",
@@ -67,33 +67,33 @@ export const TOOLS = [
67
67
  properties: {
68
68
  project_id: {
69
69
  type: "string",
70
- description: "Project ID to view (e.g., 'proj_123...'). Get project IDs from view_projects.",
70
+ description: "Project ID to view (e.g., 'proj_123...'). Get project IDs from view_projects."
71
71
  },
72
72
  space_id: {
73
73
  type: "string",
74
- description: "Optional: Space ID (required if using slug instead of project_id)",
74
+ description: "Optional: Space ID (required if using slug instead of project_id)"
75
75
  },
76
76
  slug: {
77
77
  type: "string",
78
- description: "Optional: Project slug (URL-friendly name). Requires space_id if used.",
79
- },
80
- },
81
- },
78
+ description: "Optional: Project slug (URL-friendly name). Requires space_id if used."
79
+ }
80
+ }
81
+ }
82
82
  },
83
83
  {
84
84
  name: "start",
85
85
  title: "Start Space Session",
86
- description: "Begin working in a space. Returns a dynamic briefing of recent developments and current priorities.",
86
+ description: "Begin working in a space. Returns a dynamic briefing including: recent developments, current priorities, active tasks, user preferences for this space, and learned insights about how the user/org works. Use this context to personalize your assistance and anticipate needs.",
87
87
  inputSchema: {
88
88
  type: "object",
89
89
  properties: {
90
90
  space_id: {
91
91
  type: "string",
92
- description: "Space to start (e.g., 'renvoi', 'personal')",
93
- },
92
+ description: "Space to start (e.g., 'renvoi', 'personal')"
93
+ }
94
94
  },
95
- required: ["space_id"],
96
- },
95
+ required: ["space_id"]
96
+ }
97
97
  },
98
98
  {
99
99
  name: "view_spaces",
@@ -101,8 +101,8 @@ export const TOOLS = [
101
101
  description: "View all available spaces with their descriptions and metrics.",
102
102
  inputSchema: {
103
103
  type: "object",
104
- properties: {},
105
- },
104
+ properties: {}
105
+ }
106
106
  },
107
107
  {
108
108
  name: "create_space",
@@ -113,24 +113,24 @@ export const TOOLS = [
113
113
  properties: {
114
114
  name: {
115
115
  type: "string",
116
- description: "Name for the NEW space being created (e.g., 'Work', 'Personal', 'Project X')",
116
+ description: "Name for the NEW space being created (e.g., 'Work', 'Personal', 'Project X')"
117
117
  },
118
118
  description: {
119
119
  type: "string",
120
- description: "Brief description of what this NEW space is for (e.g., 'Work-related context and tasks')",
120
+ description: "Brief description of what this NEW space is for (e.g., 'Work-related context and tasks')"
121
121
  },
122
122
  config_badges: {
123
123
  type: "array",
124
124
  items: { type: "string" },
125
- description: "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.",
125
+ description: "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."
126
126
  },
127
127
  startup_preferences: {
128
128
  type: "string",
129
- description: "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'.",
130
- },
129
+ description: "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'."
130
+ }
131
131
  },
132
- required: ["name"],
133
- },
132
+ required: ["name"]
133
+ }
134
134
  },
135
135
  {
136
136
  name: "view_space",
@@ -141,26 +141,26 @@ export const TOOLS = [
141
141
  properties: {
142
142
  space_id: {
143
143
  type: "string",
144
- description: "ID of space to get info for",
145
- },
144
+ description: "ID of space to get info for"
145
+ }
146
146
  },
147
- required: ["space_id"],
148
- },
147
+ required: ["space_id"]
148
+ }
149
149
  },
150
150
  {
151
151
  name: "update_space",
152
152
  title: "Update Space",
153
- description: "Add, update, or delete items in a space. Supports any combination of operations in a single call.",
153
+ description: "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.",
154
154
  inputSchema: {
155
155
  type: "object",
156
156
  properties: {
157
157
  space_id: {
158
158
  type: "string",
159
- description: "REQUIRED: Space to operate in (use view_spaces to see available options)",
159
+ description: "REQUIRED: Space to operate in (use view_spaces to see available options)"
160
160
  },
161
161
  project_id: {
162
162
  type: "string",
163
- description: "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.",
163
+ description: "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."
164
164
  },
165
165
  add: {
166
166
  type: "object",
@@ -174,7 +174,7 @@ export const TOOLS = [
174
174
  title: { type: "string", description: "Item title" },
175
175
  content: {
176
176
  type: "string",
177
- description: "Item content - system automatically classifies as task (actionable), context (knowledge), or skill (workflow/procedure) and suggests relevant topics",
177
+ description: "Item content - system automatically classifies as task (actionable), context (knowledge), or skill (workflow/procedure) and suggests relevant topics. 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."
178
178
  },
179
179
  subtasks: {
180
180
  type: "array",
@@ -182,36 +182,39 @@ export const TOOLS = [
182
182
  type: "object",
183
183
  properties: {
184
184
  title: { type: "string", description: "Subtask title" },
185
- content: { type: "string", description: "Subtask details" },
185
+ content: {
186
+ type: "string",
187
+ description: "Subtask details"
188
+ }
186
189
  },
187
- required: ["title"],
190
+ required: ["title"]
188
191
  },
189
- description: "Optional: Array of subtasks for task items. Each subtask becomes a linked child task.",
192
+ description: "Optional: Array of subtasks for task items. Each subtask becomes a linked child task."
190
193
  },
191
194
  parent_id: {
192
195
  type: "string",
193
- description: "Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent.",
196
+ description: "Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent."
194
197
  },
195
198
  assignee_id: {
196
199
  type: "string",
197
- description: "Optional: Assignee ID (user or agent ID) for task assignment on creation.",
200
+ description: "Optional: Assignee ID (user or agent ID) for task assignment on creation."
198
201
  },
199
202
  assignee_type: {
200
203
  type: "string",
201
204
  enum: ["agent", "user"],
202
- description: "Optional: Type of assignee (agent or user). Required if assignee_id provided.",
205
+ description: "Optional: Type of assignee (agent or user). Required if assignee_id provided."
203
206
  },
204
207
  linkedItemIds: {
205
208
  type: "array",
206
209
  items: { type: "string" },
207
- description: "Optional: Array of item IDs to create explicit LINKED_TO relationships with.",
208
- },
210
+ description: "Optional: Array of item IDs to create explicit LINKED_TO relationships with."
211
+ }
209
212
  },
210
- required: ["title", "content"],
213
+ required: ["title", "content"]
211
214
  },
212
- description: "Array of items to add. System intelligently: (1) classifies as task, context, or skill, (2) suggests 1-3 relevant topics based on content and existing topics. Examples: 'Need to fix auth bug' → task with topics like 'authentication', 'bug-fix'. 'Learned React batches updates' → context with topics like 'react', 'learning'. Tasks can include subtasks array for hierarchical task management.",
213
- },
214
- },
215
+ description: "Array of items to add. System intelligently: (1) classifies as task, context, or skill, (2) suggests 1-3 relevant topics based on content and existing topics. Examples: 'Need to fix auth bug' → task with topics like 'authentication', 'bug-fix'. 'Learned React batches updates' → context with topics like 'react', 'learning'. Tasks can include subtasks array for hierarchical task management."
216
+ }
217
+ }
215
218
  },
216
219
  update: {
217
220
  type: "object",
@@ -222,19 +225,22 @@ export const TOOLS = [
222
225
  items: {
223
226
  type: "object",
224
227
  properties: {
225
- id: { type: "string", description: "Item ID to update (mem_* for context, task_* for tasks, skill_* for skills)" },
228
+ id: {
229
+ type: "string",
230
+ description: "Item ID to update (mem_* for context, task_* for tasks, skill_* for skills)"
231
+ },
226
232
  title: {
227
233
  type: "string",
228
- description: "New title (optional)",
234
+ description: "New title (optional)"
229
235
  },
230
236
  content: {
231
237
  type: "string",
232
- description: "New content (optional)",
238
+ description: "New content (optional)"
233
239
  },
234
240
  topics: {
235
241
  type: "array",
236
242
  items: { type: "string" },
237
- description: "New topics (optional)",
243
+ description: "New topics (optional)"
238
244
  },
239
245
  status: {
240
246
  type: "string",
@@ -242,39 +248,39 @@ export const TOOLS = [
242
248
  "pending",
243
249
  "in_progress",
244
250
  "completed",
245
- "invalidated",
251
+ "invalidated"
246
252
  ],
247
- description: "New status (optional, tasks only)",
253
+ description: "New status (optional, tasks only)"
248
254
  },
249
255
  priority: {
250
256
  type: "string",
251
257
  enum: ["urgent", "high", "medium", "low"],
252
- description: "New priority (optional, tasks only)",
258
+ description: "New priority (optional, tasks only)"
253
259
  },
254
260
  assignee_id: {
255
261
  type: "string",
256
- description: "Assignee ID (user or agent ID). Set to null to unassign. (optional, tasks only)",
262
+ description: "Assignee ID (user or agent ID). Set to null to unassign. (optional, tasks only)"
257
263
  },
258
264
  assignee_type: {
259
265
  type: "string",
260
266
  enum: ["agent", "user"],
261
- description: "Type of assignee (optional, tasks only)",
267
+ description: "Type of assignee (optional, tasks only)"
262
268
  },
263
269
  parent_id: {
264
270
  type: "string",
265
- description: "Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent.",
271
+ description: "Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent."
266
272
  },
267
273
  linkedItemIds: {
268
274
  type: "array",
269
275
  items: { type: "string" },
270
- description: "Optional: Array of item IDs to create explicit LINKED_TO relationships with.",
271
- },
276
+ description: "Optional: Array of item IDs to create explicit LINKED_TO relationships with."
277
+ }
272
278
  },
273
- required: ["id"],
279
+ required: ["id"]
274
280
  },
275
- description: "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.",
276
- },
277
- },
281
+ description: "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."
282
+ }
283
+ }
278
284
  },
279
285
  delete: {
280
286
  type: "object",
@@ -283,13 +289,13 @@ export const TOOLS = [
283
289
  item_ids: {
284
290
  type: "array",
285
291
  items: { type: "string" },
286
- description: "Array of item IDs to delete (mem_* for context, task_* for tasks, skill_* for skills). Type automatically detected from ID prefix.",
287
- },
288
- },
289
- },
292
+ description: "Array of item IDs to delete (mem_* for context, task_* for tasks, skill_* for skills). Type automatically detected from ID prefix."
293
+ }
294
+ }
295
+ }
290
296
  },
291
- required: ["space_id"],
292
- },
297
+ required: ["space_id"]
298
+ }
293
299
  },
294
300
  {
295
301
  name: "memory_action",
@@ -300,14 +306,14 @@ export const TOOLS = [
300
306
  properties: {
301
307
  space_id: {
302
308
  type: "string",
303
- description: "The space to operate in",
309
+ description: "The space to operate in"
304
310
  },
305
311
  intent: {
306
312
  type: "string",
307
- description: "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')",
308
- },
313
+ description: "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')"
314
+ }
309
315
  },
310
- required: ["space_id", "intent"],
311
- },
312
- },
316
+ required: ["space_id", "intent"]
317
+ }
318
+ }
313
319
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intangle/mcp-server",
3
- "version": "2.3.5",
3
+ "version": "2.3.6",
4
4
  "description": "Model Context Protocol server for Intangle - AI context that persists across conversations",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -1,336 +1,359 @@
1
1
  // Tools definition - matches the stdio server
2
2
  export const TOOLS = [
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). Use fetch tool to get full content for specific IDs when needed.",
8
- inputSchema: {
9
- type: "object",
10
- properties: {
11
- query: {
12
- type: "string",
13
- description: "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'",
14
- },
15
- space_id: {
16
- type: "string",
17
- description:
18
- "REQUIRED: Space to search in (use view_spaces to see available options)",
19
- },
20
- topics: {
21
- type: "array",
22
- items: { type: "string" },
23
- description: "Optional: Filter by specific topics",
24
- },
25
- },
26
- required: ["query", "space_id"],
27
- },
28
- },
29
- {
30
- name: "fetch_items",
31
- title: "Fetch Items by ID",
32
- description:
33
- "Retrieve full content for specific items by ID. Accepts single ID or array of IDs.",
34
- inputSchema: {
35
- type: "object",
36
- properties: {
37
- id: {
38
- type: "string",
39
- description:
40
- "Single ID to fetch (context or task ID like 'mem_123' or 'task_456' or 'skill_789')",
41
- },
42
- ids: {
43
- type: "array",
44
- items: { type: "string" },
45
- description:
46
- "Array of IDs to fetch (mix of context, task, and skill IDs). Use this to fetch multiple items in one call.",
47
- },
48
- },
49
- },
50
- },
51
- {
52
- name: "view_projects",
53
- title: "View Projects",
54
- description:
55
- "List all projects in a space. Projects are user-created canvases that organize context, tasks, documents, and skills. Use this to discover available projects before viewing their contents.",
56
- inputSchema: {
57
- type: "object",
58
- properties: {
59
- space_id: {
60
- type: "string",
61
- description:
62
- "REQUIRED: Space to list projects from (use view_spaces to see available options)",
63
- },
64
- },
65
- required: ["space_id"],
66
- },
67
- },
68
- {
69
- name: "view_project",
70
- title: "View Project",
71
- description:
72
- "View a specific project with all its items (context, tasks, documents, skills). Returns item metadata (IDs, titles, types, status) for each item in the project. Use fetch_items to get full content of specific items.",
73
- inputSchema: {
74
- type: "object",
75
- properties: {
76
- project_id: {
77
- type: "string",
78
- description:
79
- "Project ID to view (e.g., 'proj_123...'). Get project IDs from view_projects.",
80
- },
81
- space_id: {
82
- type: "string",
83
- description:
84
- "Optional: Space ID (required if using slug instead of project_id)",
85
- },
86
- slug: {
87
- type: "string",
88
- description:
89
- "Optional: Project slug (URL-friendly name). Requires space_id if used.",
90
- },
91
- },
92
- },
93
- },
94
- {
95
- name: "start",
96
- title: "Start Space Session",
97
- description:
98
- "Begin working in a space. Returns a dynamic briefing of recent developments and current priorities.",
99
- inputSchema: {
100
- type: "object",
101
- properties: {
102
- space_id: {
103
- type: "string",
104
- description: "Space to start (e.g., 'renvoi', 'personal')",
105
- },
106
- },
107
- required: ["space_id"],
108
- },
109
- },
110
- {
111
- name: "view_spaces",
112
- title: "View Spaces",
113
- description:
114
- "View all available spaces with their descriptions and metrics.",
115
- inputSchema: {
116
- type: "object",
117
- properties: {},
118
- },
119
- },
120
- {
121
- name: "create_space",
122
- title: "Create Space",
123
- description: "Create a new space with optional configuration.",
124
- inputSchema: {
125
- type: "object",
126
- properties: {
127
- name: {
128
- type: "string",
129
- description:
130
- "Name for the NEW space being created (e.g., 'Work', 'Personal', 'Project X')",
131
- },
132
- description: {
133
- type: "string",
134
- description:
135
- "Brief description of what this NEW space is for (e.g., 'Work-related context and tasks')",
136
- },
137
- config_badges: {
138
- type: "array",
139
- items: { type: "string" },
140
- description:
141
- "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.",
142
- },
143
- startup_preferences: {
144
- type: "string",
145
- description:
146
- "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'.",
147
- },
148
- },
149
- required: ["name"],
150
- },
151
- },
152
- {
153
- name: "view_space",
154
- title: "View Space",
155
- description:
156
- "View detailed information about a space including configuration and overview.",
157
- inputSchema: {
158
- type: "object",
159
- properties: {
160
- space_id: {
161
- type: "string",
162
- description: "ID of space to get info for",
163
- },
164
- },
165
- required: ["space_id"],
166
- },
167
- },
168
- {
169
- name: "update_space",
170
- title: "Update Space",
171
- description:
172
- "Add, update, or delete items in a space. Supports any combination of operations in a single call.",
173
- inputSchema: {
174
- type: "object",
175
- properties: {
176
- space_id: {
177
- type: "string",
178
- description:
179
- "REQUIRED: Space to operate in (use view_spaces to see available options)",
180
- },
181
- project_id: {
182
- type: "string",
183
- description:
184
- "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.",
185
- },
186
- add: {
187
- type: "object",
188
- description: "Add new items to context with automatic intelligent classification and topic suggestion",
189
- properties: {
190
- items: {
191
- type: "array",
192
- items: {
193
- type: "object",
194
- properties: {
195
- title: { type: "string", description: "Item title" },
196
- content: {
197
- type: "string",
198
- description: "Item content - system automatically classifies as task (actionable), context (knowledge), or skill (workflow/procedure) and suggests relevant topics",
199
- },
200
- subtasks: {
201
- type: "array",
202
- items: {
203
- type: "object",
204
- properties: {
205
- title: { type: "string", description: "Subtask title" },
206
- content: { type: "string", description: "Subtask details" },
207
- },
208
- required: ["title"],
209
- },
210
- description: "Optional: Array of subtasks for task items. Each subtask becomes a linked child task.",
211
- },
212
- parent_id: {
213
- type: "string",
214
- description: "Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent.",
215
- },
216
- assignee_id: {
217
- type: "string",
218
- description: "Optional: Assignee ID (user or agent ID) for task assignment on creation.",
219
- },
220
- assignee_type: {
221
- type: "string",
222
- enum: ["agent", "user"],
223
- description: "Optional: Type of assignee (agent or user). Required if assignee_id provided.",
224
- },
225
- linkedItemIds: {
226
- type: "array",
227
- items: { type: "string" },
228
- description: "Optional: Array of item IDs to create explicit LINKED_TO relationships with.",
229
- },
230
- },
231
- required: ["title", "content"],
232
- },
233
- description: "Array of items to add. System intelligently: (1) classifies as task, context, or skill, (2) suggests 1-3 relevant topics based on content and existing topics. Examples: 'Need to fix auth bug' → task with topics like 'authentication', 'bug-fix'. 'Learned React batches updates' → context with topics like 'react', 'learning'. Tasks can include subtasks array for hierarchical task management.",
234
- },
235
- },
236
- },
237
- update: {
238
- type: "object",
239
- description: "Update existing items (context, tasks, or skills) - system detects type from ID prefix",
240
- properties: {
241
- items: {
242
- type: "array",
243
- items: {
244
- type: "object",
245
- properties: {
246
- id: { type: "string", description: "Item ID to update (mem_* for context, task_* for tasks, skill_* for skills)" },
247
- title: {
248
- type: "string",
249
- description: "New title (optional)",
250
- },
251
- content: {
252
- type: "string",
253
- description: "New content (optional)",
254
- },
255
- topics: {
256
- type: "array",
257
- items: { type: "string" },
258
- description: "New topics (optional)",
259
- },
260
- status: {
261
- type: "string",
262
- enum: [
263
- "pending",
264
- "in_progress",
265
- "completed",
266
- "invalidated",
267
- ],
268
- description: "New status (optional, tasks only)",
269
- },
270
- priority: {
271
- type: "string",
272
- enum: ["urgent", "high", "medium", "low"],
273
- description: "New priority (optional, tasks only)",
274
- },
275
- assignee_id: {
276
- type: "string",
277
- description: "Assignee ID (user or agent ID). Set to null to unassign. (optional, tasks only)",
278
- },
279
- assignee_type: {
280
- type: "string",
281
- enum: ["agent", "user"],
282
- description: "Type of assignee (optional, tasks only)",
283
- },
284
- parent_id: {
285
- type: "string",
286
- description: "Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent.",
287
- },
288
- linkedItemIds: {
289
- type: "array",
290
- items: { type: "string" },
291
- description: "Optional: Array of item IDs to create explicit LINKED_TO relationships with.",
292
- },
293
- },
294
- required: ["id"],
295
- },
296
- description: "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.",
297
- },
298
- },
299
- },
300
- delete: {
301
- type: "object",
302
- description: "Delete items by ID - system detects type from ID prefix",
303
- properties: {
304
- item_ids: {
305
- type: "array",
306
- items: { type: "string" },
307
- description: "Array of item IDs to delete (mem_* for context, task_* for tasks, skill_* for skills). Type automatically detected from ID prefix.",
308
- },
309
- },
310
- },
311
- },
312
- required: ["space_id"],
313
- },
314
- },
315
- {
316
- name: "memory_action",
317
- title: "Memory Action (OHM Protocol)",
318
- description:
319
- "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.",
320
- inputSchema: {
321
- type: "object",
322
- properties: {
323
- space_id: {
324
- type: "string",
325
- description: "The space to operate in",
326
- },
327
- intent: {
328
- type: "string",
329
- description:
330
- "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')",
331
- },
332
- },
333
- required: ["space_id", "intent"],
334
- },
335
- },
336
- ];
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). Use fetch tool to get full content for specific IDs when needed.",
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
+ topics: {
22
+ type: "array",
23
+ items: { type: "string" },
24
+ description: "Optional: Filter by specific topics"
25
+ }
26
+ },
27
+ required: ["query", "space_id"]
28
+ }
29
+ },
30
+ {
31
+ name: "fetch_items",
32
+ title: "Fetch Items by ID",
33
+ description:
34
+ "Retrieve full content for specific items by ID. Accepts single ID or array of IDs.",
35
+ inputSchema: {
36
+ type: "object",
37
+ properties: {
38
+ id: {
39
+ type: "string",
40
+ description:
41
+ "Single ID to fetch (context or task ID like 'mem_123' or 'task_456' or 'skill_789')"
42
+ },
43
+ ids: {
44
+ type: "array",
45
+ items: { type: "string" },
46
+ description:
47
+ "Array of IDs to fetch (mix of context, task, and skill IDs). Use this to fetch multiple items in one call."
48
+ }
49
+ }
50
+ }
51
+ },
52
+ {
53
+ name: "view_projects",
54
+ title: "View Projects",
55
+ description:
56
+ "List all projects in a space. Projects are user-created canvases that organize context, tasks, documents, and skills. Use this to discover available projects before viewing their contents.",
57
+ inputSchema: {
58
+ type: "object",
59
+ properties: {
60
+ space_id: {
61
+ type: "string",
62
+ description:
63
+ "REQUIRED: Space to list projects from (use view_spaces to see available options)"
64
+ }
65
+ },
66
+ required: ["space_id"]
67
+ }
68
+ },
69
+ {
70
+ name: "view_project",
71
+ title: "View Project",
72
+ description:
73
+ "View a specific project with all its items (context, tasks, documents, skills). Returns item metadata (IDs, titles, types, status) for each item in the project. Use fetch_items to get full content of specific items.",
74
+ inputSchema: {
75
+ type: "object",
76
+ properties: {
77
+ project_id: {
78
+ type: "string",
79
+ description:
80
+ "Project ID to view (e.g., 'proj_123...'). Get project IDs from view_projects."
81
+ },
82
+ space_id: {
83
+ type: "string",
84
+ description:
85
+ "Optional: Space ID (required if using slug instead of project_id)"
86
+ },
87
+ slug: {
88
+ type: "string",
89
+ description:
90
+ "Optional: Project slug (URL-friendly name). Requires space_id if used."
91
+ }
92
+ }
93
+ }
94
+ },
95
+ {
96
+ name: "start",
97
+ title: "Start Space Session",
98
+ description:
99
+ "Begin working in a space. Returns a dynamic briefing including: recent developments, current priorities, active tasks, user preferences for this space, and learned insights about how the user/org works. Use this context to personalize your assistance and anticipate needs.",
100
+ inputSchema: {
101
+ type: "object",
102
+ properties: {
103
+ space_id: {
104
+ type: "string",
105
+ description: "Space to start (e.g., 'renvoi', 'personal')"
106
+ }
107
+ },
108
+ required: ["space_id"]
109
+ }
110
+ },
111
+ {
112
+ name: "view_spaces",
113
+ title: "View Spaces",
114
+ description:
115
+ "View all available spaces with their descriptions and metrics.",
116
+ inputSchema: {
117
+ type: "object",
118
+ properties: {}
119
+ }
120
+ },
121
+ {
122
+ name: "create_space",
123
+ title: "Create Space",
124
+ description: "Create a new space with optional configuration.",
125
+ inputSchema: {
126
+ type: "object",
127
+ properties: {
128
+ name: {
129
+ type: "string",
130
+ description:
131
+ "Name for the NEW space being created (e.g., 'Work', 'Personal', 'Project X')"
132
+ },
133
+ description: {
134
+ type: "string",
135
+ description:
136
+ "Brief description of what this NEW space is for (e.g., 'Work-related context and tasks')"
137
+ },
138
+ config_badges: {
139
+ type: "array",
140
+ items: { type: "string" },
141
+ description:
142
+ "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."
143
+ },
144
+ startup_preferences: {
145
+ type: "string",
146
+ description:
147
+ "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'."
148
+ }
149
+ },
150
+ required: ["name"]
151
+ }
152
+ },
153
+ {
154
+ name: "view_space",
155
+ title: "View Space",
156
+ description:
157
+ "View detailed information about a space including configuration and overview.",
158
+ inputSchema: {
159
+ type: "object",
160
+ properties: {
161
+ space_id: {
162
+ type: "string",
163
+ description: "ID of space to get info for"
164
+ }
165
+ },
166
+ required: ["space_id"]
167
+ }
168
+ },
169
+ {
170
+ name: "update_space",
171
+ title: "Update Space",
172
+ description:
173
+ "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.",
174
+ inputSchema: {
175
+ type: "object",
176
+ properties: {
177
+ space_id: {
178
+ type: "string",
179
+ description:
180
+ "REQUIRED: Space to operate in (use view_spaces to see available options)"
181
+ },
182
+ project_id: {
183
+ type: "string",
184
+ description:
185
+ "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."
186
+ },
187
+ add: {
188
+ type: "object",
189
+ description:
190
+ "Add new items to context with automatic intelligent classification and topic suggestion",
191
+ properties: {
192
+ items: {
193
+ type: "array",
194
+ items: {
195
+ type: "object",
196
+ properties: {
197
+ title: { type: "string", description: "Item title" },
198
+ content: {
199
+ type: "string",
200
+ description:
201
+ "Item content - system automatically classifies as task (actionable), context (knowledge), or skill (workflow/procedure) and suggests relevant topics. 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."
202
+ },
203
+ subtasks: {
204
+ type: "array",
205
+ items: {
206
+ type: "object",
207
+ properties: {
208
+ title: { type: "string", description: "Subtask title" },
209
+ content: {
210
+ type: "string",
211
+ description: "Subtask details"
212
+ }
213
+ },
214
+ required: ["title"]
215
+ },
216
+ description:
217
+ "Optional: Array of subtasks for task items. Each subtask becomes a linked child task."
218
+ },
219
+ parent_id: {
220
+ type: "string",
221
+ description:
222
+ "Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent."
223
+ },
224
+ assignee_id: {
225
+ type: "string",
226
+ description:
227
+ "Optional: Assignee ID (user or agent ID) for task assignment on creation."
228
+ },
229
+ assignee_type: {
230
+ type: "string",
231
+ enum: ["agent", "user"],
232
+ description:
233
+ "Optional: Type of assignee (agent or user). Required if assignee_id provided."
234
+ },
235
+ linkedItemIds: {
236
+ type: "array",
237
+ items: { type: "string" },
238
+ description:
239
+ "Optional: Array of item IDs to create explicit LINKED_TO relationships with."
240
+ }
241
+ },
242
+ required: ["title", "content"]
243
+ },
244
+ description:
245
+ "Array of items to add. System intelligently: (1) classifies as task, context, or skill, (2) suggests 1-3 relevant topics based on content and existing topics. Examples: 'Need to fix auth bug' → task with topics like 'authentication', 'bug-fix'. 'Learned React batches updates' → context with topics like 'react', 'learning'. Tasks can include subtasks array for hierarchical task management."
246
+ }
247
+ }
248
+ },
249
+ update: {
250
+ type: "object",
251
+ description:
252
+ "Update existing items (context, tasks, or skills) - system detects type from ID prefix",
253
+ properties: {
254
+ items: {
255
+ type: "array",
256
+ items: {
257
+ type: "object",
258
+ properties: {
259
+ id: {
260
+ type: "string",
261
+ description:
262
+ "Item ID to update (mem_* for context, task_* for tasks, skill_* for skills)"
263
+ },
264
+ title: {
265
+ type: "string",
266
+ description: "New title (optional)"
267
+ },
268
+ content: {
269
+ type: "string",
270
+ description: "New content (optional)"
271
+ },
272
+ topics: {
273
+ type: "array",
274
+ items: { type: "string" },
275
+ description: "New topics (optional)"
276
+ },
277
+ status: {
278
+ type: "string",
279
+ enum: [
280
+ "pending",
281
+ "in_progress",
282
+ "completed",
283
+ "invalidated"
284
+ ],
285
+ description: "New status (optional, tasks only)"
286
+ },
287
+ priority: {
288
+ type: "string",
289
+ enum: ["urgent", "high", "medium", "low"],
290
+ description: "New priority (optional, tasks only)"
291
+ },
292
+ assignee_id: {
293
+ type: "string",
294
+ description:
295
+ "Assignee ID (user or agent ID). Set to null to unassign. (optional, tasks only)"
296
+ },
297
+ assignee_type: {
298
+ type: "string",
299
+ enum: ["agent", "user"],
300
+ description: "Type of assignee (optional, tasks only)"
301
+ },
302
+ parent_id: {
303
+ type: "string",
304
+ description:
305
+ "Optional: Parent item ID (mem_*, task_*, or skill_*). Links this item as a child of the parent."
306
+ },
307
+ linkedItemIds: {
308
+ type: "array",
309
+ items: { type: "string" },
310
+ description:
311
+ "Optional: Array of item IDs to create explicit LINKED_TO relationships with."
312
+ }
313
+ },
314
+ required: ["id"]
315
+ },
316
+ description:
317
+ "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."
318
+ }
319
+ }
320
+ },
321
+ delete: {
322
+ type: "object",
323
+ description:
324
+ "Delete items by ID - system detects type from ID prefix",
325
+ properties: {
326
+ item_ids: {
327
+ type: "array",
328
+ items: { type: "string" },
329
+ description:
330
+ "Array of item IDs to delete (mem_* for context, task_* for tasks, skill_* for skills). Type automatically detected from ID prefix."
331
+ }
332
+ }
333
+ }
334
+ },
335
+ required: ["space_id"]
336
+ }
337
+ },
338
+ {
339
+ name: "memory_action",
340
+ title: "Memory Action (OHM Protocol)",
341
+ description:
342
+ "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.",
343
+ inputSchema: {
344
+ type: "object",
345
+ properties: {
346
+ space_id: {
347
+ type: "string",
348
+ description: "The space to operate in"
349
+ },
350
+ intent: {
351
+ type: "string",
352
+ description:
353
+ "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')"
354
+ }
355
+ },
356
+ required: ["space_id", "intent"]
357
+ }
358
+ }
359
+ ]