@intangle/mcp-server 2.6.26 → 2.6.28

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.
@@ -1,5 +1,7 @@
1
1
  // Generated from mcp-contract/tool-catalog.json. Do not edit this projection directly.
2
2
  export const HIGHQ_DIRECT_TOOL_NAMES = [
3
+ "HIGHQ_GET_REQUEST_STATUS",
4
+ "HIGHQ_LIST_REQUEST_CHANGES",
3
5
  "HIGHQ_LIST_PENDING_REVIEWS",
4
6
  "HIGHQ_GET_LEGAL_REVIEW_CONTEXT",
5
7
  "HIGHQ_RESOLVE_FOLDER_PATH",
@@ -8,6 +10,89 @@ export const HIGHQ_DIRECT_TOOL_NAMES = [
8
10
  "HIGHQ_FILL_LEGAL_REPORT"
9
11
  ];
10
12
  export const HIGHQ_DIRECT_TOOLS = [
13
+ {
14
+ name: "HIGHQ_GET_REQUEST_STATUS",
15
+ title: "Get HighQ Request Status",
16
+ description: "Use first for any question about one HighQ request: where its documents are filed (every location in the site library), its review stage and status, its business unit, legal entity and counterparty, and whether the filing automation filed it. Find the request by request_id (for example RQ-0013), item_id, or query text such as a counterparty name. One call replaces listing rows, searching iSheets and walking folders. Read only.",
17
+ inputSchema: {
18
+ type: "object",
19
+ properties: {
20
+ space_id: {
21
+ type: "string",
22
+ description: "REQUIRED: Intangle Space whose authorized HighQ connection should be used."
23
+ },
24
+ organization_id: {
25
+ type: "string",
26
+ description: "Optional Clerk organization ID for an organization-owned Space. Include it when the same raw space_id could exist in more than one graph."
27
+ },
28
+ site_id: {
29
+ type: "string",
30
+ description: "HighQ site ID. Optional when exactly one allowed site is connected."
31
+ },
32
+ request_id: {
33
+ type: "string",
34
+ description: "Request ID such as RQ-0013."
35
+ },
36
+ item_id: {
37
+ type: "string",
38
+ description: "HighQ Requests iSheet row ID, when the Request ID is not known."
39
+ },
40
+ query: {
41
+ type: "string",
42
+ description: "Words that identify the request, such as a counterparty or business unit name, when its Request ID is not known. Several matches come back as a short list to choose from."
43
+ }
44
+ },
45
+ required: [
46
+ "space_id"
47
+ ]
48
+ },
49
+ annotations: {
50
+ readOnlyHint: true,
51
+ destructiveHint: false,
52
+ idempotentHint: true,
53
+ openWorldHint: true
54
+ }
55
+ },
56
+ {
57
+ name: "HIGHQ_LIST_REQUEST_CHANGES",
58
+ title: "List HighQ Request Changes",
59
+ description: "Use first for what changed in HighQ requests since a time: the requests HighQ reports changed (with review stage, business unit and legal entity) and the filing automation's last run. Pass since as an ISO 8601 time, or hours to look back. Read only.",
60
+ inputSchema: {
61
+ type: "object",
62
+ properties: {
63
+ space_id: {
64
+ type: "string",
65
+ description: "REQUIRED: Intangle Space whose authorized HighQ connection should be used."
66
+ },
67
+ organization_id: {
68
+ type: "string",
69
+ description: "Optional Clerk organization ID for an organization-owned Space. Include it when the same raw space_id could exist in more than one graph."
70
+ },
71
+ site_id: {
72
+ type: "string",
73
+ description: "HighQ site ID. Optional when exactly one allowed site is connected."
74
+ },
75
+ since: {
76
+ type: "string",
77
+ description: "ISO 8601 time to list changes since, for example 2026-10-04T09:00:00Z."
78
+ },
79
+ hours: {
80
+ type: "integer",
81
+ minimum: 1,
82
+ description: "Look back this many hours instead of passing since."
83
+ }
84
+ },
85
+ required: [
86
+ "space_id"
87
+ ]
88
+ },
89
+ annotations: {
90
+ readOnlyHint: true,
91
+ destructiveHint: false,
92
+ idempotentHint: true,
93
+ openWorldHint: true
94
+ }
95
+ },
11
96
  {
12
97
  name: "HIGHQ_LIST_PENDING_REVIEWS",
13
98
  title: "List Pending HighQ Reviews",
@@ -836,7 +836,7 @@ const BASE_TOOLS = [
836
836
  {
837
837
  name: "message",
838
838
  title: "Message Assistant",
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. 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`.",
840
840
  inputSchema: {
841
841
  type: "object",
842
842
  properties: {
@@ -892,6 +892,54 @@ const BASE_TOOLS = [
892
892
  type: "boolean",
893
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."
894
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
+ },
895
943
  client_turn_id: {
896
944
  type: "string",
897
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."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intangle/mcp-server",
3
- "version": "2.6.26",
3
+ "version": "2.6.28",
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": "f97c002f142e2884a2dcdafeb760c8524603ff55081c6b2ccd54fc7d497e600b"
59
+ "intangleSourceHash": "fa17c63d2d81795b99e2c84c09dc509487ad64791d98d27c2bebcfcb8ec13eda"
60
60
  }