@intangle/mcp-server 2.6.4 → 2.6.6

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.
@@ -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. Accepts single ID or array of IDs.",
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.",
43
43
  inputSchema: {
44
44
  type: "object",
45
45
  properties: {
@@ -49,16 +49,17 @@ const TOOL_DEFINITIONS = [
49
49
  },
50
50
  id: {
51
51
  type: "string",
52
- description: "Single ID to fetch (context or task ID like 'mem_123' or 'task_456' or 'skill_789')"
52
+ description: "Single ID to fetch (e.g. `mem_123`, `task_456`, `skill_789`, `doc_321`, `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, and skill IDs). Use this to fetch multiple items in one call."
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."
58
58
  }
59
59
  }
60
60
  }
61
61
  },
62
+ { name: "read_artifact", title: "Read Artifact", description: "Read one existing artifact by `artifact_id` without asking Tan to restream it in chat. Returns content plus render metadata and `config`/`state`/`data` when available. Prefer this when an external agent already has the artifact id and needs the current artifact payload directly.", inputSchema: { type: "object", properties: { space_id: { type: "string", description: "Optional: Space containing the artifact. Provide this for shared/org spaces so access checks resolve against the correct graph." }, artifact_id: { type: "string", description: "REQUIRED: Existing artifact ID to read (e.g. `artifact_123`)." }, item_id: { type: "string", description: "Optional alias for `artifact_id`." }, organization_id: { type: "string", description: "Optional Clerk org ID when the space belongs to an organization graph." } }, required: ["artifact_id"] } },
62
63
  {
63
64
  name: "usage_status",
64
65
  title: "Usage Status",
@@ -725,17 +726,17 @@ const TOOL_DEFINITIONS = [
725
726
  },
726
727
  move_items: {
727
728
  type: "array",
728
- description: "Optional item move operations. Set folder_id to null to move an item back to root.",
729
+ description: "Optional item move operations. Omit folder_id to move an item back to root.",
729
730
  items: {
730
731
  type: "object",
731
732
  properties: {
732
733
  item_id: { type: "string", description: "Item ID to move." },
733
734
  folder_id: {
734
- type: ["string", "null"],
735
- description: "Target folder ID, or null to remove from folder."
735
+ type: "string",
736
+ description: "Optional target folder ID. Omit this field to remove the item from its current folder."
736
737
  }
737
738
  },
738
- required: ["item_id", "folder_id"]
739
+ required: ["item_id"]
739
740
  }
740
741
  },
741
742
  delete: {
@@ -841,6 +842,7 @@ const TOOL_DEFINITIONS = [
841
842
  const READ_ONLY_TOOLS = new Set([
842
843
  "search",
843
844
  "fetch_items",
845
+ "read_artifact",
844
846
  "usage_status",
845
847
  "fetch_conversation_messages",
846
848
  "list_conversation_inbox",
@@ -856,6 +858,7 @@ const DESTRUCTIVE_TOOLS = new Set([
856
858
  const IDEMPOTENT_TOOLS = new Set([
857
859
  "search",
858
860
  "fetch_items",
861
+ "read_artifact",
859
862
  "usage_status",
860
863
  "fetch_conversation_messages",
861
864
  "list_conversation_inbox",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intangle/mcp-server",
3
- "version": "2.6.4",
3
+ "version": "2.6.6",
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. Accepts single ID or array of IDs.",
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.",
50
50
  inputSchema: {
51
51
  type: "object",
52
52
  properties: {
@@ -58,17 +58,18 @@ const TOOL_DEFINITIONS = [
58
58
  id: {
59
59
  type: "string",
60
60
  description:
61
- "Single ID to fetch (context or task ID like 'mem_123' or 'task_456' or 'skill_789')"
61
+ "Single ID to fetch (e.g. `mem_123`, `task_456`, `skill_789`, `doc_321`, `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, and skill IDs). Use this to fetch multiple items in one call."
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."
68
68
  }
69
69
  }
70
70
  }
71
71
  },
72
+ { name: "read_artifact", title: "Read Artifact", description: "Read one existing artifact by `artifact_id` without asking Tan to restream it in chat. Returns content plus render metadata and `config`/`state`/`data` when available. Prefer this when an external agent already has the artifact id and needs the current artifact payload directly.", inputSchema: { type: "object", properties: { space_id: { type: "string", description: "Optional: Space containing the artifact. Provide this for shared/org spaces so access checks resolve against the correct graph." }, artifact_id: { type: "string", description: "REQUIRED: Existing artifact ID to read (e.g. `artifact_123`)." }, item_id: { type: "string", description: "Optional alias for `artifact_id`." }, organization_id: { type: "string", description: "Optional Clerk org ID when the space belongs to an organization graph." } }, required: ["artifact_id"] } },
72
73
  {
73
74
  name: "usage_status",
74
75
  title: "Usage Status",
@@ -812,17 +813,18 @@ const TOOL_DEFINITIONS = [
812
813
  move_items: {
813
814
  type: "array",
814
815
  description:
815
- "Optional item move operations. Set folder_id to null to move an item back to root.",
816
+ "Optional item move operations. Omit folder_id to move an item back to root.",
816
817
  items: {
817
818
  type: "object",
818
819
  properties: {
819
820
  item_id: { type: "string", description: "Item ID to move." },
820
821
  folder_id: {
821
- type: ["string", "null"],
822
- description: "Target folder ID, or null to remove from folder."
822
+ type: "string",
823
+ description:
824
+ "Optional target folder ID. Omit this field to remove the item from its current folder."
823
825
  }
824
826
  },
825
- required: ["item_id", "folder_id"]
827
+ required: ["item_id"]
826
828
  }
827
829
  },
828
830
  delete: {
@@ -940,6 +942,7 @@ const TOOL_DEFINITIONS = [
940
942
  const READ_ONLY_TOOLS = new Set([
941
943
  "search",
942
944
  "fetch_items",
945
+ "read_artifact",
943
946
  "usage_status",
944
947
  "fetch_conversation_messages",
945
948
  "list_conversation_inbox",
@@ -957,6 +960,7 @@ const DESTRUCTIVE_TOOLS = new Set([
957
960
  const IDEMPOTENT_TOOLS = new Set([
958
961
  "search",
959
962
  "fetch_items",
963
+ "read_artifact",
960
964
  "usage_status",
961
965
  "fetch_conversation_messages",
962
966
  "list_conversation_inbox",