@intangle/mcp-server 2.6.6 → 2.6.7

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/.env.local CHANGED
@@ -1,3 +1,4 @@
1
- MCP_API_KEY=mcp_placeholder_key_will_be_replaced_by_user_specific_key
1
+ MCP_API_KEY=mcp_user_30H8yYW7mghw0Zb8aQLhT4AsyRq_9f26b9e53ea30765ee25d9745b670afb
2
2
  NEXT_APP_URL=https://intangle.app
3
3
  VERCEL_BYPASS_TOKEN=igXBygPO1T5dWLBaVyQiN9QB7IECZ50O
4
+ INTANGLE_REMOTE_MCP_TOKEN=mcp_user_30H8yYW7mghw0Zb8aQLhT4AsyRq_9f26b9e53ea30765ee25d9745b670afb
package/README.md CHANGED
@@ -17,7 +17,7 @@ Intangle is an AI context system that gives Claude and other AI assistants persi
17
17
  Claude code by running the command below (recommend "-s" user for global across projects):
18
18
 
19
19
  ```bash
20
- claude mcp add intangle -s user --env MCP_API_KEY=<your-api-key-here> --env NEXT_APP_URL=https://app.intangle.app -- npx -y @intangle/mcp-server
20
+ claude mcp add intangle -s user --env MCP_API_KEY=<your-api-key-here> --env NEXT_APP_URL=https://renvoi.co/intangle -- npx -y @intangle/mcp-server
21
21
  ```
22
22
 
23
23
  If your deployment is behind Vercel Deployment Protection (for example staging), add:
@@ -36,7 +36,7 @@ Standard MCP (Claude desktop, Cursor): by adding to your `claude_desktop_config.
36
36
  "args": ["@intangle/mcp-server"],
37
37
  "env": {
38
38
  "MCP_API_KEY": "your-api-key-here",
39
- "NEXT_APP_URL": "https://app.intangle.app",
39
+ "NEXT_APP_URL": "https://renvoi.co/intangle",
40
40
  "VERCEL_BYPASS_TOKEN": "optional-vercel-bypass-token-for-protected-deployments"
41
41
  }
42
42
  }
package/dist/index.js CHANGED
@@ -30,7 +30,7 @@ try {
30
30
  config({ quiet: true });
31
31
  config({ path: ".env.local", quiet: true });
32
32
  // Base URL for API calls to Next.js app
33
- const API_BASE_URL = process.env.NEXT_APP_URL || "https://app.intangle.app";
33
+ const API_BASE_URL = process.env.NEXT_APP_URL || "https://renvoi.co/intangle";
34
34
  const MCP_API_KEY = process.env.MCP_API_KEY;
35
35
  const VERCEL_BYPASS_TOKEN = process.env.VERCEL_BYPASS_TOKEN || process.env.VERCEL_PROTECTION_BYPASS;
36
36
  log(`CWD: ${process.cwd()}`);
@@ -158,7 +158,7 @@ try {
158
158
  if (contentType.includes("text/html") ||
159
159
  /^\s*<!DOCTYPE\s+html/i.test(responseBody) ||
160
160
  /^\s*<html\b/i.test(responseBody)) {
161
- throw new Error(`API call to ${buildApiUrl(endpoint)} returned HTML instead of JSON. Check NEXT_APP_URL and point it at the app host, e.g. https://app.intangle.app.`);
161
+ throw new Error(`API call to ${buildApiUrl(endpoint)} returned HTML instead of JSON. Check NEXT_APP_URL and point it at the app host, e.g. https://renvoi.co/intangle.`);
162
162
  }
163
163
  return JSON.parse(responseBody);
164
164
  }
@@ -39,7 +39,7 @@ const TOOL_DEFINITIONS = [
39
39
  {
40
40
  name: "fetch_items",
41
41
  title: "Fetch Items by ID",
42
- description: "Retrieve full content for specific items by ID, including `artifact_*` and `summary_*` ids. Artifact fetches return content plus render metadata and `config`/`state`/`data` when available.",
42
+ description: "Retrieve full content for specific items by ID, including `file_*`, `artifact_*`, and `summary_*` ids. File fetches return extracted content, file metadata, chunk metadata, and decrypted `data.source_data_url` when available; use this before asking Tan to reason over a specific uploaded contract/file in detail. Artifact fetches return content plus render metadata and `config`/`state`/`data` when available.",
43
43
  inputSchema: {
44
44
  type: "object",
45
45
  properties: {
@@ -49,12 +49,12 @@ const TOOL_DEFINITIONS = [
49
49
  },
50
50
  id: {
51
51
  type: "string",
52
- description: "Single ID to fetch (e.g. `mem_123`, `task_456`, `skill_789`, `doc_321`, `artifact_654`, or `summary_987`)."
52
+ description: "Single ID to fetch (e.g. `mem_123`, `task_456`, `skill_789`, `doc_321`, `file_654`, `artifact_654`, or `summary_987`)."
53
53
  },
54
54
  ids: {
55
55
  type: "array",
56
56
  items: { type: "string" },
57
- description: "Array of IDs to fetch (mix of context, task, skill, document, artifact, insight, or conversation IDs). Use this to fetch multiple items in one call."
57
+ description: "Array of IDs to fetch (mix of context, task, skill, document, file, artifact, insight, or conversation IDs). Use this to fetch multiple items in one call."
58
58
  }
59
59
  }
60
60
  }
@@ -751,7 +751,7 @@ const TOOL_DEFINITIONS = [
751
751
  {
752
752
  name: "message",
753
753
  title: "Message Assistant",
754
- description: "Primary way to use Intangle for memory, communicating and collaborating with Tan agent in a shared thread. Send a request and either wait for one assistant turn to complete or submit asynchronously for later polling. External agents should include a stable participant_id, participant_type=`agent`, and participant_label so Tan can identify who is speaking and keep progress updates attached to the right caller. Returns assistant text plus continuity IDs (`session_id`, `conversation_id`) so callers can continue the same thread reliably across turns.",
754
+ description: "Primary way to use Intangle for memory, communicating and collaborating with Tan agent in a shared thread. Send a request and either wait for one assistant turn to complete or submit asynchronously for later polling. External agents should include a stable participant_id, participant_type=`agent`, and participant_label so Tan can identify who is speaking and keep progress updates attached to the right caller. Conversations are backed by `summary_*` IDs; reuse the returned `conversation_id` and reuse the returned `session_id` so callers can continue the same thread reliably across turns. For shared coordination channels, pass a stable `channel_id` and keep reusing the same `conversation_id`; `channel_id` scopes context, while `conversation_id` is the durable thread anchor.",
755
755
  inputSchema: {
756
756
  type: "object",
757
757
  properties: {
@@ -773,16 +773,24 @@ const TOOL_DEFINITIONS = [
773
773
  },
774
774
  new_conversation: {
775
775
  type: "boolean",
776
- description: "Optional. When true, force a fresh conversation instead of reusing the current active thread."
776
+ description: "Optional escape hatch. When true, force a fresh conversation instead of reusing the current active thread."
777
777
  },
778
778
  session_id: {
779
779
  type: "string",
780
- description: "Optional runtime session ID to reuse across calls. Reuse the returned session_id for best continuity and lower warm-up overhead."
780
+ description: "Optional runtime session ID to reuse across calls. For follow-up turns, reuse the exact session_id returned by the previous call for best continuity and lower warm-up overhead."
781
781
  },
782
782
  project_id: {
783
783
  type: "string",
784
784
  description: "Optional project scope for the assistant turn."
785
785
  },
786
+ group_id: {
787
+ type: "string",
788
+ description: "Optional group scope for the assistant turn. Use this with channel_id for group-scoped coordination."
789
+ },
790
+ channel_id: {
791
+ type: "string",
792
+ description: "Optional route/channel scope for the assistant turn. Defaults to root when omitted. Examples: root, group|legal, project|work/launch."
793
+ },
786
794
  organization_id: {
787
795
  type: "string",
788
796
  description: "Optional Clerk org ID when the space belongs to an organization graph."
package/index.ts CHANGED
@@ -45,7 +45,7 @@ try {
45
45
  config({ path: ".env.local", quiet: true })
46
46
 
47
47
  // Base URL for API calls to Next.js app
48
- const API_BASE_URL = process.env.NEXT_APP_URL || "https://app.intangle.app"
48
+ const API_BASE_URL = process.env.NEXT_APP_URL || "https://renvoi.co/intangle"
49
49
  const MCP_API_KEY = process.env.MCP_API_KEY
50
50
  const VERCEL_BYPASS_TOKEN =
51
51
  process.env.VERCEL_BYPASS_TOKEN || process.env.VERCEL_PROTECTION_BYPASS
@@ -215,7 +215,7 @@ try {
215
215
  /^\s*<html\b/i.test(responseBody)
216
216
  ) {
217
217
  throw new Error(
218
- `API call to ${buildApiUrl(endpoint)} returned HTML instead of JSON. Check NEXT_APP_URL and point it at the app host, e.g. https://app.intangle.app.`
218
+ `API call to ${buildApiUrl(endpoint)} returned HTML instead of JSON. Check NEXT_APP_URL and point it at the app host, e.g. https://renvoi.co/intangle.`
219
219
  )
220
220
  }
221
221
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intangle/mcp-server",
3
- "version": "2.6.6",
3
+ "version": "2.6.7",
4
4
  "description": "Model Context Protocol server for Intangle - AI context that persists across conversations",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -46,7 +46,7 @@ const TOOL_DEFINITIONS = [
46
46
  name: "fetch_items",
47
47
  title: "Fetch Items by ID",
48
48
  description:
49
- "Retrieve full content for specific items by ID, including `artifact_*` and `summary_*` ids. Artifact fetches return content plus render metadata and `config`/`state`/`data` when available.",
49
+ "Retrieve full content for specific items by ID, including `file_*`, `artifact_*`, and `summary_*` ids. File fetches return extracted content, file metadata, chunk metadata, and decrypted `data.source_data_url` when available; use this before asking Tan to reason over a specific uploaded contract/file in detail. Artifact fetches return content plus render metadata and `config`/`state`/`data` when available.",
50
50
  inputSchema: {
51
51
  type: "object",
52
52
  properties: {
@@ -58,13 +58,13 @@ const TOOL_DEFINITIONS = [
58
58
  id: {
59
59
  type: "string",
60
60
  description:
61
- "Single ID to fetch (e.g. `mem_123`, `task_456`, `skill_789`, `doc_321`, `artifact_654`, or `summary_987`)."
61
+ "Single ID to fetch (e.g. `mem_123`, `task_456`, `skill_789`, `doc_321`, `file_654`, `artifact_654`, or `summary_987`)."
62
62
  },
63
63
  ids: {
64
64
  type: "array",
65
65
  items: { type: "string" },
66
66
  description:
67
- "Array of IDs to fetch (mix of context, task, skill, document, artifact, insight, or conversation IDs). Use this to fetch multiple items in one call."
67
+ "Array of IDs to fetch (mix of context, task, skill, document, file, artifact, insight, or conversation IDs). Use this to fetch multiple items in one call."
68
68
  }
69
69
  }
70
70
  }
@@ -840,7 +840,7 @@ const TOOL_DEFINITIONS = [
840
840
  name: "message",
841
841
  title: "Message Assistant",
842
842
  description:
843
- "Primary way to use Intangle for memory, communicating and collaborating with Tan agent in a shared thread. Send a request and either wait for one assistant turn to complete or submit asynchronously for later polling. External agents should include a stable participant_id, participant_type=`agent`, and participant_label so Tan can identify who is speaking and keep progress updates attached to the right caller. Returns assistant text plus continuity IDs (`session_id`, `conversation_id`) so callers can continue the same thread reliably across turns.",
843
+ "Primary way to use Intangle for memory, communicating and collaborating with Tan agent in a shared thread. Send a request and either wait for one assistant turn to complete or submit asynchronously for later polling. External agents should include a stable participant_id, participant_type=`agent`, and participant_label so Tan can identify who is speaking and keep progress updates attached to the right caller. Conversations are backed by `summary_*` IDs; reuse the returned `conversation_id` and reuse the returned `session_id` so callers can continue the same thread reliably across turns. For shared coordination channels, pass a stable `channel_id` and keep reusing the same `conversation_id`; `channel_id` scopes context, while `conversation_id` is the durable thread anchor.",
844
844
  inputSchema: {
845
845
  type: "object",
846
846
  properties: {
@@ -865,17 +865,27 @@ const TOOL_DEFINITIONS = [
865
865
  new_conversation: {
866
866
  type: "boolean",
867
867
  description:
868
- "Optional. When true, force a fresh conversation instead of reusing the current active thread."
868
+ "Optional escape hatch. When true, force a fresh conversation instead of reusing the current active thread."
869
869
  },
870
870
  session_id: {
871
871
  type: "string",
872
872
  description:
873
- "Optional runtime session ID to reuse across calls. Reuse the returned session_id for best continuity and lower warm-up overhead."
873
+ "Optional runtime session ID to reuse across calls. For follow-up turns, reuse the exact session_id returned by the previous call for best continuity and lower warm-up overhead."
874
874
  },
875
875
  project_id: {
876
876
  type: "string",
877
877
  description: "Optional project scope for the assistant turn."
878
878
  },
879
+ group_id: {
880
+ type: "string",
881
+ description:
882
+ "Optional group scope for the assistant turn. Use this with channel_id for group-scoped coordination."
883
+ },
884
+ channel_id: {
885
+ type: "string",
886
+ description:
887
+ "Optional route/channel scope for the assistant turn. Defaults to root when omitted. Examples: root, group|legal, project|work/launch."
888
+ },
879
889
  organization_id: {
880
890
  type: "string",
881
891
  description: