@intangle/mcp-server 2.3.0 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -183,8 +183,8 @@ try {
183
183
  if (!args.space_id) {
184
184
  throw new Error("space_id is required. Use view_spaces to see available options.");
185
185
  }
186
- if (!args.add && !args.update && !args.delete) {
187
- throw new Error("At least one operation (add, update, delete) must be provided");
186
+ if (!args.add && !args.update && !args.delete && !args.link && !args.unlink) {
187
+ throw new Error("At least one operation must be provided");
188
188
  }
189
189
  // Pass through to API with new structure
190
190
  return makeApiCall("update-memory", {
@@ -192,6 +192,8 @@ try {
192
192
  add: args.add,
193
193
  update: args.update,
194
194
  delete: args.delete,
195
+ link: args.link,
196
+ unlink: args.unlink,
195
197
  });
196
198
  }
197
199
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
@@ -3,7 +3,7 @@ export const TOOLS = [
3
3
  {
4
4
  name: "search",
5
5
  title: "Search Space",
6
- description: "Search for context, tasks, processes, 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.",
6
+ description: "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.",
7
7
  inputSchema: {
8
8
  type: "object",
9
9
  properties: {
@@ -33,12 +33,12 @@ 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 'proc_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 process IDs). Use this to fetch multiple items in one call.",
41
+ description: "Array of IDs to fetch (mix of context, task, and skill IDs). Use this to fetch multiple items in one call.",
42
42
  },
43
43
  },
44
44
  },
@@ -46,7 +46,7 @@ export const TOOLS = [
46
46
  {
47
47
  name: "view_projects",
48
48
  title: "View Projects",
49
- description: "List all projects in a space. Projects are user-created canvases that organize context, tasks, documents, and processes. Use this to discover available projects before viewing their contents.",
49
+ description: "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.",
50
50
  inputSchema: {
51
51
  type: "object",
52
52
  properties: {
@@ -61,7 +61,7 @@ export const TOOLS = [
61
61
  {
62
62
  name: "view_project",
63
63
  title: "View Project",
64
- description: "View a specific project with all its items (context, tasks, documents, processes). Returns item metadata (IDs, titles, types, status) for each item in the project. Use fetch_items to get full content of specific items.",
64
+ description: "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.",
65
65
  inputSchema: {
66
66
  type: "object",
67
67
  properties: {
@@ -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 process (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",
178
178
  },
179
179
  subtasks: {
180
180
  type: "array",
@@ -191,20 +191,20 @@ export const TOOLS = [
191
191
  },
192
192
  required: ["title", "content"],
193
193
  },
194
- description: "Array of items to add. System intelligently: (1) classifies as task, context, or process, (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.",
194
+ 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.",
195
195
  },
196
196
  },
197
197
  },
198
198
  update: {
199
199
  type: "object",
200
- description: "Update existing items (context, tasks, or processes) - system detects type from ID prefix",
200
+ description: "Update existing items (context, tasks, or skills) - system detects type from ID prefix",
201
201
  properties: {
202
202
  items: {
203
203
  type: "array",
204
204
  items: {
205
205
  type: "object",
206
206
  properties: {
207
- id: { type: "string", description: "Item ID to update (mem_* for context, task_* for tasks, proc_* for processes)" },
207
+ id: { type: "string", description: "Item ID to update (mem_* for context, task_* for tasks, skill_* for skills)" },
208
208
  title: {
209
209
  type: "string",
210
210
  description: "New title (optional)",
@@ -236,7 +236,7 @@ export const TOOLS = [
236
236
  },
237
237
  required: ["id"],
238
238
  },
239
- description: "Array of items to update. Type automatically detected from ID prefix (mem_* = context, task_* = task, proc_* = process). For context/process items, status/priority are ignored.",
239
+ description: "Array of items to update. Type automatically detected from ID prefix (mem_* = context, task_* = task, skill_* = skill). For context/skill items, status/priority are ignored.",
240
240
  },
241
241
  },
242
242
  },
@@ -247,7 +247,7 @@ export const TOOLS = [
247
247
  item_ids: {
248
248
  type: "array",
249
249
  items: { type: "string" },
250
- description: "Array of item IDs to delete (mem_* for context, task_* for tasks, proc_* for processes). Type automatically detected from ID prefix.",
250
+ description: "Array of item IDs to delete (mem_* for context, task_* for tasks, skill_* for skills). Type automatically detected from ID prefix.",
251
251
  },
252
252
  },
253
253
  },
@@ -255,4 +255,23 @@ export const TOOLS = [
255
255
  required: ["space_id"],
256
256
  },
257
257
  },
258
+ {
259
+ name: "memory_action",
260
+ title: "Memory Action (OHM Protocol)",
261
+ description: "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.",
262
+ inputSchema: {
263
+ type: "object",
264
+ properties: {
265
+ space_id: {
266
+ type: "string",
267
+ description: "The space to operate in",
268
+ },
269
+ intent: {
270
+ type: "string",
271
+ 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')",
272
+ },
273
+ },
274
+ required: ["space_id", "intent"],
275
+ },
276
+ },
258
277
  ];
package/index.ts CHANGED
@@ -253,9 +253,9 @@ try {
253
253
  )
254
254
  }
255
255
 
256
- if (!args.add && !args.update && !args.delete) {
256
+ if (!args.add && !args.update && !args.delete && !args.link && !args.unlink) {
257
257
  throw new Error(
258
- "At least one operation (add, update, delete) must be provided"
258
+ "At least one operation must be provided"
259
259
  )
260
260
  }
261
261
 
@@ -265,6 +265,8 @@ try {
265
265
  add: args.add,
266
266
  update: args.update,
267
267
  delete: args.delete,
268
+ link: args.link,
269
+ unlink: args.unlink,
268
270
  })
269
271
  }
270
272
 
package/package.json CHANGED
@@ -1,53 +1,53 @@
1
1
  {
2
- "name": "@intangle/mcp-server",
3
- "version": "2.3.0",
4
- "description": "Model Context Protocol server for Intangle - AI context 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
- "prebuild": "cp ../web/src/app/api/mcp-remote/tool-definitions.ts ./tool-definitions.ts",
11
- "build": "tsc",
12
- "lint": "biome check .",
13
- "lint:fix": "biome check --fix .",
14
- "prepublishOnly": "npm run build"
15
- },
16
- "bin": {
17
- "intangle-mcp": "dist/index.js"
18
- },
19
- "keywords": [
20
- "mcp",
21
- "model-context-protocol",
22
- "claude",
23
- "claude-code",
24
- "ai",
25
- "context",
26
- "knowledge-management",
27
- "intangle",
28
- "claude-desktop",
29
- "anthropic"
30
- ],
31
- "author": "Intangle",
32
- "license": "MIT",
33
- "repository": {
34
- "type": "git",
35
- "url": "git+https://github.com/intangle/mcp-server.git"
36
- },
37
- "homepage": "https://intangle.app",
38
- "engines": {
39
- "node": ">=18.0.0"
40
- },
41
- "dependencies": {
42
- "@modelcontextprotocol/sdk": "^1.0.0",
43
- "dotenv": "^17.2.0",
44
- "node-fetch": "^3.3.2"
45
- },
46
- "devDependencies": {
47
- "@biomejs/biome": "^1.9.4",
48
- "@types/node": "^22.0.0",
49
- "@types/node-fetch": "^2.6.12",
50
- "tsx": "^4.0.0",
51
- "typescript": "^5.0.0"
52
- }
2
+ "name": "@intangle/mcp-server",
3
+ "version": "2.3.2",
4
+ "description": "Model Context Protocol server for Intangle - AI context 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
+ "prebuild": "cp ../web/src/app/api/mcp-remote/tool-definitions.ts ./tool-definitions.ts",
11
+ "build": "tsc",
12
+ "lint": "biome check .",
13
+ "lint:fix": "biome check --fix .",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "bin": {
17
+ "intangle-mcp": "dist/index.js"
18
+ },
19
+ "keywords": [
20
+ "mcp",
21
+ "model-context-protocol",
22
+ "claude",
23
+ "claude-code",
24
+ "ai",
25
+ "context",
26
+ "knowledge-management",
27
+ "intangle",
28
+ "claude-desktop",
29
+ "anthropic"
30
+ ],
31
+ "author": "Intangle",
32
+ "license": "MIT",
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/intangle/mcp-server.git"
36
+ },
37
+ "homepage": "https://intangle.app",
38
+ "engines": {
39
+ "node": ">=18.0.0"
40
+ },
41
+ "dependencies": {
42
+ "@modelcontextprotocol/sdk": "^1.0.0",
43
+ "dotenv": "^17.2.0",
44
+ "node-fetch": "^3.3.2"
45
+ },
46
+ "devDependencies": {
47
+ "@biomejs/biome": "^1.9.4",
48
+ "@types/node": "^22.0.0",
49
+ "@types/node-fetch": "^2.6.12",
50
+ "tsx": "^4.0.0",
51
+ "typescript": "^5.0.0"
52
+ }
53
53
  }
@@ -4,7 +4,7 @@ export const TOOLS = [
4
4
  name: "search",
5
5
  title: "Search Space",
6
6
  description:
7
- "Search for context, tasks, processes, 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.",
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
8
  inputSchema: {
9
9
  type: "object",
10
10
  properties: {
@@ -37,13 +37,13 @@ export const TOOLS = [
37
37
  id: {
38
38
  type: "string",
39
39
  description:
40
- "Single ID to fetch (context or task ID like 'mem_123' or 'task_456' or 'proc_789')",
40
+ "Single ID to fetch (context or task ID like 'mem_123' or 'task_456' or 'skill_789')",
41
41
  },
42
42
  ids: {
43
43
  type: "array",
44
44
  items: { type: "string" },
45
45
  description:
46
- "Array of IDs to fetch (mix of context, task, and process IDs). Use this to fetch multiple items in one call.",
46
+ "Array of IDs to fetch (mix of context, task, and skill IDs). Use this to fetch multiple items in one call.",
47
47
  },
48
48
  },
49
49
  },
@@ -52,7 +52,7 @@ export const TOOLS = [
52
52
  name: "view_projects",
53
53
  title: "View Projects",
54
54
  description:
55
- "List all projects in a space. Projects are user-created canvases that organize context, tasks, documents, and processes. Use this to discover available projects before viewing their contents.",
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
56
  inputSchema: {
57
57
  type: "object",
58
58
  properties: {
@@ -69,7 +69,7 @@ export const TOOLS = [
69
69
  name: "view_project",
70
70
  title: "View Project",
71
71
  description:
72
- "View a specific project with all its items (context, tasks, documents, processes). Returns item metadata (IDs, titles, types, status) for each item in the project. Use fetch_items to get full content of specific items.",
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
73
  inputSchema: {
74
74
  type: "object",
75
75
  properties: {
@@ -195,7 +195,7 @@ export const TOOLS = [
195
195
  title: { type: "string", description: "Item title" },
196
196
  content: {
197
197
  type: "string",
198
- description: "Item content - system automatically classifies as task (actionable), context (knowledge), or process (workflow/procedure) and suggests relevant topics",
198
+ description: "Item content - system automatically classifies as task (actionable), context (knowledge), or skill (workflow/procedure) and suggests relevant topics",
199
199
  },
200
200
  subtasks: {
201
201
  type: "array",
@@ -212,20 +212,20 @@ export const TOOLS = [
212
212
  },
213
213
  required: ["title", "content"],
214
214
  },
215
- description: "Array of items to add. System intelligently: (1) classifies as task, context, or process, (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.",
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
216
  },
217
217
  },
218
218
  },
219
219
  update: {
220
220
  type: "object",
221
- description: "Update existing items (context, tasks, or processes) - system detects type from ID prefix",
221
+ description: "Update existing items (context, tasks, or skills) - system detects type from ID prefix",
222
222
  properties: {
223
223
  items: {
224
224
  type: "array",
225
225
  items: {
226
226
  type: "object",
227
227
  properties: {
228
- id: { type: "string", description: "Item ID to update (mem_* for context, task_* for tasks, proc_* for processes)" },
228
+ id: { type: "string", description: "Item ID to update (mem_* for context, task_* for tasks, skill_* for skills)" },
229
229
  title: {
230
230
  type: "string",
231
231
  description: "New title (optional)",
@@ -257,7 +257,7 @@ export const TOOLS = [
257
257
  },
258
258
  required: ["id"],
259
259
  },
260
- description: "Array of items to update. Type automatically detected from ID prefix (mem_* = context, task_* = task, proc_* = process). For context/process items, status/priority are ignored.",
260
+ description: "Array of items to update. Type automatically detected from ID prefix (mem_* = context, task_* = task, skill_* = skill). For context/skill items, status/priority are ignored.",
261
261
  },
262
262
  },
263
263
  },
@@ -268,7 +268,7 @@ export const TOOLS = [
268
268
  item_ids: {
269
269
  type: "array",
270
270
  items: { type: "string" },
271
- description: "Array of item IDs to delete (mem_* for context, task_* for tasks, proc_* for processes). Type automatically detected from ID prefix.",
271
+ description: "Array of item IDs to delete (mem_* for context, task_* for tasks, skill_* for skills). Type automatically detected from ID prefix.",
272
272
  },
273
273
  },
274
274
  },
@@ -276,4 +276,25 @@ export const TOOLS = [
276
276
  required: ["space_id"],
277
277
  },
278
278
  },
279
+ {
280
+ name: "memory_action",
281
+ title: "Memory Action (OHM Protocol)",
282
+ description:
283
+ "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.",
284
+ inputSchema: {
285
+ type: "object",
286
+ properties: {
287
+ space_id: {
288
+ type: "string",
289
+ description: "The space to operate in",
290
+ },
291
+ intent: {
292
+ type: "string",
293
+ description:
294
+ "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')",
295
+ },
296
+ },
297
+ required: ["space_id", "intent"],
298
+ },
299
+ },
279
300
  ];