@intangle/mcp-server 2.6.7 → 2.6.9
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/README.md +4 -4
- package/dist/index.js +4 -10
- package/dist/tool-definitions.js +16 -26
- package/package.json +9 -3
- package/.env.local +0 -4
- package/biome.json +0 -39
- package/index.ts +0 -813
- package/tool-definitions.ts +0 -990
- package/tsconfig.json +0 -18
package/README.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# @intangle/mcp-server
|
|
2
2
|
|
|
3
|
-
Model Context Protocol server for [Intangle](https://intangle
|
|
3
|
+
Model Context Protocol server for [Intangle](https://renvoi.co/intangle) - Intelligent AI context that persists across conversations.
|
|
4
4
|
|
|
5
5
|
## What is Intangle?
|
|
6
6
|
|
|
7
7
|
Intangle is an AI context system that gives Claude and other AI assistants persistent, searchable context across all your conversations and isolated spaces. Unlike traditional chat interfaces where context is lost between sessions, Intangle maintains your personal context across isolated spaces, with intelligent storing and retrieval.
|
|
8
8
|
|
|
9
|
-
**Important: You need an Intangle account to use this MCP server. Sign up at [intangle
|
|
9
|
+
**Important: You need an Intangle account to use this MCP server. Sign up at [renvoi.co/intangle](https://renvoi.co/intangle)**
|
|
10
10
|
|
|
11
11
|
## Setup
|
|
12
12
|
|
|
13
|
-
1. **Create an Intangle account** at [intangle
|
|
13
|
+
1. **Create an Intangle account** at [renvoi.co/intangle](https://renvoi.co/intangle) and get your API key from Settings → Connect
|
|
14
14
|
|
|
15
15
|
2. **Configure Provider Access **
|
|
16
16
|
|
|
@@ -92,7 +92,7 @@ If Claude can't access your context:
|
|
|
92
92
|
|
|
93
93
|
## Support
|
|
94
94
|
|
|
95
|
-
- Website: [intangle
|
|
95
|
+
- Website: [renvoi.co/intangle](https://renvoi.co/intangle)
|
|
96
96
|
- Issues: [github.com/intangle/mcp-server/issues](https://github.com/intangle/mcp-server/issues)
|
|
97
97
|
- Email: hello@intangle.app
|
|
98
98
|
|
package/dist/index.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Intangle MCP Server - Exposes Intangle context functionality through MCP
|
|
4
4
|
*/
|
|
5
|
-
import { readFileSync } from "fs";
|
|
6
|
-
import { dirname, join } from "path";
|
|
7
|
-
import { fileURLToPath } from "url";
|
|
5
|
+
import { appendFileSync, readFileSync } from "node:fs";
|
|
6
|
+
import { dirname, join } from "node:path";
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
8
8
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
9
9
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
10
|
import { CallToolRequestSchema, ErrorCode, ListResourceTemplatesRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, McpError, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
@@ -13,7 +13,6 @@ import fetch from "node-fetch";
|
|
|
13
13
|
import { TOOLS } from "./tool-definitions.js";
|
|
14
14
|
// ... imports ...
|
|
15
15
|
// Debug logging
|
|
16
|
-
import { appendFileSync } from "fs";
|
|
17
16
|
const DEBUG_LOG = "/tmp/intangle-mcp-debug.log";
|
|
18
17
|
function log(msg) {
|
|
19
18
|
try {
|
|
@@ -399,10 +398,6 @@ try {
|
|
|
399
398
|
const { space_id } = args;
|
|
400
399
|
return makeApiCall("view-space", args);
|
|
401
400
|
}
|
|
402
|
-
async function handleStart(args) {
|
|
403
|
-
const { space_id } = args;
|
|
404
|
-
return makeApiCall("start", args);
|
|
405
|
-
}
|
|
406
401
|
async function handleUpdateSpace(args) {
|
|
407
402
|
if (!args.space_id) {
|
|
408
403
|
throw new Error("space_id is required. Use view_spaces to see available options.");
|
|
@@ -529,8 +524,7 @@ try {
|
|
|
529
524
|
result = await handleViewSpace(args);
|
|
530
525
|
break;
|
|
531
526
|
case "start":
|
|
532
|
-
|
|
533
|
-
break;
|
|
527
|
+
throw new McpError(ErrorCode.InvalidRequest, "The start tool is disabled because its curated briefing can be stale or misleading. Use view_spaces, view_space, search, fetch_items, message, and update_memory instead.");
|
|
534
528
|
case "update_memory":
|
|
535
529
|
case "update_space":
|
|
536
530
|
result = await handleUpdateSpace(args);
|
package/dist/tool-definitions.js
CHANGED
|
@@ -426,21 +426,6 @@ const TOOL_DEFINITIONS = [
|
|
|
426
426
|
required: ["space_id", "project_id"]
|
|
427
427
|
}
|
|
428
428
|
},
|
|
429
|
-
{
|
|
430
|
-
name: "start",
|
|
431
|
-
title: "Start Space Session",
|
|
432
|
-
description: "Load a space fast for a new external caller. Returns assistant-curated current items, useful insights, skills, recent conversations, and assistant preferences so the caller can get oriented quickly and fetch deeper details only when needed. Use this before asking Tan to do work in that space.",
|
|
433
|
-
inputSchema: {
|
|
434
|
-
type: "object",
|
|
435
|
-
properties: {
|
|
436
|
-
space_id: {
|
|
437
|
-
type: "string",
|
|
438
|
-
description: "Space to start (e.g., 'renvoi', 'personal')"
|
|
439
|
-
}
|
|
440
|
-
},
|
|
441
|
-
required: ["space_id"]
|
|
442
|
-
}
|
|
443
|
-
},
|
|
444
429
|
{
|
|
445
430
|
name: "view_spaces",
|
|
446
431
|
title: "View Spaces",
|
|
@@ -468,11 +453,11 @@ const TOOL_DEFINITIONS = [
|
|
|
468
453
|
config_badges: {
|
|
469
454
|
type: "array",
|
|
470
455
|
items: { type: "string" },
|
|
471
|
-
description: "Array of keywords for
|
|
456
|
+
description: "Array of keywords for this NEW space. Examples: ['fitness', 'recipes', 'travel planning'], ['client work', 'meetings', 'proposals'], ['TypeScript', 'React', 'API design']. They help agents understand and prioritize the space."
|
|
472
457
|
},
|
|
473
458
|
startup_preferences: {
|
|
474
459
|
type: "string",
|
|
475
|
-
description: "AI behavior preferences for this NEW space. Guides how AI assistants and agents should communicate and behave (e.g., 'be concise and frank', 'think critically', 'play devils advocate').
|
|
460
|
+
description: "AI behavior preferences for this NEW space. Guides how AI assistants and agents should communicate and behave (e.g., 'be concise and frank', 'think critically', 'play devils advocate')."
|
|
476
461
|
}
|
|
477
462
|
},
|
|
478
463
|
required: ["name"]
|
|
@@ -506,7 +491,7 @@ const TOOL_DEFINITIONS = [
|
|
|
506
491
|
},
|
|
507
492
|
project_id: {
|
|
508
493
|
type: "string",
|
|
509
|
-
description: "Optional: Project to add items to. All items created in this request will be linked to this project and appear on its canvas. Get project IDs from
|
|
494
|
+
description: "Optional: Project to add items to. All items created in this request will be linked to this project and appear on its canvas. Get project IDs from view_projects or search."
|
|
510
495
|
},
|
|
511
496
|
group_id: {
|
|
512
497
|
type: "string",
|
|
@@ -676,7 +661,6 @@ const TOOL_DEFINITIONS = [
|
|
|
676
661
|
"insights_user",
|
|
677
662
|
"agents",
|
|
678
663
|
"skills",
|
|
679
|
-
"conversations",
|
|
680
664
|
"dashboard"
|
|
681
665
|
],
|
|
682
666
|
description: "Optional: filter folders by sidebar section."
|
|
@@ -699,7 +683,6 @@ const TOOL_DEFINITIONS = [
|
|
|
699
683
|
"insights_user",
|
|
700
684
|
"agents",
|
|
701
685
|
"skills",
|
|
702
|
-
"conversations",
|
|
703
686
|
"dashboard"
|
|
704
687
|
],
|
|
705
688
|
description: "Sidebar section this folder belongs to."
|
|
@@ -751,7 +734,7 @@ const TOOL_DEFINITIONS = [
|
|
|
751
734
|
{
|
|
752
735
|
name: "message",
|
|
753
736
|
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. 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
|
|
737
|
+
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`; channel and project/group coordinates scope context, while the stable idempotency key anchors retries to one durable turn and the returned conversation_id remains the durable thread anchor.",
|
|
755
738
|
inputSchema: {
|
|
756
739
|
type: "object",
|
|
757
740
|
properties: {
|
|
@@ -797,11 +780,20 @@ const TOOL_DEFINITIONS = [
|
|
|
797
780
|
},
|
|
798
781
|
timeout_ms: {
|
|
799
782
|
type: "integer",
|
|
800
|
-
description: "Optional
|
|
783
|
+
description: "Optional bounded synchronous wait in milliseconds (10,000 to 45,000; default 45,000 when wait_for_response is true)."
|
|
801
784
|
},
|
|
802
785
|
wait_for_response: {
|
|
803
786
|
type: "boolean",
|
|
804
|
-
description: "Optional. Defaults to
|
|
787
|
+
description: "Optional. Defaults to false so the request returns a durable acknowledgement before infrastructure timeouts. Set true only for a bounded wait; a still-running turn returns status continuing and remains pollable."
|
|
788
|
+
},
|
|
789
|
+
client_turn_id: {
|
|
790
|
+
type: "string",
|
|
791
|
+
description: "Optional caller correlation value. Phoenix derives the durable turn identity from idempotency_key and scopes it by the verified user, graph, space, channel, project/group, and stable retry key."
|
|
792
|
+
},
|
|
793
|
+
idempotency_key: {
|
|
794
|
+
type: "string",
|
|
795
|
+
pattern: "\\S",
|
|
796
|
+
description: "REQUIRED stable retry key for this logical message within its room. Reuse it exactly on retry; Phoenix atomically claims one dispatch and replays the original session_id, real conversation_id, and durable result state."
|
|
805
797
|
},
|
|
806
798
|
participant_id: {
|
|
807
799
|
type: "string",
|
|
@@ -820,7 +812,7 @@ const TOOL_DEFINITIONS = [
|
|
|
820
812
|
description: "Optional IANA timezone for assistant context."
|
|
821
813
|
}
|
|
822
814
|
},
|
|
823
|
-
required: ["space_id", "content"]
|
|
815
|
+
required: ["space_id", "content", "idempotency_key"]
|
|
824
816
|
}
|
|
825
817
|
}
|
|
826
818
|
// DISABLED: memory_action tool is broken and causing errors.
|
|
@@ -854,7 +846,6 @@ const READ_ONLY_TOOLS = new Set([
|
|
|
854
846
|
"usage_status",
|
|
855
847
|
"fetch_conversation_messages",
|
|
856
848
|
"list_conversation_inbox",
|
|
857
|
-
"start",
|
|
858
849
|
"view_spaces",
|
|
859
850
|
"view_space"
|
|
860
851
|
]);
|
|
@@ -870,7 +861,6 @@ const IDEMPOTENT_TOOLS = new Set([
|
|
|
870
861
|
"usage_status",
|
|
871
862
|
"fetch_conversation_messages",
|
|
872
863
|
"list_conversation_inbox",
|
|
873
|
-
"start",
|
|
874
864
|
"view_spaces",
|
|
875
865
|
"view_space"
|
|
876
866
|
]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intangle/mcp-server",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.9",
|
|
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",
|
|
@@ -10,12 +10,17 @@
|
|
|
10
10
|
"prebuild": "cp ../web/src/app/api/mcp-remote/tool-definitions.ts ./tool-definitions.ts",
|
|
11
11
|
"build": "tsc",
|
|
12
12
|
"lint": "biome check .",
|
|
13
|
+
"lint:release": "biome check --config-path=biome.release.json package.json index.ts tool-definitions.ts",
|
|
13
14
|
"lint:fix": "biome check --fix .",
|
|
14
15
|
"prepublishOnly": "npm run build"
|
|
15
16
|
},
|
|
16
17
|
"bin": {
|
|
17
18
|
"intangle-mcp": "dist/index.js"
|
|
18
19
|
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
19
24
|
"keywords": [
|
|
20
25
|
"mcp",
|
|
21
26
|
"model-context-protocol",
|
|
@@ -34,7 +39,7 @@
|
|
|
34
39
|
"type": "git",
|
|
35
40
|
"url": "git+https://github.com/intangle/mcp-server.git"
|
|
36
41
|
},
|
|
37
|
-
"homepage": "https://intangle
|
|
42
|
+
"homepage": "https://renvoi.co/intangle",
|
|
38
43
|
"engines": {
|
|
39
44
|
"node": ">=18.0.0"
|
|
40
45
|
},
|
|
@@ -49,5 +54,6 @@
|
|
|
49
54
|
"@types/node-fetch": "^2.6.12",
|
|
50
55
|
"tsx": "^4.0.0",
|
|
51
56
|
"typescript": "^5.0.0"
|
|
52
|
-
}
|
|
57
|
+
},
|
|
58
|
+
"intangleSourceHash": "9abfe72739f6805935f9dbc2649e64fe58535ea7776d22be212609679a600e7c"
|
|
53
59
|
}
|
package/.env.local
DELETED
package/biome.json
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
|
|
3
|
-
"vcs": {
|
|
4
|
-
"enabled": false,
|
|
5
|
-
"clientKind": "git",
|
|
6
|
-
"useIgnoreFile": false
|
|
7
|
-
},
|
|
8
|
-
"files": {
|
|
9
|
-
"ignoreUnknown": false
|
|
10
|
-
},
|
|
11
|
-
"formatter": {
|
|
12
|
-
"enabled": true,
|
|
13
|
-
"formatWithErrors": false,
|
|
14
|
-
"indentStyle": "space",
|
|
15
|
-
"indentWidth": 2,
|
|
16
|
-
"lineEnding": "lf",
|
|
17
|
-
"lineWidth": 80,
|
|
18
|
-
"attributePosition": "auto"
|
|
19
|
-
},
|
|
20
|
-
"linter": {
|
|
21
|
-
"enabled": true,
|
|
22
|
-
"rules": {
|
|
23
|
-
"recommended": true
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"javascript": {
|
|
27
|
-
"formatter": {
|
|
28
|
-
"jsxQuoteStyle": "double",
|
|
29
|
-
"quoteProperties": "asNeeded",
|
|
30
|
-
"trailingCommas": "es5",
|
|
31
|
-
"semicolons": "asNeeded",
|
|
32
|
-
"arrowParentheses": "always",
|
|
33
|
-
"bracketSpacing": true,
|
|
34
|
-
"bracketSameLine": false,
|
|
35
|
-
"quoteStyle": "double",
|
|
36
|
-
"attributePosition": "auto"
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|