@intangle/mcp-server 2.6.25 → 2.6.27

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.
@@ -62,6 +62,7 @@ export const HIGHQ_DIRECT_TOOLS = [
62
62
  },
63
63
  annotations: {
64
64
  readOnlyHint: true,
65
+ destructiveHint: false,
65
66
  idempotentHint: true,
66
67
  openWorldHint: true
67
68
  }
@@ -111,6 +112,8 @@ export const HIGHQ_DIRECT_TOOLS = [
111
112
  ]
112
113
  },
113
114
  annotations: {
115
+ readOnlyHint: false,
116
+ destructiveHint: false,
114
117
  openWorldHint: true
115
118
  }
116
119
  },
@@ -150,6 +153,7 @@ export const HIGHQ_DIRECT_TOOLS = [
150
153
  },
151
154
  annotations: {
152
155
  readOnlyHint: true,
156
+ destructiveHint: false,
153
157
  idempotentHint: true,
154
158
  openWorldHint: true
155
159
  }
@@ -185,6 +189,7 @@ export const HIGHQ_DIRECT_TOOLS = [
185
189
  },
186
190
  annotations: {
187
191
  readOnlyHint: true,
192
+ destructiveHint: false,
188
193
  idempotentHint: true,
189
194
  openWorldHint: true
190
195
  }
@@ -233,6 +238,7 @@ export const HIGHQ_DIRECT_TOOLS = [
233
238
  },
234
239
  annotations: {
235
240
  readOnlyHint: true,
241
+ destructiveHint: false,
236
242
  idempotentHint: true,
237
243
  openWorldHint: true
238
244
  }
@@ -294,6 +300,7 @@ export const HIGHQ_DIRECT_TOOLS = [
294
300
  ]
295
301
  },
296
302
  annotations: {
303
+ readOnlyHint: false,
297
304
  destructiveHint: true,
298
305
  openWorldHint: true
299
306
  }
@@ -154,8 +154,9 @@ const BASE_TOOLS = [
154
154
  },
155
155
  annotations: {
156
156
  readOnlyHint: true,
157
+ destructiveHint: false,
157
158
  idempotentHint: true,
158
- openWorldHint: true
159
+ openWorldHint: false
159
160
  }
160
161
  },
161
162
  {
@@ -239,8 +240,9 @@ const BASE_TOOLS = [
239
240
  },
240
241
  annotations: {
241
242
  readOnlyHint: true,
243
+ destructiveHint: false,
242
244
  idempotentHint: true,
243
- openWorldHint: true
245
+ openWorldHint: false
244
246
  }
245
247
  },
246
248
  {
@@ -647,8 +649,9 @@ const BASE_TOOLS = [
647
649
  ]
648
650
  },
649
651
  annotations: {
652
+ readOnlyHint: false,
650
653
  destructiveHint: true,
651
- openWorldHint: true
654
+ openWorldHint: false
652
655
  }
653
656
  },
654
657
  {
@@ -661,8 +664,9 @@ const BASE_TOOLS = [
661
664
  },
662
665
  annotations: {
663
666
  readOnlyHint: true,
667
+ destructiveHint: false,
664
668
  idempotentHint: true,
665
- openWorldHint: true
669
+ openWorldHint: false
666
670
  }
667
671
  },
668
672
  {
@@ -700,8 +704,9 @@ const BASE_TOOLS = [
700
704
  },
701
705
  annotations: {
702
706
  readOnlyHint: true,
707
+ destructiveHint: false,
703
708
  idempotentHint: true,
704
- openWorldHint: true
709
+ openWorldHint: false
705
710
  }
706
711
  },
707
712
  {
@@ -734,7 +739,9 @@ const BASE_TOOLS = [
734
739
  ]
735
740
  },
736
741
  annotations: {
737
- openWorldHint: true
742
+ readOnlyHint: false,
743
+ destructiveHint: false,
744
+ openWorldHint: false
738
745
  }
739
746
  },
740
747
  {
@@ -771,8 +778,9 @@ const BASE_TOOLS = [
771
778
  },
772
779
  annotations: {
773
780
  readOnlyHint: true,
781
+ destructiveHint: false,
774
782
  idempotentHint: true,
775
- openWorldHint: true
783
+ openWorldHint: false
776
784
  }
777
785
  },
778
786
  {
@@ -805,7 +813,9 @@ const BASE_TOOLS = [
805
813
  ]
806
814
  },
807
815
  annotations: {
808
- openWorldHint: true
816
+ readOnlyHint: false,
817
+ destructiveHint: false,
818
+ openWorldHint: false
809
819
  }
810
820
  },
811
821
  {
@@ -818,14 +828,15 @@ const BASE_TOOLS = [
818
828
  },
819
829
  annotations: {
820
830
  readOnlyHint: true,
831
+ destructiveHint: false,
821
832
  idempotentHint: true,
822
- openWorldHint: true
833
+ openWorldHint: false
823
834
  }
824
835
  },
825
836
  {
826
837
  name: "message",
827
838
  title: "Message Assistant",
828
- 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. Intangle derives the durable participant identity from the authenticated runner rather than caller-supplied fields. 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 Item coordination, pass the stable Item Room identity as `channel_id` using `item|<item_id>`; this Item room/channel coordinate is preferred. `project_id`, `group_id`, and legacy `project|...` or `group|...` channel values remain accepted only as compatibility coordinates for older stored calls and integrations. The stable idempotency key anchors retries to one durable turn, and the returned `conversation_id` remains the durable thread anchor. Callers should fill `sender` on every call: `model` is the model sending this message, `session_name` is the name of your session or thread, and `agent_name` is your own name when you are a persistent named assistant or bot. Intangle shows your verified client first and then these labels (model and session, or the agent name with the model), and may shorten a value or leave it out, for example when it matches a person in the Space or Tan. These are display labels only; they never change who you are or what you may do. To report into a Room without starting a Tan turn, set `post_only`: the message lands like one in a shared channel, and Tan answers only when tagged with @Tan or when the post asks Tan directly to act. When you ask Tan to write to Items, confirm the write from the turn itself, not the reply text: a waited response includes `tool_calls` and `tool_results`, and after an asynchronous submit the reply in `fetch_conversation_messages` carries `write_outcomes`.",
839
+ 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. Intangle derives the durable participant identity from the authenticated runner rather than caller-supplied fields. 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 Item coordination, pass the stable Item Room identity as `channel_id` using `item|<item_id>`; this Item room/channel coordinate is preferred. `project_id`, `group_id`, and legacy `project|...` or `group|...` channel values remain accepted only as compatibility coordinates for older stored calls and integrations. The stable idempotency key anchors retries to one durable turn, and the returned `conversation_id` remains the durable thread anchor. Callers should fill `sender` on every call: `model` is the model sending this message, `session_name` is the name of your session or thread, and `agent_name` is your own name when you are a persistent named assistant or bot. Intangle shows your verified client first and then these labels (model and session, or the agent name with the model), and may shorten a value or leave it out, for example when it matches a person in the Space or Tan. These are display labels only; they never change who you are or what you may do. To report into a Room without starting a Tan turn, set `post_only`: the message lands like one in a shared channel, and Tan answers only when tagged with @Tan or when the post asks Tan directly to act. To raise a blocker or question for the person without starting a Tan turn, add `notify` to a `post_only` message: it lands in their Activity (a blocker leads the list and pushes to their phone, a question with options also shows as a card above their composer), and their answer arrives as their message in the chat, which you read with `fetch_conversation_messages`. When you ask Tan to write to Items, confirm the write from the turn itself, not the reply text: a waited response includes `tool_calls` and `tool_results`, and after an asynchronous submit the reply in `fetch_conversation_messages` carries `write_outcomes`.",
829
840
  inputSchema: {
830
841
  type: "object",
831
842
  properties: {
@@ -881,6 +892,54 @@ const BASE_TOOLS = [
881
892
  type: "boolean",
882
893
  description: "Optional. Set true to post into the chat like a message in a shared channel: it is saved, shown live with your sender labels and marked unread for the people in the chat, and Tan does not reply. Tan still answers when the content tags @Tan, or when Intangle judges that the post asks Tan directly to answer or act. A post that Tan did not answer returns status posted with its conversation_id and message_id. Use it for status reports, results and questions meant for people."
883
894
  },
895
+ notify: {
896
+ type: "object",
897
+ description: "Optional, and only with post_only: true. Raises something for the person in Intangle with no Tan turn. A blocker is something they must do before you can continue (create a key, finish a sign-in): it leads their Activity until they resolve it and sends a push to their phone. A question needs their answer: it appears in Activity and, when you give 2 to 4 options, as a card above their composer in this chat. Their answer is posted into this chat as their own message and starts no Tan turn, so read it with fetch_conversation_messages on the conversation_id of the response. The response carries notify.status raised and the Activity entry id. A post with notify never starts a Tan turn, even if it tags @Tan. Use it only for what a person must act on.",
898
+ properties: {
899
+ kind: {
900
+ type: "string",
901
+ enum: [
902
+ "blocker",
903
+ "question"
904
+ ],
905
+ description: "blocker: you cannot continue until they act. question: you need their choice or answer."
906
+ },
907
+ title: {
908
+ type: "string",
909
+ description: "Required. One line saying what they must do or answer, up to 120 characters. For a question this is the question itself."
910
+ },
911
+ body: {
912
+ type: "string",
913
+ description: "Optional. Why it matters and what you need, up to 1000 characters."
914
+ },
915
+ options: {
916
+ type: "array",
917
+ minItems: 2,
918
+ maxItems: 4,
919
+ description: "Optional, for a question only. 2 to 4 different answers, your recommendation first, shown as buttons on the card. The person can always answer in their own words.",
920
+ items: {
921
+ type: "object",
922
+ properties: {
923
+ label: {
924
+ type: "string",
925
+ description: "A short answer."
926
+ },
927
+ description: {
928
+ type: "string",
929
+ description: "What choosing it leads to, in one line."
930
+ }
931
+ },
932
+ required: [
933
+ "label"
934
+ ]
935
+ }
936
+ }
937
+ },
938
+ required: [
939
+ "kind",
940
+ "title"
941
+ ]
942
+ },
884
943
  client_turn_id: {
885
944
  type: "string",
886
945
  description: "Optional caller correlation value. Phoenix derives the durable turn identity from idempotency_key and scopes it by the verified user, graph, Space, preferred Item room/channel, any legacy Project/Group compatibility coordinates, and the stable retry key."
@@ -921,6 +980,8 @@ const BASE_TOOLS = [
921
980
  ]
922
981
  },
923
982
  annotations: {
983
+ readOnlyHint: false,
984
+ destructiveHint: true,
924
985
  openWorldHint: true
925
986
  }
926
987
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intangle/mcp-server",
3
- "version": "2.6.25",
3
+ "version": "2.6.27",
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",
@@ -56,5 +56,5 @@
56
56
  "tsx": "^4.0.0",
57
57
  "typescript": "^5.0.0"
58
58
  },
59
- "intangleSourceHash": "b59fc14001f3852f6084899eddd283c2f3d13957eb60258a7db5415c71e7f5ab"
59
+ "intangleSourceHash": "aa932047ede13c15cbec0476f11759b0636e482dc4596f38517457b06d6f78d0"
60
60
  }