@hasna/connectors 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 (324) hide show
  1. package/README.md +5 -3
  2. package/bin/index.js +1073 -47
  3. package/bin/mcp.js +161 -6
  4. package/bin/serve.js +379 -9
  5. package/connectors/connect-anthropic/AGENTS.md +1 -1
  6. package/connectors/connect-anthropic/CLAUDE.md +1 -1
  7. package/connectors/connect-anthropic/GEMINI.md +1 -1
  8. package/connectors/connect-anthropic/README.md +2 -2
  9. package/connectors/connect-anthropic/src/utils/config.ts +2 -2
  10. package/connectors/connect-aws/AGENTS.md +2 -2
  11. package/connectors/connect-aws/CLAUDE.md +2 -2
  12. package/connectors/connect-aws/GEMINI.md +2 -2
  13. package/connectors/connect-aws/README.md +2 -2
  14. package/connectors/connect-aws/src/utils/config.ts +2 -2
  15. package/connectors/connect-brandsight/AGENTS.md +2 -2
  16. package/connectors/connect-brandsight/CLAUDE.md +2 -2
  17. package/connectors/connect-brandsight/GEMINI.md +2 -2
  18. package/connectors/connect-brandsight/README.md +3 -3
  19. package/connectors/connect-brandsight/src/utils/config.ts +1 -1
  20. package/connectors/connect-brandsight/src/utils/contacts.ts +1 -1
  21. package/connectors/connect-cloudflare/AGENTS.md +1 -1
  22. package/connectors/connect-cloudflare/CLAUDE.md +1 -1
  23. package/connectors/connect-cloudflare/GEMINI.md +1 -1
  24. package/connectors/connect-cloudflare/README.md +2 -2
  25. package/connectors/connect-cloudflare/src/utils/config.ts +2 -2
  26. package/connectors/connect-discord/AGENTS.md +2 -2
  27. package/connectors/connect-discord/CLAUDE.md +2 -2
  28. package/connectors/connect-discord/GEMINI.md +2 -2
  29. package/connectors/connect-discord/README.md +2 -2
  30. package/connectors/connect-discord/src/utils/config.ts +2 -2
  31. package/connectors/connect-docker/AGENTS.md +2 -2
  32. package/connectors/connect-docker/CLAUDE.md +2 -2
  33. package/connectors/connect-docker/GEMINI.md +2 -2
  34. package/connectors/connect-docker/README.md +2 -2
  35. package/connectors/connect-docker/src/utils/config.ts +2 -2
  36. package/connectors/connect-e2b/AGENTS.md +1 -1
  37. package/connectors/connect-e2b/CLAUDE.md +1 -1
  38. package/connectors/connect-e2b/GEMINI.md +1 -1
  39. package/connectors/connect-e2b/README.md +2 -2
  40. package/connectors/connect-e2b/src/utils/config.ts +2 -2
  41. package/connectors/connect-elevenlabs/AGENTS.md +1 -1
  42. package/connectors/connect-elevenlabs/CLAUDE.md +1 -1
  43. package/connectors/connect-elevenlabs/GEMINI.md +1 -1
  44. package/connectors/connect-elevenlabs/README.md +2 -2
  45. package/connectors/connect-elevenlabs/src/utils/config.ts +2 -2
  46. package/connectors/connect-exa/AGENTS.md +1 -1
  47. package/connectors/connect-exa/CLAUDE.md +1 -1
  48. package/connectors/connect-exa/GEMINI.md +1 -1
  49. package/connectors/connect-exa/README.md +2 -2
  50. package/connectors/connect-exa/src/utils/config.ts +2 -2
  51. package/connectors/connect-figma/AGENTS.md +2 -2
  52. package/connectors/connect-figma/CLAUDE.md +2 -2
  53. package/connectors/connect-figma/GEMINI.md +2 -2
  54. package/connectors/connect-figma/README.md +2 -2
  55. package/connectors/connect-figma/src/utils/config.ts +2 -2
  56. package/connectors/connect-firecrawl/AGENTS.md +1 -1
  57. package/connectors/connect-firecrawl/CLAUDE.md +1 -1
  58. package/connectors/connect-firecrawl/GEMINI.md +1 -1
  59. package/connectors/connect-firecrawl/README.md +2 -2
  60. package/connectors/connect-firecrawl/src/utils/config.ts +2 -2
  61. package/connectors/connect-github/AGENTS.md +2 -2
  62. package/connectors/connect-github/CLAUDE.md +2 -2
  63. package/connectors/connect-github/GEMINI.md +2 -2
  64. package/connectors/connect-github/README.md +2 -2
  65. package/connectors/connect-github/src/utils/config.ts +2 -2
  66. package/connectors/connect-gmail/AGENTS.md +2 -2
  67. package/connectors/connect-gmail/CLAUDE.md +2 -2
  68. package/connectors/connect-gmail/GEMINI.md +2 -2
  69. package/connectors/connect-gmail/README.md +2 -2
  70. package/connectors/connect-gmail/src/utils/config.ts +2 -2
  71. package/connectors/connect-google/AGENTS.md +1 -1
  72. package/connectors/connect-google/CLAUDE.md +1 -1
  73. package/connectors/connect-google/GEMINI.md +1 -1
  74. package/connectors/connect-google/README.md +2 -2
  75. package/connectors/connect-google/src/utils/config.ts +2 -2
  76. package/connectors/connect-googlecalendar/AGENTS.md +2 -2
  77. package/connectors/connect-googlecalendar/CLAUDE.md +2 -2
  78. package/connectors/connect-googlecalendar/GEMINI.md +2 -2
  79. package/connectors/connect-googlecalendar/README.md +2 -2
  80. package/connectors/connect-googlecalendar/src/utils/config.ts +2 -2
  81. package/connectors/connect-googlecloud/AGENTS.md +2 -2
  82. package/connectors/connect-googlecloud/CLAUDE.md +2 -2
  83. package/connectors/connect-googlecloud/GEMINI.md +2 -2
  84. package/connectors/connect-googlecloud/README.md +2 -2
  85. package/connectors/connect-googlecloud/src/utils/config.ts +2 -2
  86. package/connectors/connect-googlecontacts/AGENTS.md +4 -4
  87. package/connectors/connect-googlecontacts/CLAUDE.md +4 -4
  88. package/connectors/connect-googlecontacts/GEMINI.md +4 -4
  89. package/connectors/connect-googlecontacts/README.md +2 -2
  90. package/connectors/connect-googlecontacts/src/utils/config.ts +2 -2
  91. package/connectors/connect-googledocs/AGENTS.md +1 -1
  92. package/connectors/connect-googledocs/CLAUDE.md +1 -1
  93. package/connectors/connect-googledocs/GEMINI.md +1 -1
  94. package/connectors/connect-googledocs/README.md +2 -2
  95. package/connectors/connect-googledocs/src/utils/config.ts +2 -2
  96. package/connectors/connect-googledrive/AGENTS.md +1 -1
  97. package/connectors/connect-googledrive/CLAUDE.md +6 -6
  98. package/connectors/connect-googledrive/GEMINI.md +1 -1
  99. package/connectors/connect-googledrive/README.md +2 -2
  100. package/connectors/connect-googledrive/src/utils/config.ts +2 -2
  101. package/connectors/connect-googlegemini/AGENTS.md +2 -2
  102. package/connectors/connect-googlegemini/CLAUDE.md +2 -2
  103. package/connectors/connect-googlegemini/GEMINI.md +2 -2
  104. package/connectors/connect-googlegemini/README.md +2 -2
  105. package/connectors/connect-googlegemini/src/utils/config.ts +1 -1
  106. package/connectors/connect-googlemaps/AGENTS.md +1 -1
  107. package/connectors/connect-googlemaps/CLAUDE.md +1 -1
  108. package/connectors/connect-googlemaps/GEMINI.md +1 -1
  109. package/connectors/connect-googlemaps/README.md +2 -2
  110. package/connectors/connect-googlemaps/package.json +1 -0
  111. package/connectors/connect-googlemaps/src/utils/config.ts +1 -1
  112. package/connectors/connect-googlesheets/AGENTS.md +1 -1
  113. package/connectors/connect-googlesheets/CLAUDE.md +1 -1
  114. package/connectors/connect-googlesheets/GEMINI.md +1 -1
  115. package/connectors/connect-googlesheets/README.md +2 -2
  116. package/connectors/connect-googlesheets/src/utils/config.ts +2 -2
  117. package/connectors/connect-googletasks/AGENTS.md +1 -1
  118. package/connectors/connect-googletasks/CLAUDE.md +1 -1
  119. package/connectors/connect-googletasks/GEMINI.md +1 -1
  120. package/connectors/connect-googletasks/README.md +2 -2
  121. package/connectors/connect-googletasks/src/utils/config.ts +1 -1
  122. package/connectors/connect-hedra/AGENTS.md +2 -2
  123. package/connectors/connect-hedra/CLAUDE.md +2 -2
  124. package/connectors/connect-hedra/GEMINI.md +2 -2
  125. package/connectors/connect-hedra/README.md +2 -2
  126. package/connectors/connect-hedra/src/utils/config.ts +2 -2
  127. package/connectors/connect-heygen/AGENTS.md +2 -2
  128. package/connectors/connect-heygen/CLAUDE.md +2 -2
  129. package/connectors/connect-heygen/GEMINI.md +2 -2
  130. package/connectors/connect-heygen/README.md +2 -2
  131. package/connectors/connect-heygen/src/utils/config.ts +2 -2
  132. package/connectors/connect-huggingface/AGENTS.md +2 -2
  133. package/connectors/connect-huggingface/CLAUDE.md +2 -2
  134. package/connectors/connect-huggingface/GEMINI.md +2 -2
  135. package/connectors/connect-huggingface/README.md +2 -2
  136. package/connectors/connect-huggingface/src/utils/config.ts +2 -2
  137. package/connectors/connect-icons8/AGENTS.md +2 -2
  138. package/connectors/connect-icons8/CLAUDE.md +2 -2
  139. package/connectors/connect-icons8/GEMINI.md +2 -2
  140. package/connectors/connect-icons8/README.md +2 -2
  141. package/connectors/connect-icons8/src/utils/config.ts +2 -2
  142. package/connectors/connect-maropost/AGENTS.md +1 -1
  143. package/connectors/connect-maropost/CLAUDE.md +1 -1
  144. package/connectors/connect-maropost/GEMINI.md +1 -1
  145. package/connectors/connect-maropost/README.md +2 -2
  146. package/connectors/connect-maropost/src/utils/config.ts +2 -2
  147. package/connectors/connect-mercury/AGENTS.md +1 -1
  148. package/connectors/connect-mercury/CLAUDE.md +1 -1
  149. package/connectors/connect-mercury/GEMINI.md +1 -1
  150. package/connectors/connect-mercury/README.md +2 -2
  151. package/connectors/connect-mercury/src/utils/config.ts +2 -2
  152. package/connectors/connect-meta/AGENTS.md +1 -1
  153. package/connectors/connect-meta/CLAUDE.md +1 -1
  154. package/connectors/connect-meta/GEMINI.md +1 -1
  155. package/connectors/connect-meta/README.md +2 -2
  156. package/connectors/connect-meta/src/utils/config.ts +2 -2
  157. package/connectors/connect-midjourney/AGENTS.md +2 -2
  158. package/connectors/connect-midjourney/CLAUDE.md +2 -2
  159. package/connectors/connect-midjourney/GEMINI.md +2 -2
  160. package/connectors/connect-midjourney/README.md +2 -2
  161. package/connectors/connect-midjourney/src/utils/config.ts +2 -2
  162. package/connectors/connect-mistral/AGENTS.md +1 -1
  163. package/connectors/connect-mistral/CLAUDE.md +1 -1
  164. package/connectors/connect-mistral/GEMINI.md +1 -1
  165. package/connectors/connect-mistral/README.md +2 -2
  166. package/connectors/connect-mistral/src/utils/config.ts +2 -2
  167. package/connectors/connect-mixpanel/AGENTS.md +2 -2
  168. package/connectors/connect-mixpanel/CLAUDE.md +2 -2
  169. package/connectors/connect-mixpanel/GEMINI.md +2 -2
  170. package/connectors/connect-mixpanel/README.md +2 -2
  171. package/connectors/connect-mixpanel/src/utils/config.ts +2 -2
  172. package/connectors/connect-notion/CLAUDE.md +2 -2
  173. package/connectors/connect-notion/src/utils/config.ts +2 -2
  174. package/connectors/connect-openai/AGENTS.md +1 -1
  175. package/connectors/connect-openai/CLAUDE.md +1 -1
  176. package/connectors/connect-openai/GEMINI.md +1 -1
  177. package/connectors/connect-openai/README.md +2 -2
  178. package/connectors/connect-openai/src/utils/config.ts +2 -2
  179. package/connectors/connect-openweathermap/AGENTS.md +1 -1
  180. package/connectors/connect-openweathermap/CLAUDE.md +1 -1
  181. package/connectors/connect-openweathermap/GEMINI.md +1 -1
  182. package/connectors/connect-openweathermap/README.md +2 -2
  183. package/connectors/connect-openweathermap/src/utils/config.ts +1 -1
  184. package/connectors/connect-pandadoc/AGENTS.md +1 -1
  185. package/connectors/connect-pandadoc/CLAUDE.md +1 -1
  186. package/connectors/connect-pandadoc/GEMINI.md +1 -1
  187. package/connectors/connect-pandadoc/README.md +2 -2
  188. package/connectors/connect-pandadoc/src/utils/config.ts +2 -2
  189. package/connectors/connect-quo/AGENTS.md +1 -1
  190. package/connectors/connect-quo/CLAUDE.md +1 -1
  191. package/connectors/connect-quo/GEMINI.md +1 -1
  192. package/connectors/connect-quo/README.md +2 -2
  193. package/connectors/connect-quo/src/utils/config.ts +2 -2
  194. package/connectors/connect-reddit/AGENTS.md +2 -2
  195. package/connectors/connect-reddit/CLAUDE.md +2 -2
  196. package/connectors/connect-reddit/GEMINI.md +2 -2
  197. package/connectors/connect-reddit/README.md +2 -2
  198. package/connectors/connect-reddit/src/utils/config.ts +2 -2
  199. package/connectors/connect-reducto/AGENTS.md +1 -1
  200. package/connectors/connect-reducto/CLAUDE.md +1 -1
  201. package/connectors/connect-reducto/GEMINI.md +1 -1
  202. package/connectors/connect-reducto/README.md +2 -2
  203. package/connectors/connect-reducto/src/utils/config.ts +1 -1
  204. package/connectors/connect-resend/AGENTS.md +1 -1
  205. package/connectors/connect-resend/CLAUDE.md +1 -1
  206. package/connectors/connect-resend/GEMINI.md +1 -1
  207. package/connectors/connect-resend/README.md +2 -2
  208. package/connectors/connect-resend/src/utils/config.ts +2 -2
  209. package/connectors/connect-revolut/AGENTS.md +2 -2
  210. package/connectors/connect-revolut/CLAUDE.md +2 -2
  211. package/connectors/connect-revolut/GEMINI.md +2 -2
  212. package/connectors/connect-revolut/README.md +2 -2
  213. package/connectors/connect-revolut/src/utils/config.ts +2 -2
  214. package/connectors/connect-sedo/AGENTS.md +1 -1
  215. package/connectors/connect-sedo/CLAUDE.md +1 -1
  216. package/connectors/connect-sedo/GEMINI.md +1 -1
  217. package/connectors/connect-sedo/README.md +2 -2
  218. package/connectors/connect-sedo/src/utils/config.ts +1 -1
  219. package/connectors/connect-sentry/AGENTS.md +2 -2
  220. package/connectors/connect-sentry/CLAUDE.md +2 -2
  221. package/connectors/connect-sentry/GEMINI.md +2 -2
  222. package/connectors/connect-sentry/README.md +2 -2
  223. package/connectors/connect-sentry/src/utils/config.ts +2 -2
  224. package/connectors/connect-shadcn/AGENTS.md +2 -2
  225. package/connectors/connect-shadcn/CLAUDE.md +2 -2
  226. package/connectors/connect-shadcn/GEMINI.md +2 -2
  227. package/connectors/connect-shadcn/README.md +2 -2
  228. package/connectors/connect-shadcn/src/utils/config.ts +2 -2
  229. package/connectors/connect-shopify/AGENTS.md +2 -2
  230. package/connectors/connect-shopify/CLAUDE.md +2 -2
  231. package/connectors/connect-shopify/GEMINI.md +2 -2
  232. package/connectors/connect-shopify/README.md +2 -2
  233. package/connectors/connect-shopify/package.json +1 -0
  234. package/connectors/connect-shopify/src/utils/config.ts +2 -2
  235. package/connectors/connect-snap/AGENTS.md +1 -1
  236. package/connectors/connect-snap/CLAUDE.md +1 -1
  237. package/connectors/connect-snap/GEMINI.md +1 -1
  238. package/connectors/connect-snap/README.md +2 -2
  239. package/connectors/connect-snap/src/utils/config.ts +2 -2
  240. package/connectors/connect-stabilityai/AGENTS.md +1 -1
  241. package/connectors/connect-stabilityai/CLAUDE.md +1 -1
  242. package/connectors/connect-stabilityai/GEMINI.md +1 -1
  243. package/connectors/connect-stabilityai/README.md +2 -2
  244. package/connectors/connect-stabilityai/src/utils/config.ts +2 -2
  245. package/connectors/connect-stripe/AGENTS.md +2 -2
  246. package/connectors/connect-stripe/CLAUDE.md +2 -2
  247. package/connectors/connect-stripe/GEMINI.md +2 -2
  248. package/connectors/connect-stripe/README.md +2 -2
  249. package/connectors/connect-stripe/src/utils/config.ts +2 -2
  250. package/connectors/connect-stripeatlas/AGENTS.md +2 -2
  251. package/connectors/connect-stripeatlas/CLAUDE.md +2 -2
  252. package/connectors/connect-stripeatlas/GEMINI.md +2 -2
  253. package/connectors/connect-stripeatlas/README.md +2 -2
  254. package/connectors/connect-stripeatlas/src/utils/config.ts +2 -2
  255. package/connectors/connect-substack/AGENTS.md +2 -2
  256. package/connectors/connect-substack/CLAUDE.md +2 -2
  257. package/connectors/connect-substack/GEMINI.md +2 -2
  258. package/connectors/connect-substack/README.md +2 -2
  259. package/connectors/connect-substack/src/utils/config.ts +2 -2
  260. package/connectors/connect-tiktok/AGENTS.md +1 -1
  261. package/connectors/connect-tiktok/CLAUDE.md +1 -1
  262. package/connectors/connect-tiktok/GEMINI.md +1 -1
  263. package/connectors/connect-tiktok/README.md +2 -2
  264. package/connectors/connect-tiktok/src/utils/config.ts +2 -2
  265. package/connectors/connect-tinker/AGENTS.md +2 -2
  266. package/connectors/connect-tinker/CLAUDE.md +2 -2
  267. package/connectors/connect-tinker/GEMINI.md +2 -2
  268. package/connectors/connect-tinker/README.md +2 -2
  269. package/connectors/connect-tinker/src/utils/config.ts +2 -2
  270. package/connectors/connect-twilio/AGENTS.md +1 -1
  271. package/connectors/connect-twilio/CLAUDE.md +1 -1
  272. package/connectors/connect-twilio/GEMINI.md +1 -1
  273. package/connectors/connect-twilio/README.md +2 -2
  274. package/connectors/connect-twilio/src/utils/config.ts +3 -3
  275. package/connectors/connect-uspto/AGENTS.md +1 -1
  276. package/connectors/connect-uspto/CLAUDE.md +1 -1
  277. package/connectors/connect-uspto/GEMINI.md +1 -1
  278. package/connectors/connect-uspto/README.md +2 -2
  279. package/connectors/connect-uspto/src/utils/config.ts +2 -2
  280. package/connectors/connect-webflow/AGENTS.md +2 -2
  281. package/connectors/connect-webflow/CLAUDE.md +2 -2
  282. package/connectors/connect-webflow/GEMINI.md +2 -2
  283. package/connectors/connect-webflow/README.md +2 -2
  284. package/connectors/connect-webflow/package.json +1 -0
  285. package/connectors/connect-webflow/src/utils/config.ts +2 -2
  286. package/connectors/connect-wix/AGENTS.md +2 -2
  287. package/connectors/connect-wix/CLAUDE.md +2 -2
  288. package/connectors/connect-wix/GEMINI.md +2 -2
  289. package/connectors/connect-wix/README.md +2 -2
  290. package/connectors/connect-wix/package.json +1 -0
  291. package/connectors/connect-wix/src/utils/config.ts +2 -2
  292. package/connectors/connect-x/AGENTS.md +1 -1
  293. package/connectors/connect-x/CLAUDE.md +1 -1
  294. package/connectors/connect-x/GEMINI.md +1 -1
  295. package/connectors/connect-x/README.md +2 -2
  296. package/connectors/connect-x/src/utils/config.ts +2 -2
  297. package/connectors/connect-xads/AGENTS.md +2 -2
  298. package/connectors/connect-xads/CLAUDE.md +2 -2
  299. package/connectors/connect-xads/GEMINI.md +2 -2
  300. package/connectors/connect-xads/README.md +2 -2
  301. package/connectors/connect-xads/src/utils/config.ts +1 -1
  302. package/connectors/connect-xai/AGENTS.md +1 -1
  303. package/connectors/connect-xai/CLAUDE.md +1 -1
  304. package/connectors/connect-xai/GEMINI.md +1 -1
  305. package/connectors/connect-xai/README.md +2 -2
  306. package/connectors/connect-xai/src/utils/config.ts +2 -2
  307. package/connectors/connect-youtube/AGENTS.md +1 -1
  308. package/connectors/connect-youtube/CLAUDE.md +1 -1
  309. package/connectors/connect-youtube/GEMINI.md +1 -1
  310. package/connectors/connect-youtube/README.md +2 -2
  311. package/connectors/connect-youtube/src/utils/config.ts +2 -2
  312. package/connectors/connect-zoom/AGENTS.md +2 -2
  313. package/connectors/connect-zoom/CLAUDE.md +2 -2
  314. package/connectors/connect-zoom/GEMINI.md +2 -2
  315. package/connectors/connect-zoom/README.md +2 -2
  316. package/connectors/connect-zoom/src/utils/config.ts +2 -2
  317. package/dashboard/dist/assets/index-DmR_QNtT.css +1 -0
  318. package/dashboard/dist/assets/index-Dp-apHbC.js +284 -0
  319. package/dashboard/dist/index.html +2 -2
  320. package/dist/server/auth.d.ts +20 -0
  321. package/dist/server/serve.d.ts +1 -1
  322. package/package.json +5 -1
  323. package/dashboard/dist/assets/index-BZZ_709y.css +0 -1
  324. package/dashboard/dist/assets/index-CBroKWCD.js +0 -234
package/bin/mcp.js CHANGED
@@ -6286,7 +6286,7 @@ var require_formats = __commonJS((exports) => {
6286
6286
  }
6287
6287
  var TIME = /^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;
6288
6288
  function getTime(strictTimeZone) {
6289
- return function time3(str) {
6289
+ return function time(str) {
6290
6290
  const matches = TIME.exec(str);
6291
6291
  if (!matches)
6292
6292
  return false;
@@ -18120,6 +18120,62 @@ class ExperimentalServerTasks {
18120
18120
  requestStream(request, resultSchema, options) {
18121
18121
  return this._server.requestStream(request, resultSchema, options);
18122
18122
  }
18123
+ createMessageStream(params, options) {
18124
+ const clientCapabilities = this._server.getClientCapabilities();
18125
+ if ((params.tools || params.toolChoice) && !clientCapabilities?.sampling?.tools) {
18126
+ throw new Error("Client does not support sampling tools capability.");
18127
+ }
18128
+ if (params.messages.length > 0) {
18129
+ const lastMessage = params.messages[params.messages.length - 1];
18130
+ const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content];
18131
+ const hasToolResults = lastContent.some((c) => c.type === "tool_result");
18132
+ const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : undefined;
18133
+ const previousContent = previousMessage ? Array.isArray(previousMessage.content) ? previousMessage.content : [previousMessage.content] : [];
18134
+ const hasPreviousToolUse = previousContent.some((c) => c.type === "tool_use");
18135
+ if (hasToolResults) {
18136
+ if (lastContent.some((c) => c.type !== "tool_result")) {
18137
+ throw new Error("The last message must contain only tool_result content if any is present");
18138
+ }
18139
+ if (!hasPreviousToolUse) {
18140
+ throw new Error("tool_result blocks are not matching any tool_use from the previous message");
18141
+ }
18142
+ }
18143
+ if (hasPreviousToolUse) {
18144
+ const toolUseIds = new Set(previousContent.filter((c) => c.type === "tool_use").map((c) => c.id));
18145
+ const toolResultIds = new Set(lastContent.filter((c) => c.type === "tool_result").map((c) => c.toolUseId));
18146
+ if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every((id) => toolResultIds.has(id))) {
18147
+ throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match");
18148
+ }
18149
+ }
18150
+ }
18151
+ return this.requestStream({
18152
+ method: "sampling/createMessage",
18153
+ params
18154
+ }, CreateMessageResultSchema, options);
18155
+ }
18156
+ elicitInputStream(params, options) {
18157
+ const clientCapabilities = this._server.getClientCapabilities();
18158
+ const mode = params.mode ?? "form";
18159
+ switch (mode) {
18160
+ case "url": {
18161
+ if (!clientCapabilities?.elicitation?.url) {
18162
+ throw new Error("Client does not support url elicitation.");
18163
+ }
18164
+ break;
18165
+ }
18166
+ case "form": {
18167
+ if (!clientCapabilities?.elicitation?.form) {
18168
+ throw new Error("Client does not support form elicitation.");
18169
+ }
18170
+ break;
18171
+ }
18172
+ }
18173
+ const normalizedParams = mode === "form" && params.mode === undefined ? { ...params, mode: "form" } : params;
18174
+ return this.requestStream({
18175
+ method: "elicitation/create",
18176
+ params: normalizedParams
18177
+ }, ElicitResultSchema, options);
18178
+ }
18123
18179
  async getTask(taskId, options) {
18124
18180
  return this._server.getTask({ taskId }, options);
18125
18181
  }
@@ -20034,7 +20090,7 @@ function removeConnector(name, targetDir = process.cwd()) {
20034
20090
  }
20035
20091
 
20036
20092
  // src/server/auth.ts
20037
- import { existsSync as existsSync3, readFileSync as readFileSync3, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "fs";
20093
+ import { existsSync as existsSync3, readFileSync as readFileSync3, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2, readdirSync as readdirSync2, rmSync as rmSync2, statSync as statSync2 } from "fs";
20038
20094
  import { homedir } from "os";
20039
20095
  import { join as join3 } from "path";
20040
20096
  var oauthStateStore = new Map;
@@ -20089,7 +20145,7 @@ function getAuthType(name) {
20089
20145
  }
20090
20146
  function getConnectorConfigDir(name) {
20091
20147
  const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
20092
- return join3(homedir(), ".connect", connectorName);
20148
+ return join3(homedir(), ".connectors", connectorName);
20093
20149
  }
20094
20150
  function getCurrentProfile(name) {
20095
20151
  const configDir = getConnectorConfigDir(name);
@@ -20141,6 +20197,8 @@ function getAuthStatus(name) {
20141
20197
  description: v.description,
20142
20198
  set: !!process.env[v.variable]
20143
20199
  }));
20200
+ const envVarTotalCount = envVars.length;
20201
+ const envVarSetCount = envVars.filter((v) => v.set).length;
20144
20202
  if (authType === "oauth") {
20145
20203
  const tokens = loadTokens(name);
20146
20204
  const config3 = loadProfileConfig(name);
@@ -20152,7 +20210,9 @@ function getAuthStatus(name) {
20152
20210
  configured: hasTokens || hasRefreshToken,
20153
20211
  tokenExpiry,
20154
20212
  hasRefreshToken,
20155
- envVars
20213
+ envVars,
20214
+ envVarSetCount,
20215
+ envVarTotalCount
20156
20216
  };
20157
20217
  }
20158
20218
  const config2 = loadProfileConfig(name);
@@ -20161,15 +20221,61 @@ function getAuthStatus(name) {
20161
20221
  return {
20162
20222
  type: authType,
20163
20223
  configured: hasKey || hasEnvVar,
20164
- envVars
20224
+ envVars,
20225
+ envVarSetCount,
20226
+ envVarTotalCount
20165
20227
  };
20166
20228
  }
20229
+ function saveApiKey(name, key, field) {
20230
+ const configDir = getConnectorConfigDir(name);
20231
+ const profile = getCurrentProfile(name);
20232
+ const keyField = field || guessKeyField(name);
20233
+ const profileFile = join3(configDir, "profiles", `${profile}.json`);
20234
+ const profileDir = join3(configDir, "profiles", profile);
20235
+ if (existsSync3(profileFile)) {
20236
+ let config2 = {};
20237
+ try {
20238
+ config2 = JSON.parse(readFileSync3(profileFile, "utf-8"));
20239
+ } catch {}
20240
+ config2[keyField] = key;
20241
+ writeFileSync2(profileFile, JSON.stringify(config2, null, 2));
20242
+ return;
20243
+ }
20244
+ if (existsSync3(profileDir)) {
20245
+ const configFile = join3(profileDir, "config.json");
20246
+ let config2 = {};
20247
+ if (existsSync3(configFile)) {
20248
+ try {
20249
+ config2 = JSON.parse(readFileSync3(configFile, "utf-8"));
20250
+ } catch {}
20251
+ }
20252
+ config2[keyField] = key;
20253
+ writeFileSync2(configFile, JSON.stringify(config2, null, 2));
20254
+ return;
20255
+ }
20256
+ mkdirSync2(join3(configDir, "profiles"), { recursive: true });
20257
+ writeFileSync2(profileFile, JSON.stringify({ [keyField]: key }, null, 2));
20258
+ }
20259
+ function guessKeyField(name) {
20260
+ const docs = getConnectorDocs(name);
20261
+ if (!docs?.envVars.length)
20262
+ return "apiKey";
20263
+ const keyVar = docs.envVars.find((v) => v.variable.includes("API_KEY") || v.variable.includes("API_SECRET") || v.variable.includes("TOKEN") || v.variable.includes("SECRET"));
20264
+ if (keyVar) {
20265
+ const parts = keyVar.variable.toLowerCase().split("_");
20266
+ const withoutPrefix = parts.slice(1);
20267
+ if (withoutPrefix.length > 0) {
20268
+ return withoutPrefix.map((p, i) => i === 0 ? p : p.charAt(0).toUpperCase() + p.slice(1)).join("");
20269
+ }
20270
+ }
20271
+ return "apiKey";
20272
+ }
20167
20273
 
20168
20274
  // src/mcp/index.ts
20169
20275
  loadConnectorVersions();
20170
20276
  var server = new McpServer({
20171
20277
  name: "connectors",
20172
- version: "0.1.0"
20278
+ version: "0.2.4"
20173
20279
  });
20174
20280
  server.registerTool("search_connectors", {
20175
20281
  title: "Search Connectors",
@@ -20382,6 +20488,55 @@ server.registerTool("connector_auth_status", {
20382
20488
  ]
20383
20489
  };
20384
20490
  });
20491
+ server.registerTool("configure_auth", {
20492
+ title: "Configure Auth",
20493
+ description: "Save an API key or bearer token for a connector. " + "Stores credentials in ~/.connectors/connect-{name}/profiles/. " + "Use connector_docs to find required env vars and field names first.",
20494
+ inputSchema: {
20495
+ name: exports_external.string().describe("Connector name (e.g. 'stripe', 'anthropic', 'openai')"),
20496
+ key: exports_external.string().describe("The API key or bearer token value"),
20497
+ field: exports_external.string().optional().describe("Key field name (defaults to the connector's primary key field, usually 'apiKey')")
20498
+ }
20499
+ }, async ({ name, key, field }) => {
20500
+ try {
20501
+ saveApiKey(name, key, field);
20502
+ return {
20503
+ content: [
20504
+ {
20505
+ type: "text",
20506
+ text: JSON.stringify({ success: true, connector: name, field: field || "apiKey" }, null, 2)
20507
+ }
20508
+ ]
20509
+ };
20510
+ } catch (error2) {
20511
+ return {
20512
+ content: [
20513
+ {
20514
+ type: "text",
20515
+ text: `Failed to save key for '${name}': ${error2 instanceof Error ? error2.message : String(error2)}`
20516
+ }
20517
+ ],
20518
+ isError: true
20519
+ };
20520
+ }
20521
+ });
20522
+ server.registerTool("list_categories", {
20523
+ title: "List Categories",
20524
+ description: "List all connector categories with the number of connectors in each.",
20525
+ inputSchema: {}
20526
+ }, async () => {
20527
+ const categoryCounts = CATEGORIES.map((category) => ({
20528
+ category,
20529
+ count: getConnectorsByCategory(category).length
20530
+ }));
20531
+ return {
20532
+ content: [
20533
+ {
20534
+ type: "text",
20535
+ text: JSON.stringify({ categories: categoryCounts, total: CONNECTORS.length }, null, 2)
20536
+ }
20537
+ ]
20538
+ };
20539
+ });
20385
20540
  async function main() {
20386
20541
  const transport = new StdioServerTransport;
20387
20542
  await server.connect(transport);