@unclick/mcp-server 0.2.2 → 0.2.4

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.
Files changed (175) hide show
  1. package/dist/airtable-tool.d.ts +2 -0
  2. package/dist/airtable-tool.d.ts.map +1 -0
  3. package/dist/airtable-tool.js +154 -0
  4. package/dist/airtable-tool.js.map +1 -0
  5. package/dist/anthropic-tool.d.ts +3 -0
  6. package/dist/anthropic-tool.d.ts.map +1 -0
  7. package/dist/anthropic-tool.js +123 -0
  8. package/dist/anthropic-tool.js.map +1 -0
  9. package/dist/asana-tool.d.ts +8 -0
  10. package/dist/asana-tool.d.ts.map +1 -0
  11. package/dist/asana-tool.js +218 -0
  12. package/dist/asana-tool.js.map +1 -0
  13. package/dist/calendly-tool.d.ts +6 -0
  14. package/dist/calendly-tool.d.ts.map +1 -0
  15. package/dist/calendly-tool.js +182 -0
  16. package/dist/calendly-tool.js.map +1 -0
  17. package/dist/clickup-tool.d.ts +2 -0
  18. package/dist/clickup-tool.d.ts.map +1 -0
  19. package/dist/clickup-tool.js +153 -0
  20. package/dist/clickup-tool.js.map +1 -0
  21. package/dist/connectors/figma.d.ts +3 -0
  22. package/dist/connectors/figma.d.ts.map +1 -0
  23. package/dist/connectors/figma.js +18 -0
  24. package/dist/connectors/figma.js.map +1 -0
  25. package/dist/connectors/index.d.ts +3 -1
  26. package/dist/connectors/index.d.ts.map +1 -1
  27. package/dist/connectors/index.js +5 -1
  28. package/dist/connectors/index.js.map +1 -1
  29. package/dist/connectors/line.d.ts +3 -0
  30. package/dist/connectors/line.d.ts.map +1 -0
  31. package/dist/connectors/line.js +18 -0
  32. package/dist/connectors/line.js.map +1 -0
  33. package/dist/ebay-tool.d.ts +5 -0
  34. package/dist/ebay-tool.d.ts.map +1 -0
  35. package/dist/ebay-tool.js +179 -0
  36. package/dist/ebay-tool.js.map +1 -0
  37. package/dist/elevenlabs-tool.d.ts +6 -0
  38. package/dist/elevenlabs-tool.d.ts.map +1 -0
  39. package/dist/elevenlabs-tool.js +166 -0
  40. package/dist/elevenlabs-tool.js.map +1 -0
  41. package/dist/etsy-tool.d.ts +6 -0
  42. package/dist/etsy-tool.d.ts.map +1 -0
  43. package/dist/etsy-tool.js +125 -0
  44. package/dist/etsy-tool.js.map +1 -0
  45. package/dist/exchangerate-tool.d.ts +5 -0
  46. package/dist/exchangerate-tool.d.ts.map +1 -0
  47. package/dist/exchangerate-tool.js +139 -0
  48. package/dist/exchangerate-tool.js.map +1 -0
  49. package/dist/figma-tool.d.ts +8 -0
  50. package/dist/figma-tool.d.ts.map +1 -0
  51. package/dist/figma-tool.js +231 -0
  52. package/dist/figma-tool.js.map +1 -0
  53. package/dist/gdelt-tool.d.ts +5 -0
  54. package/dist/gdelt-tool.d.ts.map +1 -0
  55. package/dist/gdelt-tool.js +177 -0
  56. package/dist/gdelt-tool.js.map +1 -0
  57. package/dist/github-tool.d.ts +2 -0
  58. package/dist/github-tool.d.ts.map +1 -0
  59. package/dist/github-tool.js +165 -0
  60. package/dist/github-tool.js.map +1 -0
  61. package/dist/gitlab-tool.d.ts +2 -0
  62. package/dist/gitlab-tool.d.ts.map +1 -0
  63. package/dist/gitlab-tool.js +127 -0
  64. package/dist/gitlab-tool.js.map +1 -0
  65. package/dist/igdb-tool.d.ts +6 -0
  66. package/dist/igdb-tool.d.ts.map +1 -0
  67. package/dist/igdb-tool.js +140 -0
  68. package/dist/igdb-tool.js.map +1 -0
  69. package/dist/line-tool.d.ts +7 -0
  70. package/dist/line-tool.d.ts.map +1 -0
  71. package/dist/line-tool.js +188 -0
  72. package/dist/line-tool.js.map +1 -0
  73. package/dist/linear-tool.d.ts +2 -0
  74. package/dist/linear-tool.d.ts.map +1 -0
  75. package/dist/linear-tool.js +186 -0
  76. package/dist/linear-tool.js.map +1 -0
  77. package/dist/monday-tool.d.ts +7 -0
  78. package/dist/monday-tool.d.ts.map +1 -0
  79. package/dist/monday-tool.js +206 -0
  80. package/dist/monday-tool.js.map +1 -0
  81. package/dist/openai-tool.d.ts +6 -0
  82. package/dist/openai-tool.d.ts.map +1 -0
  83. package/dist/openai-tool.js +227 -0
  84. package/dist/openai-tool.js.map +1 -0
  85. package/dist/paypal-tool.d.ts +3 -0
  86. package/dist/paypal-tool.d.ts.map +1 -0
  87. package/dist/paypal-tool.js +157 -0
  88. package/dist/paypal-tool.js.map +1 -0
  89. package/dist/pinterest-tool.d.ts +7 -0
  90. package/dist/pinterest-tool.d.ts.map +1 -0
  91. package/dist/pinterest-tool.js +219 -0
  92. package/dist/pinterest-tool.js.map +1 -0
  93. package/dist/plaid-tool.d.ts +6 -0
  94. package/dist/plaid-tool.d.ts.map +1 -0
  95. package/dist/plaid-tool.js +149 -0
  96. package/dist/plaid-tool.js.map +1 -0
  97. package/dist/postman-tool.d.ts +2 -0
  98. package/dist/postman-tool.d.ts.map +1 -0
  99. package/dist/postman-tool.js +92 -0
  100. package/dist/postman-tool.js.map +1 -0
  101. package/dist/pushover-tool.d.ts +6 -0
  102. package/dist/pushover-tool.d.ts.map +1 -0
  103. package/dist/pushover-tool.js +146 -0
  104. package/dist/pushover-tool.js.map +1 -0
  105. package/dist/quickbooks-tool.d.ts +5 -0
  106. package/dist/quickbooks-tool.d.ts.map +1 -0
  107. package/dist/quickbooks-tool.js +160 -0
  108. package/dist/quickbooks-tool.js.map +1 -0
  109. package/dist/replicate-tool.d.ts +7 -0
  110. package/dist/replicate-tool.d.ts.map +1 -0
  111. package/dist/replicate-tool.js +172 -0
  112. package/dist/replicate-tool.js.map +1 -0
  113. package/dist/sentry-tool.d.ts +2 -0
  114. package/dist/sentry-tool.d.ts.map +1 -0
  115. package/dist/sentry-tool.js +123 -0
  116. package/dist/sentry-tool.js.map +1 -0
  117. package/dist/speedrun-tool.d.ts +6 -0
  118. package/dist/speedrun-tool.d.ts.map +1 -0
  119. package/dist/speedrun-tool.js +192 -0
  120. package/dist/speedrun-tool.js.map +1 -0
  121. package/dist/spotify-tool.d.ts +8 -0
  122. package/dist/spotify-tool.d.ts.map +1 -0
  123. package/dist/spotify-tool.js +274 -0
  124. package/dist/spotify-tool.js.map +1 -0
  125. package/dist/square-tool.d.ts +5 -0
  126. package/dist/square-tool.d.ts.map +1 -0
  127. package/dist/square-tool.js +133 -0
  128. package/dist/square-tool.js.map +1 -0
  129. package/dist/stability-tool.d.ts +5 -0
  130. package/dist/stability-tool.d.ts.map +1 -0
  131. package/dist/stability-tool.js +190 -0
  132. package/dist/stability-tool.js.map +1 -0
  133. package/dist/steam-tool.d.ts +6 -0
  134. package/dist/steam-tool.d.ts.map +1 -0
  135. package/dist/steam-tool.js +222 -0
  136. package/dist/steam-tool.js.map +1 -0
  137. package/dist/stripe-tool.d.ts +7 -0
  138. package/dist/stripe-tool.d.ts.map +1 -0
  139. package/dist/stripe-tool.js +181 -0
  140. package/dist/stripe-tool.js.map +1 -0
  141. package/dist/tiktok-tool.d.ts +4 -0
  142. package/dist/tiktok-tool.d.ts.map +1 -0
  143. package/dist/tiktok-tool.js +129 -0
  144. package/dist/tiktok-tool.js.map +1 -0
  145. package/dist/toilets-tool.js +2 -2
  146. package/dist/tool-wiring.d.ts +4066 -18
  147. package/dist/tool-wiring.d.ts.map +1 -1
  148. package/dist/tool-wiring.js +2601 -18
  149. package/dist/tool-wiring.js.map +1 -1
  150. package/dist/trello-tool.d.ts +2 -0
  151. package/dist/trello-tool.d.ts.map +1 -0
  152. package/dist/trello-tool.js +166 -0
  153. package/dist/trello-tool.js.map +1 -0
  154. package/dist/twilio-tool.d.ts +8 -0
  155. package/dist/twilio-tool.d.ts.map +1 -0
  156. package/dist/twilio-tool.js +243 -0
  157. package/dist/twilio-tool.js.map +1 -0
  158. package/dist/whatsapp-tool.d.ts +6 -0
  159. package/dist/whatsapp-tool.d.ts.map +1 -0
  160. package/dist/whatsapp-tool.js +200 -0
  161. package/dist/whatsapp-tool.js.map +1 -0
  162. package/dist/woocommerce-tool.d.ts +4 -0
  163. package/dist/woocommerce-tool.d.ts.map +1 -0
  164. package/dist/woocommerce-tool.js +140 -0
  165. package/dist/woocommerce-tool.js.map +1 -0
  166. package/dist/youtube-tool.d.ts +7 -0
  167. package/dist/youtube-tool.d.ts.map +1 -0
  168. package/dist/youtube-tool.js +196 -0
  169. package/dist/youtube-tool.js.map +1 -0
  170. package/package.json +2 -2
  171. package/server.json +24 -5
  172. package/dist/cloudflare-worker.d.ts +0 -12
  173. package/dist/cloudflare-worker.d.ts.map +0 -1
  174. package/dist/cloudflare-worker.js +0 -50
  175. package/dist/cloudflare-worker.js.map +0 -1
@@ -0,0 +1,188 @@
1
+ // LINE Messaging API integration for the UnClick MCP server.
2
+ // Uses the official LINE Messaging API via fetch - no external dependencies.
3
+ // Users must create a LINE channel and obtain a Channel Access Token.
4
+ const LINE_API_BASE = "https://api.line.me/v2/bot";
5
+ // ─── API helper ───────────────────────────────────────────────────────────────
6
+ async function linePost(token, path, body) {
7
+ const res = await fetch(`${LINE_API_BASE}${path}`, {
8
+ method: "POST",
9
+ headers: {
10
+ Authorization: `Bearer ${token}`,
11
+ "Content-Type": "application/json",
12
+ },
13
+ body: JSON.stringify(body),
14
+ });
15
+ // LINE returns 200 for success; error bodies have message field
16
+ const text = await res.text();
17
+ let data = {};
18
+ try {
19
+ data = JSON.parse(text);
20
+ }
21
+ catch { /* empty response is fine for 200 */ }
22
+ if (!res.ok) {
23
+ const msg = data.message ?? `HTTP ${res.status}`;
24
+ const detail = data.details
25
+ ?.map((d) => d.message)
26
+ .join("; ");
27
+ throw new Error(`LINE API error: ${msg}${detail ? ` — ${detail}` : ""}`);
28
+ }
29
+ return data;
30
+ }
31
+ async function lineGet(token, path) {
32
+ const res = await fetch(`${LINE_API_BASE}${path}`, {
33
+ headers: { Authorization: `Bearer ${token}` },
34
+ });
35
+ const text = await res.text();
36
+ let data = {};
37
+ try {
38
+ data = JSON.parse(text);
39
+ }
40
+ catch { /* empty */ }
41
+ if (!res.ok) {
42
+ const msg = data.message ?? `HTTP ${res.status}`;
43
+ throw new Error(`LINE API error: ${msg}`);
44
+ }
45
+ return data;
46
+ }
47
+ // ─── Token validation ─────────────────────────────────────────────────────────
48
+ function requireToken(token) {
49
+ const t = String(token ?? "").trim();
50
+ if (!t)
51
+ throw new Error("channel_access_token is required. Create a LINE channel at developers.line.biz.");
52
+ return t;
53
+ }
54
+ // ─── Operations ───────────────────────────────────────────────────────────────
55
+ export async function lineSendMessage(args) {
56
+ const token = requireToken(args.channel_access_token);
57
+ const to = String(args.to ?? "").trim();
58
+ if (!to)
59
+ throw new Error("to is required (user ID, group ID, or room ID).");
60
+ const message = String(args.message ?? "").trim();
61
+ if (!message)
62
+ throw new Error("message is required.");
63
+ const result = await linePost(token, "/message/push", {
64
+ to,
65
+ messages: [{ type: "text", text: message }],
66
+ });
67
+ return {
68
+ success: true,
69
+ to,
70
+ message,
71
+ sentMessages: result.sentMessages ?? [],
72
+ };
73
+ }
74
+ export async function lineSendFlexMessage(args) {
75
+ const token = requireToken(args.channel_access_token);
76
+ const to = String(args.to ?? "").trim();
77
+ if (!to)
78
+ throw new Error("to is required.");
79
+ const altText = String(args.alt_text ?? "").trim();
80
+ if (!altText)
81
+ throw new Error("alt_text is required (fallback text for notifications).");
82
+ let contents;
83
+ if (typeof args.contents === "string") {
84
+ try {
85
+ contents = JSON.parse(args.contents);
86
+ }
87
+ catch {
88
+ throw new Error("contents must be valid JSON (a Flex Message container object).");
89
+ }
90
+ }
91
+ else if (args.contents && typeof args.contents === "object") {
92
+ contents = args.contents;
93
+ }
94
+ else {
95
+ throw new Error("contents is required (Flex Message container as JSON object or string).");
96
+ }
97
+ const result = await linePost(token, "/message/push", {
98
+ to,
99
+ messages: [{ type: "flex", altText, contents }],
100
+ });
101
+ return {
102
+ success: true,
103
+ to,
104
+ alt_text: altText,
105
+ sentMessages: result.sentMessages ?? [],
106
+ };
107
+ }
108
+ export async function lineGetProfile(args) {
109
+ const token = requireToken(args.channel_access_token);
110
+ const userId = String(args.user_id ?? "").trim();
111
+ if (!userId)
112
+ throw new Error("user_id is required.");
113
+ const profile = await lineGet(token, `/profile/${encodeURIComponent(userId)}`);
114
+ return {
115
+ user_id: profile.userId,
116
+ display_name: profile.displayName,
117
+ picture_url: profile.pictureUrl ?? null,
118
+ status_message: profile.statusMessage ?? null,
119
+ };
120
+ }
121
+ export async function lineGetGroupSummary(args) {
122
+ const token = requireToken(args.channel_access_token);
123
+ const groupId = String(args.group_id ?? "").trim();
124
+ if (!groupId)
125
+ throw new Error("group_id is required.");
126
+ const summary = await lineGet(token, `/group/${encodeURIComponent(groupId)}/summary`);
127
+ return {
128
+ group_id: summary.groupId,
129
+ group_name: summary.groupName,
130
+ picture_url: summary.pictureUrl ?? null,
131
+ };
132
+ }
133
+ export async function lineReplyMessage(args) {
134
+ const token = requireToken(args.channel_access_token);
135
+ const replyToken = String(args.reply_token ?? "").trim();
136
+ if (!replyToken)
137
+ throw new Error("reply_token is required (obtained from a webhook event).");
138
+ // messages can be a JSON string array or array of message objects
139
+ let messages;
140
+ if (Array.isArray(args.messages)) {
141
+ messages = args.messages;
142
+ }
143
+ else if (typeof args.messages === "string") {
144
+ try {
145
+ messages = JSON.parse(args.messages);
146
+ }
147
+ catch {
148
+ throw new Error("messages must be a JSON array of message objects.");
149
+ }
150
+ }
151
+ else if (args.message) {
152
+ // Convenience: single text message via 'message' param
153
+ messages = [{ type: "text", text: String(args.message) }];
154
+ }
155
+ else {
156
+ throw new Error("messages is required (array of LINE message objects, max 5).");
157
+ }
158
+ if (!Array.isArray(messages) || messages.length === 0) {
159
+ throw new Error("messages must be a non-empty array.");
160
+ }
161
+ if (messages.length > 5)
162
+ throw new Error("LINE reply allows a maximum of 5 messages.");
163
+ const result = await linePost(token, "/message/reply", {
164
+ replyToken,
165
+ messages,
166
+ });
167
+ return {
168
+ success: true,
169
+ reply_token: replyToken,
170
+ message_count: messages.length,
171
+ sentMessages: result.sentMessages ?? [],
172
+ };
173
+ }
174
+ export async function lineBroadcast(args) {
175
+ const token = requireToken(args.channel_access_token);
176
+ const message = String(args.message ?? "").trim();
177
+ if (!message)
178
+ throw new Error("message is required.");
179
+ await linePost(token, "/message/broadcast", {
180
+ messages: [{ type: "text", text: message }],
181
+ });
182
+ return {
183
+ success: true,
184
+ message,
185
+ note: "Broadcast sent to all users who have followed your LINE Official Account.",
186
+ };
187
+ }
188
+ //# sourceMappingURL=line-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-tool.js","sourceRoot":"","sources":["../src/line-tool.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6EAA6E;AAC7E,sEAAsE;AAEtE,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAqBnD,iFAAiF;AAEjF,KAAK,UAAU,QAAQ,CACrB,KAAa,EACb,IAAY,EACZ,IAA6B;IAE7B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,GAAG,IAAI,EAAE,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,gEAAgE;IAChE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,oCAAoC,CAAC,CAAC;IAE/E,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAI,IAAI,CAAC,OAAkB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAI,IAAI,CAAC,OAAkD;YACrE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACtB,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,KAAa,EACb,IAAY;IAEZ,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,GAAG,IAAI,EAAE,EAAE;QACjD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;KAC9C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAI,IAAI,CAAC,OAAkB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,SAAS,YAAY,CAAC,KAAc;IAClC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IAC3G,OAAO,CAAC,CAAC;AACX,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA6B;IACjE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAmB,KAAK,EAAE,eAAe,EAAE;QACtE,EAAE;QACF,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC5C,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,EAAE;QACF,OAAO;QACP,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IACrE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAEzF,IAAI,QAAiB,CAAC;IACtB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QAC7C,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAAC,CAAC;IAC9F,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9D,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAmB,KAAK,EAAE,eAAe,EAAE;QACtE,EAAE;QACF,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;KAChD,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,EAAE;QACF,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAA6B;IAChE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAc,KAAK,EAAE,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE5F,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,YAAY,EAAE,OAAO,CAAC,WAAW;QACjC,WAAW,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;QACvC,cAAc,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IACrE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAmB,KAAK,EAAE,UAAU,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAExG,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,OAAO;QACzB,UAAU,EAAE,OAAO,CAAC,SAAS;QAC7B,WAAW,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAA6B;IAClE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAE7F,kEAAkE;IAClE,IAAI,QAAmB,CAAC;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QAC7C,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAAC,CAAC;IACjF,CAAC;SAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,uDAAuD;QACvD,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAEvF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAmB,KAAK,EAAE,gBAAgB,EAAE;QACvE,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,QAAQ,CAAC,MAAM;QAC9B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA6B;IAC/D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEtD,MAAM,QAAQ,CAA0B,KAAK,EAAE,oBAAoB,EAAE;QACnE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC5C,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO;QACP,IAAI,EAAE,2EAA2E;KAClF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function linearAction(action: string, args: Record<string, unknown>): Promise<unknown>;
2
+ //# sourceMappingURL=linear-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-tool.d.ts","sourceRoot":"","sources":["../src/linear-tool.ts"],"names":[],"mappings":"AA4KA,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
@@ -0,0 +1,186 @@
1
+ // ── Linear GraphQL API tool ────────────────────────────────────────────────
2
+ // Wraps the Linear GraphQL API (https://api.linear.app/graphql) via fetch.
3
+ // Auth: API key passed as api_key.
4
+ // No external dependencies.
5
+ const LINEAR_API = "https://api.linear.app/graphql";
6
+ // ── GraphQL helper ─────────────────────────────────────────────────────────────
7
+ async function linearQuery(apiKey, query, variables) {
8
+ let response;
9
+ try {
10
+ response = await fetch(LINEAR_API, {
11
+ method: "POST",
12
+ headers: {
13
+ Authorization: apiKey,
14
+ "Content-Type": "application/json",
15
+ "User-Agent": "UnClick-MCP/1.0",
16
+ },
17
+ body: JSON.stringify({ query, variables }),
18
+ });
19
+ }
20
+ catch (err) {
21
+ return { error: `Network error reaching Linear API: ${err instanceof Error ? err.message : String(err)}` };
22
+ }
23
+ const text = await response.text();
24
+ let data;
25
+ try {
26
+ data = JSON.parse(text);
27
+ }
28
+ catch {
29
+ return { error: `Invalid JSON from Linear: ${text}` };
30
+ }
31
+ if (response.status === 401)
32
+ return { error: "Linear API key is invalid. Check your api_key.", status: 401 };
33
+ if (response.status === 429)
34
+ return { error: "Linear rate limit exceeded. Please wait and retry.", status: 429 };
35
+ if (!response.ok) {
36
+ return { error: `Linear API error ${response.status}: ${text}`, status: response.status };
37
+ }
38
+ if (data.errors) {
39
+ const errs = data.errors.map((e) => e.message).join("; ");
40
+ return { error: `Linear GraphQL error: ${errs}` };
41
+ }
42
+ return data.data;
43
+ }
44
+ // ── Action implementations ─────────────────────────────────────────────────────
45
+ async function listIssues(apiKey, args) {
46
+ const first = args.first ? Number(args.first) : 25;
47
+ const teamId = args.team_id ? String(args.team_id) : undefined;
48
+ const stateId = args.state_id ? String(args.state_id) : undefined;
49
+ const filter = {};
50
+ if (teamId)
51
+ filter.team = { id: { eq: teamId } };
52
+ if (stateId)
53
+ filter.state = { id: { eq: stateId } };
54
+ const hasFilter = Object.keys(filter).length > 0;
55
+ return linearQuery(apiKey, `
56
+ query ListIssues($first: Int, $filter: IssueFilter) {
57
+ issues(first: $first, filter: $filter) {
58
+ nodes {
59
+ id
60
+ identifier
61
+ title
62
+ description
63
+ priority
64
+ state { name }
65
+ assignee { name email }
66
+ team { name }
67
+ createdAt
68
+ updatedAt
69
+ url
70
+ }
71
+ }
72
+ }
73
+ `, { first, filter: hasFilter ? filter : undefined });
74
+ }
75
+ async function createIssue(apiKey, args) {
76
+ const title = String(args.title ?? "").trim();
77
+ const teamId = String(args.team_id ?? "").trim();
78
+ if (!title)
79
+ return { error: "title is required." };
80
+ if (!teamId)
81
+ return { error: "team_id is required." };
82
+ const input = { title, teamId };
83
+ if (args.description)
84
+ input.description = String(args.description);
85
+ if (args.priority)
86
+ input.priority = Number(args.priority);
87
+ if (args.assignee_id)
88
+ input.assigneeId = String(args.assignee_id);
89
+ if (args.state_id)
90
+ input.stateId = String(args.state_id);
91
+ return linearQuery(apiKey, `
92
+ mutation CreateIssue($input: IssueCreateInput!) {
93
+ issueCreate(input: $input) {
94
+ success
95
+ issue {
96
+ id
97
+ identifier
98
+ title
99
+ url
100
+ state { name }
101
+ }
102
+ }
103
+ }
104
+ `, { input });
105
+ }
106
+ async function getProject(apiKey, args) {
107
+ const id = String(args.project_id ?? "").trim();
108
+ if (!id)
109
+ return { error: "project_id is required." };
110
+ return linearQuery(apiKey, `
111
+ query GetProject($id: String!) {
112
+ project(id: $id) {
113
+ id
114
+ name
115
+ description
116
+ state
117
+ progress
118
+ startDate
119
+ targetDate
120
+ url
121
+ teams { nodes { id name } }
122
+ }
123
+ }
124
+ `, { id });
125
+ }
126
+ async function listTeams(apiKey) {
127
+ return linearQuery(apiKey, `
128
+ query ListTeams {
129
+ teams {
130
+ nodes {
131
+ id
132
+ name
133
+ description
134
+ key
135
+ timezone
136
+ }
137
+ }
138
+ }
139
+ `);
140
+ }
141
+ async function searchIssues(apiKey, args) {
142
+ const term = String(args.query ?? "").trim();
143
+ const first = args.first ? Number(args.first) : 25;
144
+ if (!term)
145
+ return { error: "query is required." };
146
+ return linearQuery(apiKey, `
147
+ query SearchIssues($term: String!, $first: Int) {
148
+ issueSearch(term: $term, first: $first) {
149
+ nodes {
150
+ id
151
+ identifier
152
+ title
153
+ description
154
+ priority
155
+ state { name }
156
+ assignee { name }
157
+ team { name }
158
+ url
159
+ }
160
+ }
161
+ }
162
+ `, { term, first });
163
+ }
164
+ // ── Public dispatcher ──────────────────────────────────────────────────────────
165
+ export async function linearAction(action, args) {
166
+ const apiKey = String(args.api_key ?? "").trim();
167
+ if (!apiKey)
168
+ return { error: "api_key is required." };
169
+ try {
170
+ switch (action) {
171
+ case "list_issues": return listIssues(apiKey, args);
172
+ case "create_issue": return createIssue(apiKey, args);
173
+ case "get_project": return getProject(apiKey, args);
174
+ case "list_teams": return listTeams(apiKey);
175
+ case "search_issues": return searchIssues(apiKey, args);
176
+ default:
177
+ return {
178
+ error: `Unknown Linear action: "${action}". Valid actions: list_issues, create_issue, get_project, list_teams, search_issues.`,
179
+ };
180
+ }
181
+ }
182
+ catch (err) {
183
+ return { error: err instanceof Error ? err.message : String(err) };
184
+ }
185
+ }
186
+ //# sourceMappingURL=linear-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-tool.js","sourceRoot":"","sources":["../src/linear-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function listMondayBoards(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function getMondayBoard(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function listMondayItems(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function createMondayItem(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function updateMondayItem(args: Record<string, unknown>): Promise<unknown>;
6
+ export declare function searchMondayItems(args: Record<string, unknown>): Promise<unknown>;
7
+ //# sourceMappingURL=monday-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monday-tool.d.ts","sourceRoot":"","sources":["../src/monday-tool.ts"],"names":[],"mappings":"AA0CA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBtF;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBpF;AAGD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BrF;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BtF;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BtF;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBvF"}
@@ -0,0 +1,206 @@
1
+ // Monday.com project management API.
2
+ // Docs: https://developer.monday.com/api-reference/docs
3
+ // Auth: MONDAY_API_KEY (Bearer token)
4
+ // Base: https://api.monday.com/v2 (GraphQL)
5
+ const MONDAY_BASE = "https://api.monday.com/v2";
6
+ function getApiKey(args) {
7
+ const key = String(args.api_key ?? process.env.MONDAY_API_KEY ?? "").trim();
8
+ if (!key)
9
+ throw new Error("api_key is required (or set MONDAY_API_KEY env var).");
10
+ return key;
11
+ }
12
+ async function mondayQuery(apiKey, query, variables) {
13
+ const res = await fetch(MONDAY_BASE, {
14
+ method: "POST",
15
+ headers: {
16
+ Authorization: `Bearer ${apiKey}`,
17
+ "Content-Type": "application/json",
18
+ "API-Version": "2024-01",
19
+ },
20
+ body: JSON.stringify({ query, variables }),
21
+ });
22
+ if (res.status === 401)
23
+ throw new Error("Invalid Monday.com API key.");
24
+ if (res.status === 429)
25
+ throw new Error("Monday.com rate limit exceeded.");
26
+ if (!res.ok) {
27
+ const body = await res.text().catch(() => "");
28
+ throw new Error(`Monday.com HTTP ${res.status}: ${body || res.statusText}`);
29
+ }
30
+ const json = await res.json();
31
+ if (json.errors) {
32
+ const msgs = json.errors.map((e) => e.message).join("; ");
33
+ throw new Error(`Monday.com GraphQL error: ${msgs}`);
34
+ }
35
+ return json.data;
36
+ }
37
+ // list_monday_boards
38
+ export async function listMondayBoards(args) {
39
+ try {
40
+ const apiKey = getApiKey(args);
41
+ const limit = Number(args.limit ?? 25);
42
+ const query = `
43
+ query($limit: Int) {
44
+ boards(limit: $limit) {
45
+ id name description state board_kind
46
+ columns { id title type }
47
+ }
48
+ }
49
+ `;
50
+ const data = await mondayQuery(apiKey, query, { limit });
51
+ const boards = (data.boards ?? []);
52
+ return { count: boards.length, boards };
53
+ }
54
+ catch (err) {
55
+ return { error: err instanceof Error ? err.message : String(err) };
56
+ }
57
+ }
58
+ // get_monday_board
59
+ export async function getMondayBoard(args) {
60
+ try {
61
+ const apiKey = getApiKey(args);
62
+ const boardId = String(args.board_id ?? "").trim();
63
+ if (!boardId)
64
+ return { error: "board_id is required." };
65
+ const query = `
66
+ query($ids: [ID!]) {
67
+ boards(ids: $ids) {
68
+ id name description state board_kind
69
+ columns { id title type }
70
+ groups { id title color }
71
+ }
72
+ }
73
+ `;
74
+ const data = await mondayQuery(apiKey, query, { ids: [boardId] });
75
+ const boards = (data.boards ?? []);
76
+ return boards[0] ?? { error: "Board not found." };
77
+ }
78
+ catch (err) {
79
+ return { error: err instanceof Error ? err.message : String(err) };
80
+ }
81
+ }
82
+ // list_monday_items
83
+ export async function listMondayItems(args) {
84
+ try {
85
+ const apiKey = getApiKey(args);
86
+ const boardId = String(args.board_id ?? "").trim();
87
+ if (!boardId)
88
+ return { error: "board_id is required." };
89
+ const limit = Number(args.limit ?? 50);
90
+ const query = `
91
+ query($ids: [ID!], $limit: Int) {
92
+ boards(ids: $ids) {
93
+ items_page(limit: $limit) {
94
+ items {
95
+ id name state created_at updated_at
96
+ column_values { id text value }
97
+ group { id title }
98
+ }
99
+ }
100
+ }
101
+ }
102
+ `;
103
+ const data = await mondayQuery(apiKey, query, { ids: [boardId], limit });
104
+ const boards = (data.boards ?? []);
105
+ const board = boards[0];
106
+ const items = (board?.items_page?.items ?? []);
107
+ return { count: items.length, items };
108
+ }
109
+ catch (err) {
110
+ return { error: err instanceof Error ? err.message : String(err) };
111
+ }
112
+ }
113
+ // create_monday_item
114
+ export async function createMondayItem(args) {
115
+ try {
116
+ const apiKey = getApiKey(args);
117
+ const boardId = String(args.board_id ?? "").trim();
118
+ if (!boardId)
119
+ return { error: "board_id is required." };
120
+ const itemName = String(args.item_name ?? "").trim();
121
+ if (!itemName)
122
+ return { error: "item_name is required." };
123
+ const mutation = `
124
+ mutation($board_id: ID!, $item_name: String!, $group_id: String, $column_values: JSON) {
125
+ create_item(board_id: $board_id, item_name: $item_name, group_id: $group_id, column_values: $column_values) {
126
+ id name state created_at
127
+ }
128
+ }
129
+ `;
130
+ const variables = { board_id: boardId, item_name: itemName };
131
+ if (args.group_id)
132
+ variables.group_id = String(args.group_id);
133
+ if (args.column_values)
134
+ variables.column_values = typeof args.column_values === "string"
135
+ ? args.column_values
136
+ : JSON.stringify(args.column_values);
137
+ const data = await mondayQuery(apiKey, mutation, variables);
138
+ return data.create_item;
139
+ }
140
+ catch (err) {
141
+ return { error: err instanceof Error ? err.message : String(err) };
142
+ }
143
+ }
144
+ // update_monday_item
145
+ export async function updateMondayItem(args) {
146
+ try {
147
+ const apiKey = getApiKey(args);
148
+ const boardId = String(args.board_id ?? "").trim();
149
+ if (!boardId)
150
+ return { error: "board_id is required." };
151
+ const itemId = String(args.item_id ?? "").trim();
152
+ if (!itemId)
153
+ return { error: "item_id is required." };
154
+ const columnId = String(args.column_id ?? "").trim();
155
+ if (!columnId)
156
+ return { error: "column_id is required." };
157
+ const value = args.value;
158
+ if (value === undefined)
159
+ return { error: "value is required." };
160
+ const mutation = `
161
+ mutation($board_id: ID!, $item_id: ID!, $column_id: String!, $value: JSON!) {
162
+ change_column_value(board_id: $board_id, item_id: $item_id, column_id: $column_id, value: $value) {
163
+ id name
164
+ }
165
+ }
166
+ `;
167
+ const data = await mondayQuery(apiKey, mutation, {
168
+ board_id: boardId,
169
+ item_id: itemId,
170
+ column_id: columnId,
171
+ value: typeof value === "string" ? value : JSON.stringify(value),
172
+ });
173
+ return data.change_column_value;
174
+ }
175
+ catch (err) {
176
+ return { error: err instanceof Error ? err.message : String(err) };
177
+ }
178
+ }
179
+ // search_monday_items
180
+ export async function searchMondayItems(args) {
181
+ try {
182
+ const apiKey = getApiKey(args);
183
+ const boardId = String(args.board_id ?? "").trim();
184
+ if (!boardId)
185
+ return { error: "board_id is required." };
186
+ const query_text = String(args.query ?? "").trim();
187
+ if (!query_text)
188
+ return { error: "query is required." };
189
+ const limit = Number(args.limit ?? 25);
190
+ const query = `
191
+ query($board_id: ID!, $query: String!, $limit: Int) {
192
+ items_by_multiple_column_values(board_id: $board_id, limit: $limit, column_id: "name", column_values: [$query]) {
193
+ id name state created_at updated_at
194
+ column_values { id text value }
195
+ }
196
+ }
197
+ `;
198
+ const data = await mondayQuery(apiKey, query, { board_id: boardId, query: query_text, limit });
199
+ const items = (data.items_by_multiple_column_values ?? []);
200
+ return { count: items.length, items };
201
+ }
202
+ catch (err) {
203
+ return { error: err instanceof Error ? err.message : String(err) };
204
+ }
205
+ }
206
+ //# sourceMappingURL=monday-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monday-tool.js","sourceRoot":"","sources":["../src/monday-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function openaiChatCompletion(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function openaiCreateEmbedding(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function openaiGenerateImage(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function openaiCreateTranscription(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function openaiListModels(args: Record<string, unknown>): Promise<unknown>;
6
+ //# sourceMappingURL=openai-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-tool.d.ts","sourceRoot":"","sources":["../src/openai-tool.ts"],"names":[],"mappings":"AA0GA,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA8C1F;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B3F;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBzF;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkD/F;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBtF"}