@intangle/mcp-server 1.1.7 → 1.1.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.
Files changed (3) hide show
  1. package/dist/index.js +6 -489
  2. package/index.ts +6 -502
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -78,72 +78,6 @@ const server = new Server({
78
78
  },
79
79
  });
80
80
  const TOOLS = [
81
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
82
- // {
83
- // name: "add_memory",
84
- // description:
85
- // "Store CONTEXT (general information and knowledge) in the user's memory system. For actionable workflow items with status tracking, use add_task instead. Accepts a single context item or an array of context items for batch creation. REQUIRES space_id parameter.",
86
- // inputSchema: {
87
- // type: "object",
88
- // properties: {
89
- // space_id: {
90
- // type: "string",
91
- // description:
92
- // "REQUIRED: Space to store memory/memories in (use list_spaces to see available options)",
93
- // },
94
- // memories: {
95
- // oneOf: [
96
- // {
97
- // type: "object",
98
- // properties: {
99
- // title: {
100
- // type: "string",
101
- // description: "Title/summary of the memory",
102
- // },
103
- // content: {
104
- // type: "string",
105
- // description: "Detailed content of the memory",
106
- // },
107
- // topics: {
108
- // type: "array",
109
- // items: { type: "string" },
110
- // description:
111
- // "Flexible topics/tags for organization (e.g., ['coding', 'react'])",
112
- // },
113
- // },
114
- // required: ["title", "content"],
115
- // },
116
- // {
117
- // type: "array",
118
- // items: {
119
- // type: "object",
120
- // properties: {
121
- // title: {
122
- // type: "string",
123
- // description: "Title/summary of the memory",
124
- // },
125
- // content: {
126
- // type: "string",
127
- // description: "Detailed content of the memory",
128
- // },
129
- // topics: {
130
- // type: "array",
131
- // items: { type: "string" },
132
- // description:
133
- // "Flexible topics/tags for organization (e.g., ['coding', 'react'])",
134
- // },
135
- // },
136
- // required: ["title", "content"],
137
- // },
138
- // },
139
- // ],
140
- // description:
141
- // "Single memory object or array of memory objects to create",
142
- // },
143
- // },
144
- // required: ["space_id", "memories"],
145
- // },
146
- // },
147
81
  {
148
82
  name: "search_memories",
149
83
  description: "Search through ALL stored data including BOTH context (general information) AND tasks (actionable workflow items). Uses advanced hybrid search (semantic + text + entity relationships). When a user asks to 'update memory' or 'check memory', this tool searches BOTH types. ALWAYS provide space_id parameter - this is mandatory for all searches.",
@@ -214,48 +148,6 @@ const TOOLS = [
214
148
  },
215
149
  },
216
150
  },
217
- // DISABLED: get_entities tool - not useful in current form
218
- // {
219
- // name: "get_entities",
220
- // description:
221
- // "Get extracted entities (people, places, concepts) from CONTEXT items (general information). If no memory_id provided, returns top 20 most frequently mentioned entities across all context. WARNING: This tool can return large responses - use sparingly and only when entity information is specifically needed.",
222
- // inputSchema: {
223
- // type: "object",
224
- // properties: {
225
- // memory_id: {
226
- // type: "string",
227
- // description:
228
- // "Memory ID to get entities for. RECOMMENDED: Always provide memory_id to get focused results.",
229
- // },
230
- // },
231
- // },
232
- // },
233
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
234
- // {
235
- // name: "delete_memory",
236
- // description:
237
- // "Delete one or more CONTEXT items (general information). For deleting tasks, use delete_task instead. Accepts a single memory ID or an array of memory IDs for batch deletion.",
238
- // inputSchema: {
239
- // type: "object",
240
- // properties: {
241
- // memory_ids: {
242
- // oneOf: [
243
- // {
244
- // type: "string",
245
- // description: "Single memory ID to delete",
246
- // },
247
- // {
248
- // type: "array",
249
- // items: { type: "string" },
250
- // description: "Array of memory IDs to delete",
251
- // },
252
- // ],
253
- // description: "Single memory ID or array of memory IDs to delete",
254
- // },
255
- // },
256
- // required: ["memory_ids"],
257
- // },
258
- // },
259
151
  {
260
152
  name: "list_spaces",
261
153
  description: "Get all available spaces with their descriptions and item counts (both context and tasks). Spaces are top-level containers that isolate different contexts (e.g., personal, work, projects).",
@@ -266,7 +158,7 @@ const TOOLS = [
266
158
  },
267
159
  {
268
160
  name: "create_space",
269
- description: "Create a new space with optional startup configuration. Spaces are top-level containers that hold both context (general information) and tasks (actionable items). The 'start' tool loads this configuration when beginning work in this space. Checks user's plan limits and returns upgrade link if limit reached.",
161
+ description: "Create a new space with optional configuration. Spaces are top-level containers that hold both context (general information) and tasks (actionable items). The 'start' tool loads this configuration when beginning work in this space. Checks user's plan limits and returns upgrade link if limit reached.",
270
162
  inputSchema: {
271
163
  type: "object",
272
164
  properties: {
@@ -278,13 +170,14 @@ const TOOLS = [
278
170
  type: "string",
279
171
  description: "Brief description of what this space is for (e.g., 'Work-related context and tasks')",
280
172
  },
281
- startup_context: {
282
- type: "string",
283
- description: "Context and keywords provided to AI when starting this space. Include role, preferences, common tasks, and relevant search terms. This helps the AI understand what information to prioritize from memory.",
173
+ config_badges: {
174
+ type: "array",
175
+ items: { type: "string" },
176
+ description: "Array of keywords for memory focus in this space. These keywords help steer what context gets loaded when running 'start' for this space. Examples: ['TypeScript', 'React', 'API design', 'authentication']. They act as search terms to prioritize relevant memories.",
284
177
  },
285
178
  startup_preferences: {
286
179
  type: "string",
287
- description: "AI behavior preferences for this space. Guides how the AI should interact and respond when working in this context (e.g., 'Be concise and technical', 'Focus on creative solutions').",
180
+ description: "AI behavior preferences for this 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'.",
288
181
  },
289
182
  include_tasks: {
290
183
  type: "boolean",
@@ -323,193 +216,6 @@ const TOOLS = [
323
216
  required: ["space_id"],
324
217
  },
325
218
  },
326
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
327
- // {
328
- // name: "add_task",
329
- // description:
330
- // "Create one or more tasks in your space with status tracking and priority levels. Supports BATCH creation and NESTED subtasks. Accepts a single task object or an array of task objects. Tasks have graph relationships like memories (entities, topics, temporal). REQUIRES space_id parameter. Example with subtasks: {tasks: {title: 'Parent', content: 'Main task', subtasks: [{title: 'Subtask 1', content: 'Child task'}]}}",
331
- // inputSchema: {
332
- // type: "object",
333
- // properties: {
334
- // space_id: {
335
- // type: "string",
336
- // description:
337
- // "REQUIRED: Space to create task/tasks in (use list_spaces to see available options)",
338
- // },
339
- // tasks: {
340
- // oneOf: [
341
- // {
342
- // type: "object",
343
- // properties: {
344
- // title: {
345
- // type: "string",
346
- // description: "Task title/summary",
347
- // },
348
- // content: {
349
- // type: "string",
350
- // description: "Detailed task description",
351
- // },
352
- // topics: {
353
- // type: "array",
354
- // items: { type: "string" },
355
- // description: "Optional topics/tags for organization",
356
- // },
357
- // status: {
358
- // type: "string",
359
- // enum: ["pending", "in_progress", "completed", "invalidated"],
360
- // description: "Task status (default: pending)",
361
- // default: "pending",
362
- // },
363
- // priority: {
364
- // type: "string",
365
- // enum: ["urgent", "high", "medium", "low"],
366
- // description:
367
- // "Task priority level (default: medium). Use 'urgent' for time-sensitive tasks requiring immediate attention, 'high' for important tasks, 'medium' for standard tasks, 'low' for nice-to-have tasks.",
368
- // default: "medium",
369
- // },
370
- // parent_id: {
371
- // type: "string",
372
- // description:
373
- // "Optional parent task ID to create this as a subtask. Use an existing task's ID (format: task_TIMESTAMP_ID) to nest this task under it. Use list_tasks to find parent task IDs. If omitted, creates a top-level task. NOTE: Use 'subtasks' array instead for creating parent+children in one call.",
374
- // },
375
- // subtasks: {
376
- // type: "array",
377
- // items: {
378
- // type: "object",
379
- // properties: {
380
- // title: {
381
- // type: "string",
382
- // description: "Subtask title",
383
- // },
384
- // content: {
385
- // type: "string",
386
- // description: "Subtask description/details",
387
- // },
388
- // topics: {
389
- // type: "array",
390
- // items: { type: "string" },
391
- // description: "Topics/tags for this subtask",
392
- // },
393
- // status: {
394
- // type: "string",
395
- // enum: [
396
- // "pending",
397
- // "in_progress",
398
- // "completed",
399
- // "invalidated",
400
- // ],
401
- // description: "Subtask status (default: pending)",
402
- // default: "pending",
403
- // },
404
- // priority: {
405
- // type: "string",
406
- // enum: ["urgent", "high", "medium", "low"],
407
- // description: "Subtask priority level (default: medium)",
408
- // default: "medium",
409
- // },
410
- // },
411
- // required: ["title", "content"],
412
- // },
413
- // description:
414
- // "Optional array of subtasks to create under this parent task. Each will be automatically linked to the parent.",
415
- // },
416
- // },
417
- // required: ["title", "content"],
418
- // },
419
- // {
420
- // type: "array",
421
- // items: {
422
- // type: "object",
423
- // properties: {
424
- // title: {
425
- // type: "string",
426
- // description: "Task title/summary",
427
- // },
428
- // content: {
429
- // type: "string",
430
- // description: "Detailed task description",
431
- // },
432
- // topics: {
433
- // type: "array",
434
- // items: { type: "string" },
435
- // description: "Optional topics/tags for organization",
436
- // },
437
- // status: {
438
- // type: "string",
439
- // enum: [
440
- // "pending",
441
- // "in_progress",
442
- // "completed",
443
- // "invalidated",
444
- // ],
445
- // description: "Task status (default: pending)",
446
- // default: "pending",
447
- // },
448
- // priority: {
449
- // type: "string",
450
- // enum: ["urgent", "high", "medium", "low"],
451
- // description:
452
- // "Task priority level (default: medium). Use 'urgent' for time-sensitive tasks requiring immediate attention, 'high' for important tasks, 'medium' for standard tasks, 'low' for nice-to-have tasks.",
453
- // default: "medium",
454
- // },
455
- // parent_id: {
456
- // type: "string",
457
- // description:
458
- // "Optional parent task ID to create this as a subtask. Use an existing task's ID (format: task_TIMESTAMP_ID) to nest this task under it. Use list_tasks to find parent task IDs. If omitted, creates a top-level task. NOTE: Use 'subtasks' array instead for creating parent+children in one call.",
459
- // },
460
- // subtasks: {
461
- // type: "array",
462
- // items: {
463
- // type: "object",
464
- // properties: {
465
- // title: {
466
- // type: "string",
467
- // description: "Subtask title",
468
- // },
469
- // content: {
470
- // type: "string",
471
- // description: "Subtask description/details",
472
- // },
473
- // topics: {
474
- // type: "array",
475
- // items: { type: "string" },
476
- // description: "Topics/tags for this subtask",
477
- // },
478
- // status: {
479
- // type: "string",
480
- // enum: [
481
- // "pending",
482
- // "in_progress",
483
- // "completed",
484
- // "invalidated",
485
- // ],
486
- // description: "Subtask status (default: pending)",
487
- // default: "pending",
488
- // },
489
- // priority: {
490
- // type: "string",
491
- // enum: ["urgent", "high", "medium", "low"],
492
- // description:
493
- // "Subtask priority level (default: medium)",
494
- // default: "medium",
495
- // },
496
- // },
497
- // required: ["title", "content"],
498
- // },
499
- // description:
500
- // "Optional array of subtasks to create under this parent task. Each will be automatically linked to the parent.",
501
- // },
502
- // },
503
- // required: ["title", "content"],
504
- // },
505
- // },
506
- // ],
507
- // description: "Single task object or array of task objects to create",
508
- // },
509
- // },
510
- // required: ["space_id", "tasks"],
511
- // },
512
- // },
513
219
  {
514
220
  name: "update_memory",
515
221
  description: "Unified tool for ALL memory operations: add, update, or delete context and tasks. Supports any combination of operations in a single call. Context = general information/knowledge (Memory nodes). Tasks = actionable workflow items (Task nodes). Max 50 operations per call. At least one operation (add/update/delete) required.",
@@ -667,92 +373,6 @@ const TOOLS = [
667
373
  required: ["space_id"],
668
374
  },
669
375
  },
670
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
671
- // {
672
- // name: "update_task_status",
673
- // description:
674
- // "Change a task's status (pending/in_progress/completed/invalidated)",
675
- // inputSchema: {
676
- // type: "object",
677
- // properties: {
678
- // task_id: {
679
- // type: "string",
680
- // description: "Task ID to update",
681
- // },
682
- // status: {
683
- // type: "string",
684
- // enum: ["pending", "in_progress", "completed", "invalidated"],
685
- // description: "New status",
686
- // },
687
- // },
688
- // required: ["task_id", "status"],
689
- // },
690
- // },
691
- {
692
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
693
- // name: "update_task",
694
- // description:
695
- // "Update one or more TASKS (not context/memories - use add_memory to update context by creating new versions). Accepts a single update object or an array of update objects for batch updates. Each update must include task_id.",
696
- // inputSchema: {
697
- // type: "object",
698
- // properties: {
699
- // updates: {
700
- // oneOf: [
701
- // {
702
- // type: "object",
703
- // properties: {
704
- // task_id: {
705
- // type: "string",
706
- // description: "Task ID to update",
707
- // },
708
- // title: {
709
- // type: "string",
710
- // description: "New title (optional)",
711
- // },
712
- // content: {
713
- // type: "string",
714
- // description: "New content (optional)",
715
- // },
716
- // topics: {
717
- // type: "array",
718
- // items: { type: "string" },
719
- // description: "New topics array (optional)",
720
- // },
721
- // },
722
- // required: ["task_id"],
723
- // },
724
- // {
725
- // type: "array",
726
- // items: {
727
- // type: "object",
728
- // properties: {
729
- // task_id: {
730
- // type: "string",
731
- // description: "Task ID to update",
732
- // },
733
- // title: {
734
- // type: "string",
735
- // description: "New title (optional)",
736
- // },
737
- // content: {
738
- // type: "string",
739
- // description: "New content (optional)",
740
- // },
741
- // topics: {
742
- // type: "array",
743
- // items: { type: "string" },
744
- // description: "New topics array (optional)",
745
- // },
746
- // },
747
- // required: ["task_id"],
748
- // },
749
- // },
750
- // ],
751
- // description: "Single update object or array of update objects",
752
- // },
753
- // },
754
- // required: ["updates"],
755
- },
756
376
  {
757
377
  name: "list_tasks",
758
378
  description: "List tasks in a space with optional filtering",
@@ -782,50 +402,10 @@ const TOOLS = [
782
402
  required: ["space_id"],
783
403
  },
784
404
  },
785
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
786
- // {
787
- // name: "delete_task",
788
- // description:
789
- // "Delete one or more tasks in a single transaction. Accepts a single task ID or an array of task IDs for batch deletion.",
790
- // inputSchema: {
791
- // type: "object",
792
- // properties: {
793
- // task_ids: {
794
- // oneOf: [
795
- // {
796
- // type: "string",
797
- // description: "Single task ID to delete",
798
- // },
799
- // {
800
- // type: "array",
801
- // items: { type: "string" },
802
- // description: "Array of task IDs to delete",
803
- // },
804
- // ],
805
- // description: "Single task ID or array of task IDs to delete",
806
- // },
807
- // },
808
- // required: ["task_ids"],
809
- // },
810
- // },
811
405
  ];
812
406
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
813
407
  tools: TOOLS,
814
408
  }));
815
- async function handleAddMemory(args) {
816
- // Require space_id to be provided
817
- if (!args.space_id) {
818
- throw new Error("space_id is required. Use list_spaces to see available options.");
819
- }
820
- if (!args.memories) {
821
- throw new Error("memories parameter is required (single object or array)");
822
- }
823
- // Pass through to API
824
- return makeApiCall("add-memory", {
825
- space_id: args.space_id,
826
- memories: args.memories,
827
- });
828
- }
829
409
  async function handleSearchMemories(args) {
830
410
  const { space_id, query, topics, max_results = 10, } = args;
831
411
  // Require space_id
@@ -856,13 +436,6 @@ async function handleFetch(args) {
856
436
  const { id, ids } = args;
857
437
  return makeApiCall("fetch", { id, ids });
858
438
  }
859
- /* async function handleDeleteMemory(args: any) {
860
- const { memory_ids } = args as {
861
- memory_ids: string | string[];
862
- };
863
-
864
- return makeApiCall("delete-memory", { memory_ids });
865
- } */
866
439
  async function handleListSpaces() {
867
440
  return makeApiCall("list-spaces", {});
868
441
  }
@@ -877,24 +450,6 @@ async function handleStart(args) {
877
450
  const { space_id } = args;
878
451
  return makeApiCall("start", { space_id });
879
452
  }
880
- /*
881
- async function handleAddTask(args: any) {
882
- if (!args.space_id) {
883
- throw new Error(
884
- "space_id is required. Use list_spaces to see available options.",
885
- );
886
- }
887
-
888
- if (!args.tasks) {
889
- throw new Error("tasks parameter is required (single object or array)");
890
- }
891
-
892
- // Pass through to API
893
- return makeApiCall("add-task", {
894
- space_id: args.space_id,
895
- tasks: args.tasks,
896
- });
897
- } */
898
453
  async function handleUpdateMemory(args) {
899
454
  if (!args.space_id) {
900
455
  throw new Error("space_id is required. Use list_spaces to see available options.");
@@ -910,33 +465,14 @@ async function handleUpdateMemory(args) {
910
465
  delete: args.delete,
911
466
  });
912
467
  }
913
- async function handleUpdateTaskStatus(args) {
914
- return makeApiCall("update-task-status", args);
915
- }
916
- async function handleUpdateTask(args) {
917
- if (!args.updates) {
918
- throw new Error("updates parameter is required (single object or array)");
919
- }
920
- // Pass through to API
921
- return makeApiCall("update-task", {
922
- updates: args.updates,
923
- });
924
- }
925
468
  async function handleListTasks(args) {
926
469
  return makeApiCall("list-tasks", args);
927
470
  }
928
- async function handleDeleteTask(args) {
929
- const { task_ids } = args;
930
- return makeApiCall("delete-task", { task_ids });
931
- }
932
471
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
933
472
  const { name, arguments: args } = request.params;
934
473
  try {
935
474
  let result;
936
475
  switch (name) {
937
- // DEPRECATED: case "add_memory":
938
- // DEPRECATED: result = await handleAddMemory(args);
939
- // DEPRECATED: break;
940
476
  case "search_memories":
941
477
  result = await handleSearchMemories(args);
942
478
  break;
@@ -946,13 +482,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
946
482
  case "fetch":
947
483
  result = await handleFetch(args);
948
484
  break;
949
- // DISABLED: get_entities handler - not useful in current form
950
- // case "get_entities":
951
- // result = await handleGetEntities(args);
952
- // break;
953
- // DEPRECATED: case "delete_memory":
954
- // DEPRECATED: result = await handleDeleteMemory(args);
955
- // DEPRECATED: break;
956
485
  case "list_spaces":
957
486
  result = await handleListSpaces();
958
487
  break;
@@ -965,24 +494,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
965
494
  case "start":
966
495
  result = await handleStart(args);
967
496
  break;
968
- // DEPRECATED: case "add_task":
969
- // DEPRECATED: result = await handleAddTask(args);
970
- // DEPRECATED: break;
971
497
  case "update_memory":
972
498
  result = await handleUpdateMemory(args);
973
499
  break;
974
- // DEPRECATED: case "update_task_status":
975
- // DEPRECATED: result = await handleUpdateTaskStatus(args);
976
- // DEPRECATED: break;
977
- // DEPRECATED: case "update_task":
978
- // DEPRECATED: result = await handleUpdateTask(args);
979
- // DEPRECATED: break;
980
500
  case "list_tasks":
981
501
  result = await handleListTasks(args);
982
502
  break;
983
- // DEPRECATED: case "delete_task":
984
- // DEPRECATED: result = await handleDeleteTask(args);
985
- // DEPRECATED: break;
986
503
  default:
987
504
  throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
988
505
  }
package/index.ts CHANGED
@@ -108,72 +108,6 @@ const server = new Server(
108
108
  );
109
109
 
110
110
  const TOOLS = [
111
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
112
- // {
113
- // name: "add_memory",
114
- // description:
115
- // "Store CONTEXT (general information and knowledge) in the user's memory system. For actionable workflow items with status tracking, use add_task instead. Accepts a single context item or an array of context items for batch creation. REQUIRES space_id parameter.",
116
- // inputSchema: {
117
- // type: "object",
118
- // properties: {
119
- // space_id: {
120
- // type: "string",
121
- // description:
122
- // "REQUIRED: Space to store memory/memories in (use list_spaces to see available options)",
123
- // },
124
- // memories: {
125
- // oneOf: [
126
- // {
127
- // type: "object",
128
- // properties: {
129
- // title: {
130
- // type: "string",
131
- // description: "Title/summary of the memory",
132
- // },
133
- // content: {
134
- // type: "string",
135
- // description: "Detailed content of the memory",
136
- // },
137
- // topics: {
138
- // type: "array",
139
- // items: { type: "string" },
140
- // description:
141
- // "Flexible topics/tags for organization (e.g., ['coding', 'react'])",
142
- // },
143
- // },
144
- // required: ["title", "content"],
145
- // },
146
- // {
147
- // type: "array",
148
- // items: {
149
- // type: "object",
150
- // properties: {
151
- // title: {
152
- // type: "string",
153
- // description: "Title/summary of the memory",
154
- // },
155
- // content: {
156
- // type: "string",
157
- // description: "Detailed content of the memory",
158
- // },
159
- // topics: {
160
- // type: "array",
161
- // items: { type: "string" },
162
- // description:
163
- // "Flexible topics/tags for organization (e.g., ['coding', 'react'])",
164
- // },
165
- // },
166
- // required: ["title", "content"],
167
- // },
168
- // },
169
- // ],
170
- // description:
171
- // "Single memory object or array of memory objects to create",
172
- // },
173
- // },
174
- // required: ["space_id", "memories"],
175
- // },
176
- // },
177
111
  {
178
112
  name: "search_memories",
179
113
  description:
@@ -251,48 +185,6 @@ const TOOLS = [
251
185
  },
252
186
  },
253
187
  },
254
- // DISABLED: get_entities tool - not useful in current form
255
- // {
256
- // name: "get_entities",
257
- // description:
258
- // "Get extracted entities (people, places, concepts) from CONTEXT items (general information). If no memory_id provided, returns top 20 most frequently mentioned entities across all context. WARNING: This tool can return large responses - use sparingly and only when entity information is specifically needed.",
259
- // inputSchema: {
260
- // type: "object",
261
- // properties: {
262
- // memory_id: {
263
- // type: "string",
264
- // description:
265
- // "Memory ID to get entities for. RECOMMENDED: Always provide memory_id to get focused results.",
266
- // },
267
- // },
268
- // },
269
- // },
270
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
271
- // {
272
- // name: "delete_memory",
273
- // description:
274
- // "Delete one or more CONTEXT items (general information). For deleting tasks, use delete_task instead. Accepts a single memory ID or an array of memory IDs for batch deletion.",
275
- // inputSchema: {
276
- // type: "object",
277
- // properties: {
278
- // memory_ids: {
279
- // oneOf: [
280
- // {
281
- // type: "string",
282
- // description: "Single memory ID to delete",
283
- // },
284
- // {
285
- // type: "array",
286
- // items: { type: "string" },
287
- // description: "Array of memory IDs to delete",
288
- // },
289
- // ],
290
- // description: "Single memory ID or array of memory IDs to delete",
291
- // },
292
- // },
293
- // required: ["memory_ids"],
294
- // },
295
- // },
296
188
  {
297
189
  name: "list_spaces",
298
190
  description:
@@ -305,7 +197,7 @@ const TOOLS = [
305
197
  {
306
198
  name: "create_space",
307
199
  description:
308
- "Create a new space with optional startup configuration. Spaces are top-level containers that hold both context (general information) and tasks (actionable items). The 'start' tool loads this configuration when beginning work in this space. Checks user's plan limits and returns upgrade link if limit reached.",
200
+ "Create a new space with optional configuration. Spaces are top-level containers that hold both context (general information) and tasks (actionable items). The 'start' tool loads this configuration when beginning work in this space. Checks user's plan limits and returns upgrade link if limit reached.",
309
201
  inputSchema: {
310
202
  type: "object",
311
203
  properties: {
@@ -319,15 +211,16 @@ const TOOLS = [
319
211
  description:
320
212
  "Brief description of what this space is for (e.g., 'Work-related context and tasks')",
321
213
  },
322
- startup_context: {
323
- type: "string",
214
+ config_badges: {
215
+ type: "array",
216
+ items: { type: "string" },
324
217
  description:
325
- "Context and keywords provided to AI when starting this space. Include role, preferences, common tasks, and relevant search terms. This helps the AI understand what information to prioritize from memory.",
218
+ "Array of keywords for memory focus in this space. These keywords help steer what context gets loaded when running 'start' for this space. Examples: ['TypeScript', 'React', 'API design', 'authentication']. They act as search terms to prioritize relevant memories.",
326
219
  },
327
220
  startup_preferences: {
328
221
  type: "string",
329
222
  description:
330
- "AI behavior preferences for this space. Guides how the AI should interact and respond when working in this context (e.g., 'Be concise and technical', 'Focus on creative solutions').",
223
+ "AI behavior preferences for this 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'.",
331
224
  },
332
225
  include_tasks: {
333
226
  type: "boolean",
@@ -368,193 +261,6 @@ const TOOLS = [
368
261
  required: ["space_id"],
369
262
  },
370
263
  },
371
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
372
- // {
373
- // name: "add_task",
374
- // description:
375
- // "Create one or more tasks in your space with status tracking and priority levels. Supports BATCH creation and NESTED subtasks. Accepts a single task object or an array of task objects. Tasks have graph relationships like memories (entities, topics, temporal). REQUIRES space_id parameter. Example with subtasks: {tasks: {title: 'Parent', content: 'Main task', subtasks: [{title: 'Subtask 1', content: 'Child task'}]}}",
376
- // inputSchema: {
377
- // type: "object",
378
- // properties: {
379
- // space_id: {
380
- // type: "string",
381
- // description:
382
- // "REQUIRED: Space to create task/tasks in (use list_spaces to see available options)",
383
- // },
384
- // tasks: {
385
- // oneOf: [
386
- // {
387
- // type: "object",
388
- // properties: {
389
- // title: {
390
- // type: "string",
391
- // description: "Task title/summary",
392
- // },
393
- // content: {
394
- // type: "string",
395
- // description: "Detailed task description",
396
- // },
397
- // topics: {
398
- // type: "array",
399
- // items: { type: "string" },
400
- // description: "Optional topics/tags for organization",
401
- // },
402
- // status: {
403
- // type: "string",
404
- // enum: ["pending", "in_progress", "completed", "invalidated"],
405
- // description: "Task status (default: pending)",
406
- // default: "pending",
407
- // },
408
- // priority: {
409
- // type: "string",
410
- // enum: ["urgent", "high", "medium", "low"],
411
- // description:
412
- // "Task priority level (default: medium). Use 'urgent' for time-sensitive tasks requiring immediate attention, 'high' for important tasks, 'medium' for standard tasks, 'low' for nice-to-have tasks.",
413
- // default: "medium",
414
- // },
415
- // parent_id: {
416
- // type: "string",
417
- // description:
418
- // "Optional parent task ID to create this as a subtask. Use an existing task's ID (format: task_TIMESTAMP_ID) to nest this task under it. Use list_tasks to find parent task IDs. If omitted, creates a top-level task. NOTE: Use 'subtasks' array instead for creating parent+children in one call.",
419
- // },
420
- // subtasks: {
421
- // type: "array",
422
- // items: {
423
- // type: "object",
424
- // properties: {
425
- // title: {
426
- // type: "string",
427
- // description: "Subtask title",
428
- // },
429
- // content: {
430
- // type: "string",
431
- // description: "Subtask description/details",
432
- // },
433
- // topics: {
434
- // type: "array",
435
- // items: { type: "string" },
436
- // description: "Topics/tags for this subtask",
437
- // },
438
- // status: {
439
- // type: "string",
440
- // enum: [
441
- // "pending",
442
- // "in_progress",
443
- // "completed",
444
- // "invalidated",
445
- // ],
446
- // description: "Subtask status (default: pending)",
447
- // default: "pending",
448
- // },
449
- // priority: {
450
- // type: "string",
451
- // enum: ["urgent", "high", "medium", "low"],
452
- // description: "Subtask priority level (default: medium)",
453
- // default: "medium",
454
- // },
455
- // },
456
- // required: ["title", "content"],
457
- // },
458
- // description:
459
- // "Optional array of subtasks to create under this parent task. Each will be automatically linked to the parent.",
460
- // },
461
- // },
462
- // required: ["title", "content"],
463
- // },
464
- // {
465
- // type: "array",
466
- // items: {
467
- // type: "object",
468
- // properties: {
469
- // title: {
470
- // type: "string",
471
- // description: "Task title/summary",
472
- // },
473
- // content: {
474
- // type: "string",
475
- // description: "Detailed task description",
476
- // },
477
- // topics: {
478
- // type: "array",
479
- // items: { type: "string" },
480
- // description: "Optional topics/tags for organization",
481
- // },
482
- // status: {
483
- // type: "string",
484
- // enum: [
485
- // "pending",
486
- // "in_progress",
487
- // "completed",
488
- // "invalidated",
489
- // ],
490
- // description: "Task status (default: pending)",
491
- // default: "pending",
492
- // },
493
- // priority: {
494
- // type: "string",
495
- // enum: ["urgent", "high", "medium", "low"],
496
- // description:
497
- // "Task priority level (default: medium). Use 'urgent' for time-sensitive tasks requiring immediate attention, 'high' for important tasks, 'medium' for standard tasks, 'low' for nice-to-have tasks.",
498
- // default: "medium",
499
- // },
500
- // parent_id: {
501
- // type: "string",
502
- // description:
503
- // "Optional parent task ID to create this as a subtask. Use an existing task's ID (format: task_TIMESTAMP_ID) to nest this task under it. Use list_tasks to find parent task IDs. If omitted, creates a top-level task. NOTE: Use 'subtasks' array instead for creating parent+children in one call.",
504
- // },
505
- // subtasks: {
506
- // type: "array",
507
- // items: {
508
- // type: "object",
509
- // properties: {
510
- // title: {
511
- // type: "string",
512
- // description: "Subtask title",
513
- // },
514
- // content: {
515
- // type: "string",
516
- // description: "Subtask description/details",
517
- // },
518
- // topics: {
519
- // type: "array",
520
- // items: { type: "string" },
521
- // description: "Topics/tags for this subtask",
522
- // },
523
- // status: {
524
- // type: "string",
525
- // enum: [
526
- // "pending",
527
- // "in_progress",
528
- // "completed",
529
- // "invalidated",
530
- // ],
531
- // description: "Subtask status (default: pending)",
532
- // default: "pending",
533
- // },
534
- // priority: {
535
- // type: "string",
536
- // enum: ["urgent", "high", "medium", "low"],
537
- // description:
538
- // "Subtask priority level (default: medium)",
539
- // default: "medium",
540
- // },
541
- // },
542
- // required: ["title", "content"],
543
- // },
544
- // description:
545
- // "Optional array of subtasks to create under this parent task. Each will be automatically linked to the parent.",
546
- // },
547
- // },
548
- // required: ["title", "content"],
549
- // },
550
- // },
551
- // ],
552
- // description: "Single task object or array of task objects to create",
553
- // },
554
- // },
555
- // required: ["space_id", "tasks"],
556
- // },
557
- // },
558
264
  {
559
265
  name: "update_memory",
560
266
  description:
@@ -714,92 +420,6 @@ const TOOLS = [
714
420
  required: ["space_id"],
715
421
  },
716
422
  },
717
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
718
- // {
719
- // name: "update_task_status",
720
- // description:
721
- // "Change a task's status (pending/in_progress/completed/invalidated)",
722
- // inputSchema: {
723
- // type: "object",
724
- // properties: {
725
- // task_id: {
726
- // type: "string",
727
- // description: "Task ID to update",
728
- // },
729
- // status: {
730
- // type: "string",
731
- // enum: ["pending", "in_progress", "completed", "invalidated"],
732
- // description: "New status",
733
- // },
734
- // },
735
- // required: ["task_id", "status"],
736
- // },
737
- // },
738
- {
739
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
740
- // name: "update_task",
741
- // description:
742
- // "Update one or more TASKS (not context/memories - use add_memory to update context by creating new versions). Accepts a single update object or an array of update objects for batch updates. Each update must include task_id.",
743
- // inputSchema: {
744
- // type: "object",
745
- // properties: {
746
- // updates: {
747
- // oneOf: [
748
- // {
749
- // type: "object",
750
- // properties: {
751
- // task_id: {
752
- // type: "string",
753
- // description: "Task ID to update",
754
- // },
755
- // title: {
756
- // type: "string",
757
- // description: "New title (optional)",
758
- // },
759
- // content: {
760
- // type: "string",
761
- // description: "New content (optional)",
762
- // },
763
- // topics: {
764
- // type: "array",
765
- // items: { type: "string" },
766
- // description: "New topics array (optional)",
767
- // },
768
- // },
769
- // required: ["task_id"],
770
- // },
771
- // {
772
- // type: "array",
773
- // items: {
774
- // type: "object",
775
- // properties: {
776
- // task_id: {
777
- // type: "string",
778
- // description: "Task ID to update",
779
- // },
780
- // title: {
781
- // type: "string",
782
- // description: "New title (optional)",
783
- // },
784
- // content: {
785
- // type: "string",
786
- // description: "New content (optional)",
787
- // },
788
- // topics: {
789
- // type: "array",
790
- // items: { type: "string" },
791
- // description: "New topics array (optional)",
792
- // },
793
- // },
794
- // required: ["task_id"],
795
- // },
796
- // },
797
- // ],
798
- // description: "Single update object or array of update objects",
799
- // },
800
- // },
801
- // required: ["updates"],
802
- },
803
423
  {
804
424
  name: "list_tasks",
805
425
  description: "List tasks in a space with optional filtering",
@@ -829,57 +449,12 @@ const TOOLS = [
829
449
  required: ["space_id"],
830
450
  },
831
451
  },
832
- // DEPRECATED: Use update_memory instead (Nov 8, 2025)
833
- // {
834
- // name: "delete_task",
835
- // description:
836
- // "Delete one or more tasks in a single transaction. Accepts a single task ID or an array of task IDs for batch deletion.",
837
- // inputSchema: {
838
- // type: "object",
839
- // properties: {
840
- // task_ids: {
841
- // oneOf: [
842
- // {
843
- // type: "string",
844
- // description: "Single task ID to delete",
845
- // },
846
- // {
847
- // type: "array",
848
- // items: { type: "string" },
849
- // description: "Array of task IDs to delete",
850
- // },
851
- // ],
852
- // description: "Single task ID or array of task IDs to delete",
853
- // },
854
- // },
855
- // required: ["task_ids"],
856
- // },
857
- // },
858
452
  ];
859
453
 
860
454
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
861
455
  tools: TOOLS,
862
456
  }));
863
457
 
864
- async function handleAddMemory(args: any) {
865
- // Require space_id to be provided
866
- if (!args.space_id) {
867
- throw new Error(
868
- "space_id is required. Use list_spaces to see available options.",
869
- );
870
- }
871
-
872
- if (!args.memories) {
873
- throw new Error("memories parameter is required (single object or array)");
874
- }
875
-
876
- // Pass through to API
877
- return makeApiCall("add-memory", {
878
- space_id: args.space_id,
879
- memories: args.memories,
880
- });
881
- }
882
-
883
458
  async function handleSearchMemories(args: any) {
884
459
  const {
885
460
  space_id,
@@ -940,14 +515,6 @@ async function handleFetch(args: any) {
940
515
  return makeApiCall("fetch", { id, ids });
941
516
  }
942
517
 
943
- /* async function handleDeleteMemory(args: any) {
944
- const { memory_ids } = args as {
945
- memory_ids: string | string[];
946
- };
947
-
948
- return makeApiCall("delete-memory", { memory_ids });
949
- } */
950
-
951
518
  async function handleListSpaces() {
952
519
  return makeApiCall("list-spaces", {});
953
520
  }
@@ -965,24 +532,6 @@ async function handleStart(args: any) {
965
532
  const { space_id } = args as { space_id: string };
966
533
  return makeApiCall("start", { space_id });
967
534
  }
968
- /*
969
- async function handleAddTask(args: any) {
970
- if (!args.space_id) {
971
- throw new Error(
972
- "space_id is required. Use list_spaces to see available options.",
973
- );
974
- }
975
-
976
- if (!args.tasks) {
977
- throw new Error("tasks parameter is required (single object or array)");
978
- }
979
-
980
- // Pass through to API
981
- return makeApiCall("add-task", {
982
- space_id: args.space_id,
983
- tasks: args.tasks,
984
- });
985
- } */
986
535
 
987
536
  async function handleUpdateMemory(args: any) {
988
537
  if (!args.space_id) {
@@ -1006,33 +555,10 @@ async function handleUpdateMemory(args: any) {
1006
555
  });
1007
556
  }
1008
557
 
1009
- async function handleUpdateTaskStatus(args: any) {
1010
- return makeApiCall("update-task-status", args);
1011
- }
1012
-
1013
- async function handleUpdateTask(args: any) {
1014
- if (!args.updates) {
1015
- throw new Error("updates parameter is required (single object or array)");
1016
- }
1017
-
1018
- // Pass through to API
1019
- return makeApiCall("update-task", {
1020
- updates: args.updates,
1021
- });
1022
- }
1023
-
1024
558
  async function handleListTasks(args: any) {
1025
559
  return makeApiCall("list-tasks", args);
1026
560
  }
1027
561
 
1028
- async function handleDeleteTask(args: any) {
1029
- const { task_ids } = args as {
1030
- task_ids: string | string[];
1031
- };
1032
-
1033
- return makeApiCall("delete-task", { task_ids });
1034
- }
1035
-
1036
562
  server.setRequestHandler(CallToolRequestSchema, async (request: any) => {
1037
563
  const { name, arguments: args } = request.params;
1038
564
 
@@ -1040,9 +566,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request: any) => {
1040
566
  let result: any;
1041
567
 
1042
568
  switch (name) {
1043
- // DEPRECATED: case "add_memory":
1044
- // DEPRECATED: result = await handleAddMemory(args);
1045
- // DEPRECATED: break;
1046
569
  case "search_memories":
1047
570
  result = await handleSearchMemories(args);
1048
571
  break;
@@ -1052,13 +575,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request: any) => {
1052
575
  case "fetch":
1053
576
  result = await handleFetch(args);
1054
577
  break;
1055
- // DISABLED: get_entities handler - not useful in current form
1056
- // case "get_entities":
1057
- // result = await handleGetEntities(args);
1058
- // break;
1059
- // DEPRECATED: case "delete_memory":
1060
- // DEPRECATED: result = await handleDeleteMemory(args);
1061
- // DEPRECATED: break;
1062
578
  case "list_spaces":
1063
579
  result = await handleListSpaces();
1064
580
  break;
@@ -1071,24 +587,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request: any) => {
1071
587
  case "start":
1072
588
  result = await handleStart(args);
1073
589
  break;
1074
- // DEPRECATED: case "add_task":
1075
- // DEPRECATED: result = await handleAddTask(args);
1076
- // DEPRECATED: break;
1077
590
  case "update_memory":
1078
591
  result = await handleUpdateMemory(args);
1079
592
  break;
1080
- // DEPRECATED: case "update_task_status":
1081
- // DEPRECATED: result = await handleUpdateTaskStatus(args);
1082
- // DEPRECATED: break;
1083
- // DEPRECATED: case "update_task":
1084
- // DEPRECATED: result = await handleUpdateTask(args);
1085
- // DEPRECATED: break;
1086
593
  case "list_tasks":
1087
594
  result = await handleListTasks(args);
1088
595
  break;
1089
- // DEPRECATED: case "delete_task":
1090
- // DEPRECATED: result = await handleDeleteTask(args);
1091
- // DEPRECATED: break;
1092
596
  default:
1093
597
  throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
1094
598
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intangle/mcp-server",
3
- "version": "1.1.7",
3
+ "version": "1.1.9",
4
4
  "description": "Model Context Protocol server for Intangle - AI memory that persists across conversations",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",