@intangle/mcp-server 1.1.4 → 1.1.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.
Files changed (3) hide show
  1. package/dist/index.js +115 -118
  2. package/index.ts +117 -123
  3. package/package.json +50 -51
package/dist/index.js CHANGED
@@ -208,19 +208,22 @@ const TOOLS = [
208
208
  },
209
209
  },
210
210
  },
211
- {
212
- name: "get_entities",
213
- description: "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.",
214
- inputSchema: {
215
- type: "object",
216
- properties: {
217
- memory_id: {
218
- type: "string",
219
- description: "Memory ID to get entities for. RECOMMENDED: Always provide memory_id to get focused results.",
220
- },
221
- },
222
- },
223
- },
211
+ // DISABLED: get_entities tool - not useful in current form
212
+ // {
213
+ // name: "get_entities",
214
+ // description:
215
+ // "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.",
216
+ // inputSchema: {
217
+ // type: "object",
218
+ // properties: {
219
+ // memory_id: {
220
+ // type: "string",
221
+ // description:
222
+ // "Memory ID to get entities for. RECOMMENDED: Always provide memory_id to get focused results.",
223
+ // },
224
+ // },
225
+ // },
226
+ // },
224
227
  {
225
228
  name: "delete_memory",
226
229
  description: "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.",
@@ -491,154 +494,146 @@ const TOOLS = [
491
494
  },
492
495
  {
493
496
  name: "update_memory",
494
- description: "Update memory with new CONTEXT and TASKS. Unified tool for adding new items to the memory system in one call. NOTE: 'Memories' encompasses both context (general information, stored as Memory nodes) and tasks (actionable items, stored as Task nodes). This tool is for ADDING new items to update the memory system, not modifying existing ones. At least one of context or tasks must be provided. REQUIRES space_id parameter.",
497
+ 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.",
495
498
  inputSchema: {
496
499
  type: "object",
497
500
  properties: {
498
501
  space_id: {
499
502
  type: "string",
500
- description: "REQUIRED: Space to add items to (use list_spaces to see available options)",
503
+ description: "REQUIRED: Space to operate in (use list_spaces to see available options)",
501
504
  },
502
- context: {
503
- oneOf: [
504
- {
505
- type: "object",
506
- properties: {
507
- title: {
508
- type: "string",
509
- description: "Context item title",
510
- },
511
- content: {
512
- type: "string",
513
- description: "Context item content (general information/knowledge)",
514
- },
515
- topics: {
516
- type: "array",
517
- items: { type: "string" },
518
- description: "Optional topics/tags for organization",
519
- },
520
- source: {
521
- type: "string",
522
- enum: ["chatgpt", "claude-app", "claude-code", "intangle"],
523
- description: "Optional source indicator",
524
- },
525
- },
526
- required: ["title", "content"],
527
- },
528
- {
505
+ add: {
506
+ type: "object",
507
+ description: "Add new context and/or tasks to memory",
508
+ properties: {
509
+ context: {
529
510
  type: "array",
530
511
  items: {
531
512
  type: "object",
532
513
  properties: {
533
- title: {
534
- type: "string",
535
- description: "Context item title",
536
- },
514
+ title: { type: "string", description: "Context title" },
537
515
  content: {
538
516
  type: "string",
539
- description: "Context item content (general information/knowledge)",
517
+ description: "Context content (general information)",
540
518
  },
541
519
  topics: {
542
520
  type: "array",
543
521
  items: { type: "string" },
544
- description: "Optional topics/tags for organization",
522
+ description: "Optional topics/tags",
545
523
  },
546
- source: {
524
+ },
525
+ required: ["title", "content"],
526
+ },
527
+ description: "Array of context items to add",
528
+ },
529
+ tasks: {
530
+ type: "array",
531
+ items: {
532
+ type: "object",
533
+ properties: {
534
+ title: { type: "string", description: "Task title" },
535
+ content: { type: "string", description: "Task description" },
536
+ topics: {
537
+ type: "array",
538
+ items: { type: "string" },
539
+ description: "Optional topics/tags",
540
+ },
541
+ status: {
547
542
  type: "string",
548
- enum: ["chatgpt", "claude-app", "claude-code", "intangle"],
549
- description: "Optional source indicator",
543
+ enum: ["pending", "in_progress", "completed", "invalidated"],
544
+ description: "Task status (default: pending)",
545
+ },
546
+ priority: {
547
+ type: "string",
548
+ enum: ["urgent", "high", "medium", "low"],
549
+ description: "Priority level (default: medium)",
550
550
  },
551
551
  },
552
552
  required: ["title", "content"],
553
553
  },
554
+ description: "Array of tasks to add",
554
555
  },
555
- ],
556
- description: "Optional context items to add (general information/knowledge)",
556
+ },
557
557
  },
558
- tasks: {
559
- oneOf: [
560
- {
561
- type: "object",
562
- properties: {
563
- title: {
564
- type: "string",
565
- description: "Task title/summary",
566
- },
567
- content: {
568
- type: "string",
569
- description: "Detailed task description",
570
- },
571
- topics: {
572
- type: "array",
573
- items: { type: "string" },
574
- description: "Optional topics/tags for organization",
575
- },
576
- status: {
577
- type: "string",
578
- enum: ["pending", "in_progress", "completed", "invalidated"],
579
- description: "Task status (default: pending)",
580
- default: "pending",
581
- },
582
- priority: {
583
- type: "string",
584
- enum: ["urgent", "high", "medium", "low"],
585
- description: "Task priority level (default: medium)",
586
- default: "medium",
587
- },
588
- source: {
589
- type: "string",
590
- enum: ["chatgpt", "claude-app", "claude-code", "intangle"],
591
- description: "Optional source indicator",
558
+ update: {
559
+ type: "object",
560
+ description: "Update existing context and/or tasks",
561
+ properties: {
562
+ context: {
563
+ type: "array",
564
+ items: {
565
+ type: "object",
566
+ properties: {
567
+ id: { type: "string", description: "Context ID to update" },
568
+ title: {
569
+ type: "string",
570
+ description: "New title (optional)",
571
+ },
572
+ content: {
573
+ type: "string",
574
+ description: "New content (optional)",
575
+ },
576
+ topics: {
577
+ type: "array",
578
+ items: { type: "string" },
579
+ description: "New topics (optional)",
580
+ },
592
581
  },
582
+ required: ["id"],
593
583
  },
594
- required: ["title", "content"],
584
+ description: "Array of context updates (must include id)",
595
585
  },
596
- {
586
+ tasks: {
597
587
  type: "array",
598
588
  items: {
599
589
  type: "object",
600
590
  properties: {
591
+ task_id: { type: "string", description: "Task ID to update" },
601
592
  title: {
602
593
  type: "string",
603
- description: "Task title/summary",
594
+ description: "New title (optional)",
604
595
  },
605
596
  content: {
606
597
  type: "string",
607
- description: "Detailed task description",
598
+ description: "New content (optional)",
608
599
  },
609
600
  topics: {
610
601
  type: "array",
611
602
  items: { type: "string" },
612
- description: "Optional topics/tags for organization",
603
+ description: "New topics (optional)",
613
604
  },
614
605
  status: {
615
606
  type: "string",
616
- enum: [
617
- "pending",
618
- "in_progress",
619
- "completed",
620
- "invalidated",
621
- ],
622
- description: "Task status (default: pending)",
623
- default: "pending",
607
+ enum: ["pending", "in_progress", "completed", "invalidated"],
608
+ description: "New status (optional)",
624
609
  },
625
610
  priority: {
626
611
  type: "string",
627
612
  enum: ["urgent", "high", "medium", "low"],
628
- description: "Task priority level (default: medium)",
629
- default: "medium",
630
- },
631
- source: {
632
- type: "string",
633
- enum: ["chatgpt", "claude-app", "claude-code", "intangle"],
634
- description: "Optional source indicator",
613
+ description: "New priority (optional)",
635
614
  },
636
615
  },
637
- required: ["title", "content"],
616
+ required: ["task_id"],
638
617
  },
618
+ description: "Array of task updates (must include task_id)",
639
619
  },
640
- ],
641
- description: "Optional tasks to add (actionable workflow items)",
620
+ },
621
+ },
622
+ delete: {
623
+ type: "object",
624
+ description: "Delete context and/or tasks by ID",
625
+ properties: {
626
+ context_ids: {
627
+ type: "array",
628
+ items: { type: "string" },
629
+ description: "Array of context IDs to delete",
630
+ },
631
+ task_ids: {
632
+ type: "array",
633
+ items: { type: "string" },
634
+ description: "Array of task IDs to delete",
635
+ },
636
+ },
642
637
  },
643
638
  },
644
639
  required: ["space_id"],
@@ -867,14 +862,15 @@ async function handleUpdateMemory(args) {
867
862
  if (!args.space_id) {
868
863
  throw new Error("space_id is required. Use list_spaces to see available options.");
869
864
  }
870
- if (!args.context && !args.tasks) {
871
- throw new Error("At least one of context or tasks must be provided");
865
+ if (!args.add && !args.update && !args.delete) {
866
+ throw new Error("At least one operation (add, update, delete) must be provided");
872
867
  }
873
- // Pass through to API
868
+ // Pass through to API with new structure
874
869
  return makeApiCall("update-memory", {
875
870
  space_id: args.space_id,
876
- context: args.context,
877
- tasks: args.tasks,
871
+ add: args.add,
872
+ update: args.update,
873
+ delete: args.delete,
878
874
  });
879
875
  }
880
876
  async function handleUpdateTaskStatus(args) {
@@ -913,9 +909,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
913
909
  case "fetch":
914
910
  result = await handleFetch(args);
915
911
  break;
916
- case "get_entities":
917
- result = await handleGetEntities(args);
918
- break;
912
+ // DISABLED: get_entities handler - not useful in current form
913
+ // case "get_entities":
914
+ // result = await handleGetEntities(args);
915
+ // break;
919
916
  case "delete_memory":
920
917
  result = await handleDeleteMemory(args);
921
918
  break;
package/index.ts CHANGED
@@ -250,21 +250,22 @@ const TOOLS = [
250
250
  },
251
251
  },
252
252
  },
253
- {
254
- name: "get_entities",
255
- description:
256
- "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.",
257
- inputSchema: {
258
- type: "object",
259
- properties: {
260
- memory_id: {
261
- type: "string",
262
- description:
263
- "Memory ID to get entities for. RECOMMENDED: Always provide memory_id to get focused results.",
264
- },
265
- },
266
- },
267
- },
253
+ // DISABLED: get_entities tool - not useful in current form
254
+ // {
255
+ // name: "get_entities",
256
+ // description:
257
+ // "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.",
258
+ // inputSchema: {
259
+ // type: "object",
260
+ // properties: {
261
+ // memory_id: {
262
+ // type: "string",
263
+ // description:
264
+ // "Memory ID to get entities for. RECOMMENDED: Always provide memory_id to get focused results.",
265
+ // },
266
+ // },
267
+ // },
268
+ // },
268
269
  {
269
270
  name: "delete_memory",
270
271
  description:
@@ -554,158 +555,147 @@ const TOOLS = [
554
555
  {
555
556
  name: "update_memory",
556
557
  description:
557
- "Update memory with new CONTEXT and TASKS. Unified tool for adding new items to the memory system in one call. NOTE: 'Memories' encompasses both context (general information, stored as Memory nodes) and tasks (actionable items, stored as Task nodes). This tool is for ADDING new items to update the memory system, not modifying existing ones. At least one of context or tasks must be provided. REQUIRES space_id parameter.",
558
+ "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.",
558
559
  inputSchema: {
559
560
  type: "object",
560
561
  properties: {
561
562
  space_id: {
562
563
  type: "string",
563
564
  description:
564
- "REQUIRED: Space to add items to (use list_spaces to see available options)",
565
+ "REQUIRED: Space to operate in (use list_spaces to see available options)",
565
566
  },
566
- context: {
567
- oneOf: [
568
- {
569
- type: "object",
570
- properties: {
571
- title: {
572
- type: "string",
573
- description: "Context item title",
574
- },
575
- content: {
576
- type: "string",
577
- description:
578
- "Context item content (general information/knowledge)",
579
- },
580
- topics: {
581
- type: "array",
582
- items: { type: "string" },
583
- description: "Optional topics/tags for organization",
584
- },
585
- source: {
586
- type: "string",
587
- enum: ["chatgpt", "claude-app", "claude-code", "intangle"],
588
- description: "Optional source indicator",
589
- },
590
- },
591
- required: ["title", "content"],
592
- },
593
- {
567
+ add: {
568
+ type: "object",
569
+ description: "Add new context and/or tasks to memory",
570
+ properties: {
571
+ context: {
594
572
  type: "array",
595
573
  items: {
596
574
  type: "object",
597
575
  properties: {
598
- title: {
599
- type: "string",
600
- description: "Context item title",
601
- },
576
+ title: { type: "string", description: "Context title" },
602
577
  content: {
603
578
  type: "string",
604
- description:
605
- "Context item content (general information/knowledge)",
579
+ description: "Context content (general information)",
606
580
  },
607
581
  topics: {
608
582
  type: "array",
609
583
  items: { type: "string" },
610
- description: "Optional topics/tags for organization",
584
+ description: "Optional topics/tags",
585
+ },
586
+ },
587
+ required: ["title", "content"],
588
+ },
589
+ description: "Array of context items to add",
590
+ },
591
+ tasks: {
592
+ type: "array",
593
+ items: {
594
+ type: "object",
595
+ properties: {
596
+ title: { type: "string", description: "Task title" },
597
+ content: { type: "string", description: "Task description" },
598
+ topics: {
599
+ type: "array",
600
+ items: { type: "string" },
601
+ description: "Optional topics/tags",
602
+ },
603
+ status: {
604
+ type: "string",
605
+ enum: ["pending", "in_progress", "completed", "invalidated"],
606
+ description: "Task status (default: pending)",
611
607
  },
612
- source: {
608
+ priority: {
613
609
  type: "string",
614
- enum: ["chatgpt", "claude-app", "claude-code", "intangle"],
615
- description: "Optional source indicator",
610
+ enum: ["urgent", "high", "medium", "low"],
611
+ description: "Priority level (default: medium)",
616
612
  },
617
613
  },
618
614
  required: ["title", "content"],
619
615
  },
616
+ description: "Array of tasks to add",
620
617
  },
621
- ],
622
- description:
623
- "Optional context items to add (general information/knowledge)",
618
+ },
624
619
  },
625
- tasks: {
626
- oneOf: [
627
- {
628
- type: "object",
629
- properties: {
630
- title: {
631
- type: "string",
632
- description: "Task title/summary",
633
- },
634
- content: {
635
- type: "string",
636
- description: "Detailed task description",
637
- },
638
- topics: {
639
- type: "array",
640
- items: { type: "string" },
641
- description: "Optional topics/tags for organization",
642
- },
643
- status: {
644
- type: "string",
645
- enum: ["pending", "in_progress", "completed", "invalidated"],
646
- description: "Task status (default: pending)",
647
- default: "pending",
648
- },
649
- priority: {
650
- type: "string",
651
- enum: ["urgent", "high", "medium", "low"],
652
- description: "Task priority level (default: medium)",
653
- default: "medium",
654
- },
655
- source: {
656
- type: "string",
657
- enum: ["chatgpt", "claude-app", "claude-code", "intangle"],
658
- description: "Optional source indicator",
620
+ update: {
621
+ type: "object",
622
+ description: "Update existing context and/or tasks",
623
+ properties: {
624
+ context: {
625
+ type: "array",
626
+ items: {
627
+ type: "object",
628
+ properties: {
629
+ id: { type: "string", description: "Context ID to update" },
630
+ title: {
631
+ type: "string",
632
+ description: "New title (optional)",
633
+ },
634
+ content: {
635
+ type: "string",
636
+ description: "New content (optional)",
637
+ },
638
+ topics: {
639
+ type: "array",
640
+ items: { type: "string" },
641
+ description: "New topics (optional)",
642
+ },
659
643
  },
644
+ required: ["id"],
660
645
  },
661
- required: ["title", "content"],
646
+ description: "Array of context updates (must include id)",
662
647
  },
663
- {
648
+ tasks: {
664
649
  type: "array",
665
650
  items: {
666
651
  type: "object",
667
652
  properties: {
653
+ task_id: { type: "string", description: "Task ID to update" },
668
654
  title: {
669
655
  type: "string",
670
- description: "Task title/summary",
656
+ description: "New title (optional)",
671
657
  },
672
658
  content: {
673
659
  type: "string",
674
- description: "Detailed task description",
660
+ description: "New content (optional)",
675
661
  },
676
662
  topics: {
677
663
  type: "array",
678
664
  items: { type: "string" },
679
- description: "Optional topics/tags for organization",
665
+ description: "New topics (optional)",
680
666
  },
681
667
  status: {
682
668
  type: "string",
683
- enum: [
684
- "pending",
685
- "in_progress",
686
- "completed",
687
- "invalidated",
688
- ],
689
- description: "Task status (default: pending)",
690
- default: "pending",
669
+ enum: ["pending", "in_progress", "completed", "invalidated"],
670
+ description: "New status (optional)",
691
671
  },
692
672
  priority: {
693
673
  type: "string",
694
674
  enum: ["urgent", "high", "medium", "low"],
695
- description: "Task priority level (default: medium)",
696
- default: "medium",
697
- },
698
- source: {
699
- type: "string",
700
- enum: ["chatgpt", "claude-app", "claude-code", "intangle"],
701
- description: "Optional source indicator",
675
+ description: "New priority (optional)",
702
676
  },
703
677
  },
704
- required: ["title", "content"],
678
+ required: ["task_id"],
705
679
  },
680
+ description: "Array of task updates (must include task_id)",
706
681
  },
707
- ],
708
- description: "Optional tasks to add (actionable workflow items)",
682
+ },
683
+ },
684
+ delete: {
685
+ type: "object",
686
+ description: "Delete context and/or tasks by ID",
687
+ properties: {
688
+ context_ids: {
689
+ type: "array",
690
+ items: { type: "string" },
691
+ description: "Array of context IDs to delete",
692
+ },
693
+ task_ids: {
694
+ type: "array",
695
+ items: { type: "string" },
696
+ description: "Array of task IDs to delete",
697
+ },
698
+ },
709
699
  },
710
700
  },
711
701
  required: ["space_id"],
@@ -992,15 +982,18 @@ async function handleUpdateMemory(args: any) {
992
982
  );
993
983
  }
994
984
 
995
- if (!args.context && !args.tasks) {
996
- throw new Error("At least one of context or tasks must be provided");
985
+ if (!args.add && !args.update && !args.delete) {
986
+ throw new Error(
987
+ "At least one operation (add, update, delete) must be provided",
988
+ );
997
989
  }
998
990
 
999
- // Pass through to API
991
+ // Pass through to API with new structure
1000
992
  return makeApiCall("update-memory", {
1001
993
  space_id: args.space_id,
1002
- context: args.context,
1003
- tasks: args.tasks,
994
+ add: args.add,
995
+ update: args.update,
996
+ delete: args.delete,
1004
997
  });
1005
998
  }
1006
999
 
@@ -1050,9 +1043,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request: any) => {
1050
1043
  case "fetch":
1051
1044
  result = await handleFetch(args);
1052
1045
  break;
1053
- case "get_entities":
1054
- result = await handleGetEntities(args);
1055
- break;
1046
+ // DISABLED: get_entities handler - not useful in current form
1047
+ // case "get_entities":
1048
+ // result = await handleGetEntities(args);
1049
+ // break;
1056
1050
  case "delete_memory":
1057
1051
  result = await handleDeleteMemory(args);
1058
1052
  break;
package/package.json CHANGED
@@ -1,52 +1,51 @@
1
1
  {
2
- "name": "@intangle/mcp-server",
3
- "version": "1.1.4",
4
- "description": "Model Context Protocol server for Intangle - AI memory that persists across conversations",
5
- "main": "dist/index.js",
6
- "type": "module",
7
- "scripts": {
8
- "start": "node dist/index.js",
9
- "dev": "tsx watch index.ts",
10
- "build": "tsc",
11
- "lint": "biome check .",
12
- "lint:fix": "biome check --fix .",
13
- "prepublishOnly": "npm run build"
14
- },
15
- "bin": {
16
- "intangle-mcp": "dist/index.js"
17
- },
18
- "keywords": [
19
- "mcp",
20
- "model-context-protocol",
21
- "claude",
22
- "claude-code",
23
- "ai",
24
- "memory",
25
- "knowledge-management",
26
- "intangle",
27
- "claude-desktop",
28
- "anthropic"
29
- ],
30
- "author": "Intangle",
31
- "license": "MIT",
32
- "repository": {
33
- "type": "git",
34
- "url": "git+https://github.com/intangle/mcp-server.git"
35
- },
36
- "homepage": "https://intangle.app",
37
- "engines": {
38
- "node": ">=18.0.0"
39
- },
40
- "dependencies": {
41
- "@modelcontextprotocol/sdk": "^1.0.0",
42
- "dotenv": "^17.2.0",
43
- "node-fetch": "^3.3.2"
44
- },
45
- "devDependencies": {
46
- "@biomejs/biome": "^1.9.4",
47
- "@types/node": "^22.0.0",
48
- "@types/node-fetch": "^2.6.12",
49
- "tsx": "^4.0.0",
50
- "typescript": "^5.0.0"
51
- }
52
- }
2
+ "name": "@intangle/mcp-server",
3
+ "version": "1.1.6",
4
+ "description": "Model Context Protocol server for Intangle - AI memory that persists across conversations",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "bin": {
8
+ "intangle-mcp": "dist/index.js"
9
+ },
10
+ "keywords": [
11
+ "mcp",
12
+ "model-context-protocol",
13
+ "claude",
14
+ "claude-code",
15
+ "ai",
16
+ "memory",
17
+ "knowledge-management",
18
+ "intangle",
19
+ "claude-desktop",
20
+ "anthropic"
21
+ ],
22
+ "author": "Intangle",
23
+ "license": "MIT",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/intangle/mcp-server.git"
27
+ },
28
+ "homepage": "https://intangle.app",
29
+ "engines": {
30
+ "node": ">=18.0.0"
31
+ },
32
+ "dependencies": {
33
+ "@modelcontextprotocol/sdk": "^1.0.0",
34
+ "dotenv": "^17.2.0",
35
+ "node-fetch": "^3.3.2"
36
+ },
37
+ "devDependencies": {
38
+ "@biomejs/biome": "^1.9.4",
39
+ "@types/node": "^22.0.0",
40
+ "@types/node-fetch": "^2.6.12",
41
+ "tsx": "^4.0.0",
42
+ "typescript": "^5.0.0"
43
+ },
44
+ "scripts": {
45
+ "start": "node dist/index.js",
46
+ "dev": "tsx watch index.ts",
47
+ "build": "tsc",
48
+ "lint": "biome check .",
49
+ "lint:fix": "biome check --fix ."
50
+ }
51
+ }