@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 +2 -1
- package/README.md +2 -2
- package/dist/index.js +2 -2
- package/dist/tool-definitions.js +14 -6
- package/index.ts +2 -2
- package/package.json +1 -1
- package/tool-definitions.ts +16 -6
package/.env.local
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
MCP_API_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://
|
|
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://
|
|
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://
|
|
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://
|
|
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
|
}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -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_
|
|
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.
|
|
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.
|
|
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://
|
|
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://
|
|
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
package/tool-definitions.ts
CHANGED
|
@@ -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_
|
|
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.
|
|
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.
|
|
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:
|