@intangle/mcp-server 2.5.2 → 2.5.4

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
@@ -97,7 +97,6 @@ try {
97
97
  function buildApiUrl(endpoint) {
98
98
  const url = new URL(`/api/mcp/${endpoint}`, API_BASE_URL);
99
99
  if (VERCEL_BYPASS_TOKEN) {
100
- url.searchParams.set("x-vercel-set-bypass-cookie", "true");
101
100
  url.searchParams.set("x-vercel-protection-bypass", VERCEL_BYPASS_TOKEN);
102
101
  }
103
102
  return url.toString();
@@ -252,18 +251,15 @@ try {
252
251
  });
253
252
  }
254
253
  async function handleMessage(args) {
255
- if (!args.type || !args.content) {
256
- throw new Error("type and content are required");
254
+ if (!args.space_id || !args.content) {
255
+ throw new Error("space_id and content are required");
257
256
  }
258
- // Inject session_id from environment variable
259
- const sessionId = process.env.INTANGLE_SESSION_ID;
260
- if (!sessionId) {
261
- throw new Error("INTANGLE_SESSION_ID environment variable is required for the message tool");
262
- }
263
- return makeApiCall("message", {
264
- ...args,
265
- session_id: sessionId,
266
- });
257
+ const timeoutMs = typeof args.timeout_ms === "number" && Number.isFinite(args.timeout_ms)
258
+ ? Math.max(10_000, Math.min(300_000, Math.trunc(args.timeout_ms)))
259
+ : undefined;
260
+ // Give backend a little extra headroom beyond requested assistant timeout.
261
+ const requestTimeout = timeoutMs ? timeoutMs + 10_000 : undefined;
262
+ return makeApiCall("message", args, requestTimeout);
267
263
  }
268
264
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
269
265
  const { name, arguments: args } = request.params;
@@ -311,40 +311,49 @@ export const TOOLS = [
311
311
  },
312
312
  {
313
313
  name: "message",
314
- title: "Send Message",
315
- description: "Send a message to the Intangle assistant for user interaction. Use type 'approval' to request approval (blocks until user responds), 'question' to ask the user a question (blocks until answered), 'notification' for informational updates (returns immediately), 'completion' to signal task completion (returns immediately), or 'error' to report errors (returns immediately).",
314
+ title: "Message Assistant",
315
+ description: "Send a user message to the Intangle assistant and wait for one assistant turn to complete. Returns assistant text, stop reason, session_id, and conversation_id for continuity.",
316
316
  inputSchema: {
317
317
  type: "object",
318
318
  properties: {
319
- type: {
319
+ space_id: {
320
320
  type: "string",
321
- enum: ["approval", "question", "notification", "completion", "error"],
322
- description: "Message type. 'approval' and 'question' block until the user responds. 'notification', 'completion', and 'error' return immediately."
321
+ description: "Space to run the assistant turn in (use view_spaces first)."
323
322
  },
324
323
  content: {
325
324
  type: "string",
326
- description: "The message content to display to the user"
325
+ description: "User message content to send to the assistant."
327
326
  },
328
- metadata: {
329
- type: "object",
330
- description: "Optional context about the message",
331
- properties: {
332
- file: {
333
- type: "string",
334
- description: "Related file path"
335
- },
336
- action: {
337
- type: "string",
338
- description: "Action being performed"
339
- },
340
- details: {
341
- type: "string",
342
- description: "Additional details"
343
- }
344
- }
327
+ provider: {
328
+ type: "string",
329
+ description: "Optional provider alias (defaults to 'tan')."
330
+ },
331
+ conversation_id: {
332
+ type: "string",
333
+ description: "Optional existing conversation/chat summary ID to resume continuity."
334
+ },
335
+ session_id: {
336
+ type: "string",
337
+ description: "Optional runtime session ID to reuse across multiple message calls."
338
+ },
339
+ project_id: {
340
+ type: "string",
341
+ description: "Optional project scope for the assistant turn."
342
+ },
343
+ organization_id: {
344
+ type: "string",
345
+ description: "Optional Clerk org ID when the space belongs to an organization graph."
346
+ },
347
+ timeout_ms: {
348
+ type: "integer",
349
+ description: "Optional timeout in milliseconds (10,000 to 300,000; default 120,000)."
350
+ },
351
+ timezone: {
352
+ type: "string",
353
+ description: "Optional IANA timezone for assistant context."
345
354
  }
346
355
  },
347
- required: ["type", "content"]
356
+ required: ["space_id", "content"]
348
357
  }
349
358
  },
350
359
  // DISABLED: memory_action tool is broken and causing errors.
package/index.ts CHANGED
@@ -128,7 +128,6 @@ try {
128
128
  const url = new URL(`/api/mcp/${endpoint}`, API_BASE_URL)
129
129
 
130
130
  if (VERCEL_BYPASS_TOKEN) {
131
- url.searchParams.set("x-vercel-set-bypass-cookie", "true")
132
131
  url.searchParams.set("x-vercel-protection-bypass", VERCEL_BYPASS_TOKEN)
133
132
  }
134
133
 
@@ -338,22 +337,19 @@ try {
338
337
  }
339
338
 
340
339
  async function handleMessage(args: any) {
341
- if (!args.type || !args.content) {
342
- throw new Error("type and content are required")
340
+ if (!args.space_id || !args.content) {
341
+ throw new Error("space_id and content are required")
343
342
  }
344
343
 
345
- // Inject session_id from environment variable
346
- const sessionId = process.env.INTANGLE_SESSION_ID
347
- if (!sessionId) {
348
- throw new Error(
349
- "INTANGLE_SESSION_ID environment variable is required for the message tool"
350
- )
351
- }
344
+ const timeoutMs =
345
+ typeof args.timeout_ms === "number" && Number.isFinite(args.timeout_ms)
346
+ ? Math.max(10_000, Math.min(300_000, Math.trunc(args.timeout_ms)))
347
+ : undefined
352
348
 
353
- return makeApiCall("message", {
354
- ...args,
355
- session_id: sessionId,
356
- })
349
+ // Give backend a little extra headroom beyond requested assistant timeout.
350
+ const requestTimeout = timeoutMs ? timeoutMs + 10_000 : undefined
351
+
352
+ return makeApiCall("message", args, requestTimeout)
357
353
  }
358
354
 
359
355
  server.setRequestHandler(CallToolRequestSchema, async (request: any) => {
package/package.json CHANGED
@@ -1,53 +1,53 @@
1
1
  {
2
- "name": "@intangle/mcp-server",
3
- "version": "2.5.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
- }
2
+ "name": "@intangle/mcp-server",
3
+ "version": "2.5.4",
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
  }
@@ -344,42 +344,55 @@ export const TOOLS = [
344
344
  },
345
345
  {
346
346
  name: "message",
347
- title: "Send Message",
347
+ title: "Message Assistant",
348
348
  description:
349
- "Send a message to the Intangle assistant for user interaction. Use type 'approval' to request approval (blocks until user responds), 'question' to ask the user a question (blocks until answered), 'notification' for informational updates (returns immediately), 'completion' to signal task completion (returns immediately), or 'error' to report errors (returns immediately).",
349
+ "Send a user message to the Intangle assistant and wait for one assistant turn to complete. Returns assistant text, stop reason, session_id, and conversation_id for continuity.",
350
350
  inputSchema: {
351
351
  type: "object",
352
352
  properties: {
353
- type: {
353
+ space_id: {
354
354
  type: "string",
355
- enum: ["approval", "question", "notification", "completion", "error"],
356
355
  description:
357
- "Message type. 'approval' and 'question' block until the user responds. 'notification', 'completion', and 'error' return immediately."
356
+ "Space to run the assistant turn in (use view_spaces first)."
358
357
  },
359
358
  content: {
360
359
  type: "string",
361
- description: "The message content to display to the user"
360
+ description: "User message content to send to the assistant."
362
361
  },
363
- metadata: {
364
- type: "object",
365
- description: "Optional context about the message",
366
- properties: {
367
- file: {
368
- type: "string",
369
- description: "Related file path"
370
- },
371
- action: {
372
- type: "string",
373
- description: "Action being performed"
374
- },
375
- details: {
376
- type: "string",
377
- description: "Additional details"
378
- }
379
- }
362
+ provider: {
363
+ type: "string",
364
+ description: "Optional provider alias (defaults to 'tan')."
365
+ },
366
+ conversation_id: {
367
+ type: "string",
368
+ description:
369
+ "Optional existing conversation/chat summary ID to resume continuity."
370
+ },
371
+ session_id: {
372
+ type: "string",
373
+ description:
374
+ "Optional runtime session ID to reuse across multiple message calls."
375
+ },
376
+ project_id: {
377
+ type: "string",
378
+ description: "Optional project scope for the assistant turn."
379
+ },
380
+ organization_id: {
381
+ type: "string",
382
+ description:
383
+ "Optional Clerk org ID when the space belongs to an organization graph."
384
+ },
385
+ timeout_ms: {
386
+ type: "integer",
387
+ description:
388
+ "Optional timeout in milliseconds (10,000 to 300,000; default 120,000)."
389
+ },
390
+ timezone: {
391
+ type: "string",
392
+ description: "Optional IANA timezone for assistant context."
380
393
  }
381
394
  },
382
- required: ["type", "content"]
395
+ required: ["space_id", "content"]
383
396
  }
384
397
  },
385
398
  // DISABLED: memory_action tool is broken and causing errors.