@jskit-ai/connectors-catalog 0.1.1

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 (399) hide show
  1. package/README.md +192 -0
  2. package/docs/ai-upstream-notices.md +51 -0
  3. package/docs/ai.md +191 -0
  4. package/docs/airtable.md +130 -0
  5. package/docs/algolia.md +190 -0
  6. package/docs/amazon-redshift.md +229 -0
  7. package/docs/amplitude.md +210 -0
  8. package/docs/apify.md +162 -0
  9. package/docs/apollo-io.md +200 -0
  10. package/docs/asana.md +126 -0
  11. package/docs/ashby.md +188 -0
  12. package/docs/atlassian.md +224 -0
  13. package/docs/attention.md +162 -0
  14. package/docs/aws-athena.md +150 -0
  15. package/docs/aws-credentials.md +75 -0
  16. package/docs/aws-s3.md +193 -0
  17. package/docs/bigquery.md +146 -0
  18. package/docs/brevo.md +122 -0
  19. package/docs/calendly.md +158 -0
  20. package/docs/canva.md +191 -0
  21. package/docs/chargebee.md +192 -0
  22. package/docs/clay.md +194 -0
  23. package/docs/clickhouse.md +242 -0
  24. package/docs/confidence-exp.md +74 -0
  25. package/docs/confidence-flags.md +75 -0
  26. package/docs/confidence-oauth.md +137 -0
  27. package/docs/contentful.md +123 -0
  28. package/docs/databricks.md +180 -0
  29. package/docs/dbt-semantic-layer.md +175 -0
  30. package/docs/elevenlabs.md +102 -0
  31. package/docs/figma.md +132 -0
  32. package/docs/firebase-cloud-messaging.md +262 -0
  33. package/docs/firecrawl.md +137 -0
  34. package/docs/fireflies.md +95 -0
  35. package/docs/fireworks-ai.md +53 -0
  36. package/docs/gatewayapi.md +113 -0
  37. package/docs/gemini-enterprise.md +224 -0
  38. package/docs/github-api.md +133 -0
  39. package/docs/gitlab-api.md +138 -0
  40. package/docs/gmail.md +133 -0
  41. package/docs/gong.md +205 -0
  42. package/docs/google-ads.md +156 -0
  43. package/docs/google-analytics.md +202 -0
  44. package/docs/google-docs.md +105 -0
  45. package/docs/google-drive.md +108 -0
  46. package/docs/google-maps-platform.md +208 -0
  47. package/docs/google-oauth.md +123 -0
  48. package/docs/google-search-console.md +124 -0
  49. package/docs/google-sheets.md +94 -0
  50. package/docs/google-slides.md +95 -0
  51. package/docs/granola.md +178 -0
  52. package/docs/hex.md +161 -0
  53. package/docs/heygen.md +124 -0
  54. package/docs/hubspot.md +142 -0
  55. package/docs/incident-io.md +118 -0
  56. package/docs/inngest.md +178 -0
  57. package/docs/klipy.md +149 -0
  58. package/docs/lexware.md +144 -0
  59. package/docs/lightspeed.md +193 -0
  60. package/docs/linear.md +137 -0
  61. package/docs/linkedin.md +196 -0
  62. package/docs/logo-dev.md +152 -0
  63. package/docs/mailgun.md +153 -0
  64. package/docs/mapbox.md +174 -0
  65. package/docs/microsoft-excel.md +97 -0
  66. package/docs/microsoft-fabric.md +249 -0
  67. package/docs/microsoft-oauth.md +143 -0
  68. package/docs/microsoft-onedrive.md +76 -0
  69. package/docs/microsoft-onenote.md +75 -0
  70. package/docs/microsoft-outlook.md +90 -0
  71. package/docs/microsoft-powerpoint.md +119 -0
  72. package/docs/microsoft-sharepoint.md +75 -0
  73. package/docs/microsoft-teams.md +72 -0
  74. package/docs/microsoft-word.md +119 -0
  75. package/docs/miro.md +117 -0
  76. package/docs/n8n.md +169 -0
  77. package/docs/notion.md +137 -0
  78. package/docs/oura.md +161 -0
  79. package/docs/paddle.md +168 -0
  80. package/docs/perplexity.md +85 -0
  81. package/docs/pipedrive.md +120 -0
  82. package/docs/polar.md +63 -0
  83. package/docs/posthog.md +227 -0
  84. package/docs/prestashop.md +151 -0
  85. package/docs/replicate.md +60 -0
  86. package/docs/resend.md +153 -0
  87. package/docs/salesforce.md +234 -0
  88. package/docs/sanity.md +122 -0
  89. package/docs/semrush.md +276 -0
  90. package/docs/sentry.md +112 -0
  91. package/docs/sevdesk.md +107 -0
  92. package/docs/shopify.md +206 -0
  93. package/docs/slack.md +257 -0
  94. package/docs/snowflake.md +271 -0
  95. package/docs/storyblok.md +130 -0
  96. package/docs/stripe.md +77 -0
  97. package/docs/supabase.md +51 -0
  98. package/docs/tally.md +105 -0
  99. package/docs/telegram.md +165 -0
  100. package/docs/tiktok.md +201 -0
  101. package/docs/twilio.md +284 -0
  102. package/docs/twitch.md +428 -0
  103. package/docs/wave.md +440 -0
  104. package/docs/wix.md +1249 -0
  105. package/docs/wiz.md +177 -0
  106. package/docs/woocommerce.md +400 -0
  107. package/docs/wordpress-com.md +358 -0
  108. package/docs/wordpress-self-hosted.md +252 -0
  109. package/docs/workday.md +292 -0
  110. package/docs/x-twitter.md +188 -0
  111. package/docs/xero.md +429 -0
  112. package/docs/zoho-books.md +214 -0
  113. package/docs/zoho-crm.md +192 -0
  114. package/package.json +153 -0
  115. package/patterns/ai-connections/PATTERN.md +84 -0
  116. package/patterns/ai-connections/example/ai-model.js +11 -0
  117. package/patterns/ai-connections/example/perplexity-answer.js +29 -0
  118. package/patterns/api-key-connection/PATTERN.md +368 -0
  119. package/patterns/api-key-connection/example/connections.js +18 -0
  120. package/patterns/api-key-connection/example/integrations.json +19 -0
  121. package/patterns/assistant-mcp/PATTERN.md +110 -0
  122. package/patterns/assistant-mcp/example/integrations.json +13 -0
  123. package/patterns/assistant-mcp-oauth/PATTERN.md +235 -0
  124. package/patterns/assistant-mcp-oauth/example/integrations.json +102 -0
  125. package/patterns/aws-storage-queries/PATTERN.md +169 -0
  126. package/patterns/aws-storage-queries/example/formats/data-formats.js +35 -0
  127. package/patterns/aws-storage-queries/example/formats/package-lock.json +49 -0
  128. package/patterns/aws-storage-queries/example/formats/package.json +12 -0
  129. package/patterns/aws-storage-queries/example/formats/verify-formats.mjs +37 -0
  130. package/patterns/aws-storage-queries/example/integrations.json +38 -0
  131. package/patterns/aws-storage-queries/example/s3-transfer.js +34 -0
  132. package/patterns/event-delivery/PATTERN.md +151 -0
  133. package/patterns/event-delivery/example/integrations.json +17 -0
  134. package/patterns/firebase-messaging/PATTERN.md +156 -0
  135. package/patterns/firebase-messaging/example/server/notifications.js +23 -0
  136. package/patterns/google-ads-search/PATTERN.md +92 -0
  137. package/patterns/google-ads-search/example/ads-setup.js +25 -0
  138. package/patterns/oauth-connection/PATTERN.md +724 -0
  139. package/patterns/oauth-connection/example/integrations.json +20 -0
  140. package/patterns/paddle-catalogue/PATTERN.md +78 -0
  141. package/patterns/paddle-catalogue/example/create-products.js +38 -0
  142. package/patterns/public-image/PATTERN.md +84 -0
  143. package/patterns/public-image/example/integrations.json +13 -0
  144. package/patterns/public-image/example/logo-url.js +16 -0
  145. package/patterns/redshift-queries/PATTERN.md +150 -0
  146. package/patterns/redshift-queries/example/integrations.json +33 -0
  147. package/patterns/source-scanning/PATTERN.md +83 -0
  148. package/patterns/source-scanning/example/source-scanner.js +13 -0
  149. package/src/client/firebase-cloud-messaging.js +10 -0
  150. package/src/client/google-analytics.js +72 -0
  151. package/src/client/google-maps-platform.js +39 -0
  152. package/src/client/logo-dev.js +36 -0
  153. package/src/server/ai.js +46 -0
  154. package/src/server/airtable.js +67 -0
  155. package/src/server/algolia.js +63 -0
  156. package/src/server/amazon-redshift.js +96 -0
  157. package/src/server/amplitude.js +31 -0
  158. package/src/server/apify.js +68 -0
  159. package/src/server/apollo-io.js +85 -0
  160. package/src/server/asana.js +64 -0
  161. package/src/server/ashby.js +61 -0
  162. package/src/server/atlassian.js +32 -0
  163. package/src/server/attention.js +93 -0
  164. package/src/server/aws-athena.js +82 -0
  165. package/src/server/aws-s3.js +49 -0
  166. package/src/server/awsTransport.js +75 -0
  167. package/src/server/bigquery.js +97 -0
  168. package/src/server/brevo.js +97 -0
  169. package/src/server/calendly.js +77 -0
  170. package/src/server/canva.js +13 -0
  171. package/src/server/chargebee.js +88 -0
  172. package/src/server/clay.js +78 -0
  173. package/src/server/clickhouse.js +66 -0
  174. package/src/server/confidence.js +29 -0
  175. package/src/server/contentful.js +40 -0
  176. package/src/server/databricks.js +55 -0
  177. package/src/server/dbt-semantic-layer.js +95 -0
  178. package/src/server/elevenlabs.js +81 -0
  179. package/src/server/figma.js +24 -0
  180. package/src/server/firebase-cloud-messaging.js +111 -0
  181. package/src/server/firecrawl.js +70 -0
  182. package/src/server/fireflies.js +31 -0
  183. package/src/server/fireworks-ai.js +16 -0
  184. package/src/server/gatewayapi.js +48 -0
  185. package/src/server/gemini-enterprise.js +47 -0
  186. package/src/server/github-api.js +90 -0
  187. package/src/server/gitlab-api.js +67 -0
  188. package/src/server/gmail.js +60 -0
  189. package/src/server/gong.js +52 -0
  190. package/src/server/google-ads-search.js +134 -0
  191. package/src/server/google-ads.js +80 -0
  192. package/src/server/google-docs.js +36 -0
  193. package/src/server/google-drive.js +71 -0
  194. package/src/server/google-maps-platform.js +90 -0
  195. package/src/server/google-search-console.js +31 -0
  196. package/src/server/google-sheets.js +60 -0
  197. package/src/server/google-slides.js +36 -0
  198. package/src/server/google.js +61 -0
  199. package/src/server/granola.js +115 -0
  200. package/src/server/graphqlOperation.js +15 -0
  201. package/src/server/hex.js +29 -0
  202. package/src/server/heygen.js +54 -0
  203. package/src/server/hubspot.js +85 -0
  204. package/src/server/incident-io.js +68 -0
  205. package/src/server/inngest.js +86 -0
  206. package/src/server/jsonOperation.js +34 -0
  207. package/src/server/klipy.js +34 -0
  208. package/src/server/lexware.js +59 -0
  209. package/src/server/lightspeed.js +82 -0
  210. package/src/server/linear.js +52 -0
  211. package/src/server/linkedin.js +74 -0
  212. package/src/server/mailgun.js +76 -0
  213. package/src/server/mapbox.js +46 -0
  214. package/src/server/mcpRegistration.js +41 -0
  215. package/src/server/mcpTransport.js +60 -0
  216. package/src/server/microsoft-excel.js +67 -0
  217. package/src/server/microsoft-fabric.js +81 -0
  218. package/src/server/microsoft-onedrive.js +58 -0
  219. package/src/server/microsoft-onenote.js +52 -0
  220. package/src/server/microsoft-outlook.js +58 -0
  221. package/src/server/microsoft-powerpoint.js +5 -0
  222. package/src/server/microsoft-sharepoint.js +46 -0
  223. package/src/server/microsoft-teams.js +29 -0
  224. package/src/server/microsoft-word.js +5 -0
  225. package/src/server/microsoft.js +88 -0
  226. package/src/server/miro.js +29 -0
  227. package/src/server/n8n.js +78 -0
  228. package/src/server/notion.js +76 -0
  229. package/src/server/oura.js +48 -0
  230. package/src/server/paddle.js +83 -0
  231. package/src/server/perplexity.js +15 -0
  232. package/src/server/pipedrive.js +95 -0
  233. package/src/server/polar.js +20 -0
  234. package/src/server/posthog.js +44 -0
  235. package/src/server/prestashop.js +42 -0
  236. package/src/server/replicate.js +42 -0
  237. package/src/server/resend.js +93 -0
  238. package/src/server/salesforce.js +84 -0
  239. package/src/server/sanity.js +31 -0
  240. package/src/server/semrush.js +359 -0
  241. package/src/server/sentry.js +30 -0
  242. package/src/server/sevdesk.js +20 -0
  243. package/src/server/shopify.js +99 -0
  244. package/src/server/slack.js +143 -0
  245. package/src/server/snowflake.js +139 -0
  246. package/src/server/storyblok.js +49 -0
  247. package/src/server/stripe.js +13 -0
  248. package/src/server/supabase.js +13 -0
  249. package/src/server/tally.js +78 -0
  250. package/src/server/telegram.js +55 -0
  251. package/src/server/tiktok.js +86 -0
  252. package/src/server/twilio.js +90 -0
  253. package/src/server/twitch.js +409 -0
  254. package/src/server/wave.js +520 -0
  255. package/src/server/wix.js +1048 -0
  256. package/src/server/wiz.js +117 -0
  257. package/src/server/woocommerce.js +412 -0
  258. package/src/server/wordpress-com.js +236 -0
  259. package/src/server/wordpress-self-hosted.js +134 -0
  260. package/src/server/workday.js +136 -0
  261. package/src/server/x-twitter.js +110 -0
  262. package/src/server/xero.js +397 -0
  263. package/src/server/zoho-books.js +90 -0
  264. package/src/server/zoho-crm.js +89 -0
  265. package/src/server/zohoOAuth.js +21 -0
  266. package/src/shared/ai-models.json +8049 -0
  267. package/src/shared/ai.js +63 -0
  268. package/src/shared/algolia.js +29 -0
  269. package/src/shared/amazon-redshift.js +51 -0
  270. package/src/shared/amplitude.js +28 -0
  271. package/src/shared/atlassian.js +43 -0
  272. package/src/shared/aws.js +72 -0
  273. package/src/shared/canva.js +66 -0
  274. package/src/shared/chargebee.js +26 -0
  275. package/src/shared/clickhouse.js +38 -0
  276. package/src/shared/confidence.js +28 -0
  277. package/src/shared/databricks.js +33 -0
  278. package/src/shared/dbt-semantic-layer.js +32 -0
  279. package/src/shared/definitions.js +140 -0
  280. package/src/shared/figma.js +21 -0
  281. package/src/shared/firebase-cloud-messaging.js +45 -0
  282. package/src/shared/gemini-enterprise.js +33 -0
  283. package/src/shared/gong.js +33 -0
  284. package/src/shared/google-ads-search.js +31 -0
  285. package/src/shared/google-ads.js +28 -0
  286. package/src/shared/google-maps-platform.js +28 -0
  287. package/src/shared/google.js +133 -0
  288. package/src/shared/granola.js +25 -0
  289. package/src/shared/hex.js +28 -0
  290. package/src/shared/inngest.js +35 -0
  291. package/src/shared/lightspeed.js +75 -0
  292. package/src/shared/linkedin.js +27 -0
  293. package/src/shared/logo-dev.js +21 -0
  294. package/src/shared/mapbox.js +38 -0
  295. package/src/shared/mcp.js +92 -0
  296. package/src/shared/microsoft-fabric.js +47 -0
  297. package/src/shared/microsoft.js +231 -0
  298. package/src/shared/miro.js +27 -0
  299. package/src/shared/oura.js +23 -0
  300. package/src/shared/posthog.js +33 -0
  301. package/src/shared/prestashop.js +23 -0
  302. package/src/shared/salesforce.js +36 -0
  303. package/src/shared/semrush.js +24 -0
  304. package/src/shared/shopify.js +51 -0
  305. package/src/shared/siteUrl.js +12 -0
  306. package/src/shared/slack.js +88 -0
  307. package/src/shared/snowflake.js +55 -0
  308. package/src/shared/tiktok.js +22 -0
  309. package/src/shared/tokens.js +747 -0
  310. package/src/shared/twilio.js +41 -0
  311. package/src/shared/twitch.js +49 -0
  312. package/src/shared/wave.js +52 -0
  313. package/src/shared/wix.js +40 -0
  314. package/src/shared/wiz.js +41 -0
  315. package/src/shared/wordpress-com.js +30 -0
  316. package/src/shared/wordpress.js +69 -0
  317. package/src/shared/workday.js +50 -0
  318. package/src/shared/x-twitter.js +19 -0
  319. package/src/shared/xero.js +46 -0
  320. package/src/shared/zoho-books.js +39 -0
  321. package/src/shared/zoho-crm.js +43 -0
  322. package/src/shared/zoho-regions.js +12 -0
  323. package/test/ai.test.js +136 -0
  324. package/test/airtable.test.js +125 -0
  325. package/test/algolia.test.js +207 -0
  326. package/test/amazon-redshift.test.js +272 -0
  327. package/test/amplitude.test.js +239 -0
  328. package/test/apify.test.js +93 -0
  329. package/test/apollo-io.test.js +125 -0
  330. package/test/asana.test.js +99 -0
  331. package/test/ashby.test.js +97 -0
  332. package/test/atlassian.test.js +249 -0
  333. package/test/attention.test.js +79 -0
  334. package/test/aws.test.js +405 -0
  335. package/test/brevo.test.js +71 -0
  336. package/test/calendly.test.js +136 -0
  337. package/test/canva.test.js +258 -0
  338. package/test/chargebee.test.js +195 -0
  339. package/test/clickhouse.test.js +278 -0
  340. package/test/confidence.test.js +205 -0
  341. package/test/databricks.test.js +253 -0
  342. package/test/dbt-semantic-layer.test.js +221 -0
  343. package/test/designMcp.test.js +336 -0
  344. package/test/elevenlabs.test.js +52 -0
  345. package/test/firebase-cloud-messaging.test.js +242 -0
  346. package/test/firecrawl.test.js +66 -0
  347. package/test/gemini-enterprise.test.js +218 -0
  348. package/test/github-api.test.js +167 -0
  349. package/test/gitlab-api.test.js +160 -0
  350. package/test/gong.test.js +192 -0
  351. package/test/google-ads.test.js +350 -0
  352. package/test/google-maps-platform.test.js +191 -0
  353. package/test/google.test.js +710 -0
  354. package/test/granola.test.js +240 -0
  355. package/test/hex.test.js +253 -0
  356. package/test/heygen.test.js +121 -0
  357. package/test/hubspot.test.js +103 -0
  358. package/test/inngest.test.js +219 -0
  359. package/test/lightspeed.test.js +250 -0
  360. package/test/linear.test.js +146 -0
  361. package/test/linkedin.test.js +243 -0
  362. package/test/logo-dev.test.js +79 -0
  363. package/test/mailgun.test.js +107 -0
  364. package/test/mapbox.test.js +181 -0
  365. package/test/mcp.test.js +227 -0
  366. package/test/microsoft-fabric.test.js +258 -0
  367. package/test/microsoft.test.js +554 -0
  368. package/test/n8nOAuth.test.js +188 -0
  369. package/test/notionOAuth.test.js +183 -0
  370. package/test/oura.test.js +211 -0
  371. package/test/paddleCatalogue.test.js +51 -0
  372. package/test/paddlePermissions.test.js +101 -0
  373. package/test/perplexityComposition.test.js +39 -0
  374. package/test/pipedriveOAuth.test.js +140 -0
  375. package/test/posthog.test.js +200 -0
  376. package/test/prestashop.test.js +207 -0
  377. package/test/resend.test.js +163 -0
  378. package/test/salesforce.test.js +276 -0
  379. package/test/semrush.test.js +479 -0
  380. package/test/sentry.test.js +35 -0
  381. package/test/shopify.test.js +247 -0
  382. package/test/slack.test.js +320 -0
  383. package/test/snowflake.test.js +391 -0
  384. package/test/tally.test.js +75 -0
  385. package/test/telegram.test.js +58 -0
  386. package/test/tiktok.test.js +243 -0
  387. package/test/tokens.test.js +1079 -0
  388. package/test/twilio.test.js +221 -0
  389. package/test/twitch.test.js +573 -0
  390. package/test/wave.test.js +678 -0
  391. package/test/wix.test.js +1099 -0
  392. package/test/wiz.test.js +185 -0
  393. package/test/wordpress-com.test.js +469 -0
  394. package/test/wordpress.test.js +660 -0
  395. package/test/workday.test.js +314 -0
  396. package/test/x-twitter.test.js +256 -0
  397. package/test/xero.test.js +700 -0
  398. package/test/zoho-books.test.js +253 -0
  399. package/test/zoho-crm.test.js +223 -0
package/docs/sentry.md ADDED
@@ -0,0 +1,112 @@
1
+ # Sentry
2
+
3
+ Import `sentryProvider` and `registerSentryClient` from
4
+ `@jskit-ai/connectors-catalog/server/sentry`.
5
+
6
+ The connector uses Sentry's hosted MCP service for an explicitly composed
7
+ assistant. It does not configure SDK event ingestion, a DSN or application login.
8
+ Vibe64 coding-assistant attachment remains deferred. Saving this configuration
9
+ alone does not give editor chat access to Sentry.
10
+
11
+ ## Configure access
12
+
13
+ 1. Open the intended organization in Sentry. Copy its slug from the URL, then
14
+ open Project Settings and copy the project slug if restricting to one project.
15
+ Use slugs, not display names or numeric IDs. Organization selection is required;
16
+ project selection is recommended.
17
+ 2. Make the assistant host serve its own HTTPS OAuth callback. In Vibe64, enter
18
+ it in **Suggested callback URL**, then choose **Register client and connect**.
19
+ From a trusted backend or CLI instead, call `registerSentryClient` with `clientName`, `callbackUrl`
20
+ and `scopes` (start with `org:read`). It registers at
21
+ `https://mcp.sentry.dev/oauth/register`. Registration is an explicit action;
22
+ inspect an uncertain result before retrying.
23
+ 3. Store the returned client ID in the portable registration and the secret in
24
+ private Env. Set the exact callback in Env too. Select OAuth and assistant
25
+ ownership, with `settings.organizationSlug` and optional `settings.projectSlug`.
26
+ This is registration with the MCP service, not a Sentry REST OAuth application.
27
+ 4. Connect through the application's OAuth flow and review Sentry's consent.
28
+ The configuration offers organization read and project/team/event write scopes.
29
+ Sentry's granted MCP skills and account permissions also determine the tools
30
+ available. A configured scope does not independently grant access.
31
+ 5. Reconnect when access expires or the selected resource changes. Local
32
+ disconnect removes the saved grant; provider-side permissions remain separate.
33
+
34
+ The same portable configuration is usable without the editor:
35
+
36
+ ```json
37
+ {
38
+ "schemaVersion": 1,
39
+ "registrations": {
40
+ "sentry-client": {
41
+ "source": "own",
42
+ "clientId": "REPLACE_WITH_REGISTERED_CLIENT_ID",
43
+ "clientSecretRef": "env:SENTRY_CLIENT_SECRET",
44
+ "callbackUrlRef": "env:SENTRY_CALLBACK_URL"
45
+ }
46
+ },
47
+ "integrations": {
48
+ "debugging": {
49
+ "provider": "sentry",
50
+ "accountMode": "assistant",
51
+ "scopes": ["org:read"],
52
+ "authentication": { "method": "oauth2", "registrationRef": "sentry-client" },
53
+ "settings": { "organizationSlug": "your-org", "projectSlug": "your-project" }
54
+ }
55
+ }
56
+ }
57
+ ```
58
+
59
+ Supply the actual client secret and callback through the application's Env.
60
+ Compose `createConnectionService` with this configuration, `sentryProvider`,
61
+ the application's encrypted store, reference resolver and authorization callback.
62
+ Use `beginAuthorization` and `completeAuthorization` for the browser round trip;
63
+ invoke `tools.list`/`tools.call` only under the owning application's authenticated
64
+ context. The CLI/operator also needs a backend capable of receiving the callback.
65
+
66
+ ## Runtime and ownership
67
+
68
+ `tools.list` discovers available tool schemas, with an explicit optional cursor.
69
+ `tools.call` takes `name` and `arguments`; the host must authorize that exact
70
+ request before provider traffic. Do not hardcode tool availability from examples.
71
+ The selected resource is
72
+ `https://mcp.sentry.dev/mcp/{organizationSlug}[/{projectSlug}]` for both OAuth and
73
+ MCP requests. The provider constrains that resource; the application still owns
74
+ caller authorization and review of any triage or write operation.
75
+
76
+ The application owns tokens, encrypted persistence, callback execution and
77
+ refresh. CLI applications use the ordinary connection service without Vibe64.
78
+ Other frameworks consume the same configuration and Env names using their native
79
+ OAuth/MCP libraries, without importing JavaScript or running a Node sidecar.
80
+ The editor's subscription does not supply a Sentry account or quota.
81
+
82
+ ## Pre-release configuration change
83
+
84
+ The previous Sentry REST fragment used `api-key` and `organizations.list`.
85
+ Replace that declaration with the MCP OAuth registration and assistant mode
86
+ above, set the intended organization/project, and connect again. A personal
87
+ Sentry token is not the MCP OAuth client secret. Replace REST operation calls
88
+ with explicit MCP discovery and authorized tool calls. No alias or automatic
89
+ conversion retains the old connection; remove its local record through its
90
+ owning application and review whether its old Env token is still used elsewhere.
91
+
92
+ ## Verification and limitations
93
+
94
+ Two focused tests cover resource and registration validation. Seven OAuth/MCP
95
+ tests cover consent, PKCE, encrypted persistence, refresh, owner/resource
96
+ isolation, issue details, exact tool authorization, errors and cancellation;
97
+ those seven also pass through installed public package exports. Public editor
98
+ registration has a passing owner/Env test, and phone/desktop browser checks cover
99
+ registration, consent cancellation, reconnect, reload and disconnect. All use
100
+ controlled fixtures; live tool schemas, consent and account behavior are unverified.
101
+ The previous REST organization probe is replaced without a compatibility alias.
102
+
103
+ The official repository also documents a remote `Sentry-Bearer` token alternative,
104
+ distinct from OAuth `Bearer`. That alternative is not implemented here yet.
105
+
106
+ Sources: [hosted MCP instructions](https://mcp.sentry.dev/),
107
+ [official implementation](https://github.com/getsentry/sentry-mcp/blob/main/packages/mcp-cloudflare/src/server/index.ts),
108
+ [resource binding](https://github.com/getsentry/sentry-mcp/blob/main/packages/mcp-cloudflare/src/server/protected-resource-metadata.ts),
109
+ [OAuth metadata](https://github.com/getsentry/sentry-mcp/blob/main/packages/mcp-cloudflare/src/server/authorization-server-metadata.ts),
110
+ [scope definitions](https://github.com/getsentry/sentry-mcp/blob/main/packages/mcp-core/src/scopes.ts).
111
+ Public discovery requests returned HTTP 403 from the development environment;
112
+ source evidence does not establish successful live consent.
@@ -0,0 +1,107 @@
1
+ # Sevdesk
2
+
3
+ Import `sevdeskProvider` from `@jskit-ai/connectors-catalog/server/sevdesk`.
4
+ This fragment verifies an account API token and lists contacts, including people
5
+ by default. Vibe64 labels its credential field **API token reference**.
6
+
7
+ ## Provider setup
8
+
9
+ 1. Sign into the intended sevdesk account with permission to view its API token.
10
+ Open **Erweiterungen → Integrationen**.
11
+ 2. Find **API-Token für Integrationen** near the top. Choose **Einblenden**,
12
+ enter your password, then copy the revealed token. Some plans also expose
13
+ **Erweiterungen → API**, with the same reveal/password step.
14
+ 3. Store the value as `SEVDESK_API_TOKEN` in the backend environment. Add
15
+ Sevdesk in Vibe64 and enter `env:SEVDESK_API_TOKEN` in **API token reference**.
16
+ The portable file contains that reference, never the revealed token.
17
+
18
+ This retrieves an existing credential; it is not a new OAuth-app registration.
19
+ [Provider token instructions](https://hilfe.sevdesk.de/de/articles/9374740-wo-finde-ich-meinen-api-token-in-sevdesk).
20
+
21
+ ## Configuration and library calls
22
+
23
+ ```json
24
+ {
25
+ "schemaVersion": 1,
26
+ "registrations": {},
27
+ "integrations": {
28
+ "contacts": {
29
+ "provider": "sevdesk",
30
+ "displayName": "Business contacts",
31
+ "accountMode": "shared",
32
+ "scopes": [],
33
+ "authentication": { "method": "api-key", "secretRef": "env:SEVDESK_API_TOKEN" }
34
+ }
35
+ }
36
+ }
37
+ ```
38
+
39
+ The shared authentication method is named `api-key`; this provider's UI and
40
+ documentation call its value a token. Compose `providers: [sevdeskProvider]`
41
+ using the [API-key pattern](../patterns/api-key-connection/PATTERN.md), an
42
+ application authorization policy and the file connection store. CLI and editor
43
+ use the same configuration. Runtime connection records remain text files
44
+ outside exported source, with no database requirement.
45
+
46
+ ```js
47
+ await connections.connectApiKey({ context, integrationId: "contacts" });
48
+ const page = await connections.invoke({
49
+ context, integrationId: "contacts", operation: "contacts.list",
50
+ input: { limit: 100, offset: 0, countAll: true }
51
+ });
52
+ ```
53
+
54
+ The provider requires the token directly in `Authorization`, without a Bearer
55
+ prefix. Requests use `GET https://my.sevdesk.de/api/v1/Contact`.
56
+ `limit` accepts 1–1000; `offset` skips records; `countAll: true` asks for a
57
+ `total`, which the provider can return as a numeric string. The collection is
58
+ in `objects`. With `depth: 1`, contacts include organizations and people;
59
+ the provider's normal depth-zero listing includes organizations only.
60
+ Its API documentation identifies credentials with administrator users.
61
+ [API documentation](https://api.sevdesk.de/).
62
+
63
+ This fragment defaults to `limit: 100`, `offset: 0`, `countAll: false` and
64
+ `depth: 1`. An application can explicitly choose `depth: 0`. Integer pagination
65
+ is required and the local offset cap is 1000000. Results preserve provider
66
+ fields, accept empty collections and validate `total` when present. Request
67
+ subsequent offsets explicitly; no background crawl occurs. Text searches,
68
+ embedded related objects and writes are not implemented.
69
+
70
+ Requests stay on the fixed HTTPS origin and reject redirects. A changed token
71
+ is resolved on the next call; invalid credentials require verification again.
72
+ Disconnect removes local state and does not revoke the provider token or delete
73
+ its owning user. Account/user lifecycle changes belong in the provider console.
74
+ The application must authorize access to this shared directory; reading a
75
+ contact does not sign that person into the application.
76
+
77
+ ## Automation and application ownership
78
+
79
+ An AI can write the config, environment reference, library composition and
80
+ contact-list code. The reviewed documents describe a password-confirmed token
81
+ reveal, not a public API for provisioning accounts or generating these tokens.
82
+ Keep that initial step with the account owner; do not fabricate a creation or
83
+ rotation endpoint.
84
+
85
+ The application owns its token and private Env reference. Two
86
+ references to one token still access one account. Do not promise separate
87
+ provider credentials or quota merely by changing those names, and do not create
88
+ provider users solely as an assumed quota workaround. Customer-owned
89
+ connections use each customer's authorized token. Provider limits and any
90
+ independent-capacity arrangement need confirmation. The application enforces
91
+ its own usage limits. No callback URL is
92
+ used, so editor VM and app hosting domains do not affect this flow.
93
+
94
+ ## Focused evidence
95
+
96
+ Tests use simulated HTTP replies and real temporary encrypted JSON storage.
97
+ They cover raw authorization, page defaults, explicit organization-only reads,
98
+ numeric-string totals, invalid inputs/envelopes, restart, rotation, ownership
99
+ and disconnect. Editor automation verifies the token label, reference-only
100
+ storage and save/reload. Live provider use, account creation and sample-app
101
+ generation are excluded.
102
+
103
+ ## Existing-scope closeout — 13 September 2026
104
+
105
+ Contact listing only, including people by default (`depth: 1`), explicit organization-only depth, bounded offset pagination and numeric-string totals. The project supplies its existing raw API token through Env. No contact detail/search/create/update/delete, related-object expansion, invoices, orders, vouchers or bookkeeping operations are implemented. There is no OAuth/app registration, application-user login, token-issuance automation, automatic pagination/retry or remote token revocation. Applications still own their UI, authorization and pagination; disconnect removes local connection state. Deferred work is the missing contact/accounting operations and their validation, permissions, setup guidance and tests. No live Sevdesk account, provider-console login or generated-app run was tested.
106
+
107
+ Three selected source tests and the same three installed-package tests passed on September 13. They cover credential verification, encrypted file restart, rotation, isolation, disconnect, pagination/depth/totals and redacted invalid-input/provider failures. Existing shared business-token UI evidence is retained; no fresh browser run or form change is claimed.
@@ -0,0 +1,206 @@
1
+ # Shopify
2
+
3
+ The initial runtime connects an existing store, lists products, and creates,
4
+ updates or deletes one product per call. It uses GraphQL Admin API **2026-07**.
5
+ It does not generate a storefront or activate a store. The portable assistant
6
+ policy includes the captured lifecycle, variant, discount and price-rule choices;
7
+ those choices do not claim that the corresponding provider operation exists yet.
8
+
9
+ ## Configuration and ownership
10
+
11
+ ```json
12
+ {
13
+ "schemaVersion": 1,
14
+ "registrations": {
15
+ "shopify-own": {
16
+ "source": "own",
17
+ "grantType": "client_credentials",
18
+ "clientId": "your-shopify-client-id",
19
+ "clientSecretRef": "env:SHOPIFY_CLIENT_SECRET"
20
+ }
21
+ },
22
+ "integrations": {
23
+ "shopify": {
24
+ "provider": "shopify",
25
+ "displayName": "Company store",
26
+ "accountMode": "shared",
27
+ "authentication": { "method": "oauth2", "registrationRef": "shopify-own" },
28
+ "settings": { "shopDomain": "your-store.myshopify.com" },
29
+ "scopes": ["read_products", "write_products"],
30
+ "assistantPolicy": {
31
+ "enabled": true,
32
+ "defaultPermission": "ask",
33
+ "actions": { "products.list": "always", "products.delete": "never" }
34
+ }
35
+ }
36
+ }
37
+ }
38
+ ```
39
+
40
+ Keep the secret value in the application's environment, with the same reference
41
+ used by CLI and editor. For an existing Admin API access token, replace
42
+ `authentication` with `{ "method": "api-key", "secretRef": "env:SHOPIFY_ADMIN_TOKEN" }`
43
+ and remove the unused registration. Storefront tokens, App Automation Tokens,
44
+ client secrets and Customer Account tokens are different credentials.
45
+
46
+ The store is a shared account. Authorize each application user before mapping to
47
+ its stable shared subject. Neither token mode authenticates shoppers or enforces
48
+ each staff member's individual Shopify role. A per-staff installation needs
49
+ Shopify online access tokens and its separate consent flow, still unfinished here.
50
+ An assistant must use a service composed with `executionMode: "assistant"`;
51
+ `accountMode` describes whose connection is used, not who invoked the operation.
52
+
53
+ ## Manual setup: app and store in the same organization
54
+
55
+ 1. Sign into the [Dev Dashboard](https://dev.shopify.com/) with permission to
56
+ create apps and install them on the target store. Select the organization that
57
+ owns the store. Both app and store must appear in this organization.
58
+ 2. Open **Apps → Create app**. Choose the Dev Dashboard creation option, enter
59
+ your application name and create it. An existing app can be selected instead.
60
+ 3. Open **Versions → Create a version**. Set the application URL to your actual
61
+ app entry point. Configure the app's access scopes: `read_products` for the
62
+ reader, `write_products` when product changes are required. Release the version.
63
+ A write scope includes reads; the runtime accepts either for product listing.
64
+ 4. Install the released app on the intended store and approve its scopes. Update
65
+ the installation when changing scopes; editing local JSON alone grants nothing.
66
+ 5. Open the app's **Settings → Credentials**. Copy **Client ID** into the portable
67
+ registration. Put **Client secret** in Env and set its reference in the form.
68
+ 6. Find the store's permanent `*.myshopify.com` address and enter it without
69
+ `https://`, paths, ports or a custom storefront domain.
70
+ 7. Select **App in your Shopify organization** in the editor. Save configuration.
71
+ The backend or trusted CLI calls `connectClientCredentials` to acquire a token
72
+ and verify a product read before reporting Connected.
73
+ 8. Keep the shared subject and application/environment identity stable. The
74
+ runtime persists encrypted connection state and obtains another grant before
75
+ the documented 24-hour token expires. No callback URL is used in this mode.
76
+
77
+ If Shopify reports `shop_not_permitted`, correct ownership/distribution. Installing
78
+ an app on another merchant's store does not make client credentials applicable.
79
+ See [organization authentication](https://shopify.dev/docs/apps/build/authentication-authorization/client-credentials-grant)
80
+ and [credential locations](https://shopify.dev/docs/apps/build/authentication-authorization/manage-credentials).
81
+
82
+ ## Manual setup: existing Admin API token
83
+
84
+ For a legacy custom app created in Shopify admin before January 2026, open the
85
+ store's **Settings → Apps and sales channels → Develop apps**, select the app,
86
+ review its Admin API scopes and installation, and use its existing Admin API token.
87
+ If the secret cannot be revealed again, follow Shopify's credential recovery or
88
+ replacement procedure; do not assume the editor can retrieve it. New apps use the
89
+ Dev Dashboard flow instead. See [legacy custom apps](https://shopify.dev/docs/apps/build/authentication-authorization/legacy/admin-custom-apps).
90
+
91
+ Choose **Existing Admin API access token**, enter the secret's Env reference and
92
+ the permanent store domain, and save. The app/CLI calls `connectApiKey`; it performs
93
+ a product read before persisting Connected. Token rotation is read from the same
94
+ reference on subsequent requests. The scopes in configuration limit permitted
95
+ operations locally; Shopify remains the authority for the token's actual rights.
96
+
97
+ ## Application registrations, callbacks and domains
98
+
99
+ Shopify's word *online* describes a staff-user access token. It is unrelated to
100
+ the Vibe64 Online product.
101
+
102
+ The application owner creates its Shopify app in the Dev Dashboard, configures
103
+ its distribution, access scopes and application URL, and completes any required
104
+ review. Follow the app/version/release steps above and store its client secret
105
+ in the application's private Env. Public distribution, custom distribution and
106
+ organization-only apps are not interchangeable.
107
+
108
+ The supported client-credentials flow does not require a callback. Merchant
109
+ consent is a separate unfinished flow: it needs the application's actual allowed
110
+ redirect URI, signed Shopify callback validation and the appropriate installation
111
+ lifecycle. Online staff sessions are also unfinished in this adapter. Follow
112
+ Shopify's [authentication guide](https://shopify.dev/docs/apps/build/authentication-authorization)
113
+ and official libraries; do not substitute a generic OAuth callback without
114
+ Shopify's required verification.
115
+
116
+ For that consent flow, changing the callback domain requires updating the app's
117
+ registration and Env. Retain the application's identity and persistent state
118
+ when moving hosts. A token remains bound to its shop and registration; changing
119
+ provider registrations requires a new installation/grant.
120
+
121
+ GraphQL Admin quotas are scoped to an **app/store pair**. Separate registrations
122
+ do not remove store resource limits, Shopify plans or review requirements.
123
+ [API limits](https://shopify.dev/docs/api/usage/limits).
124
+
125
+ ## Store creation and claiming
126
+
127
+ For an ordinary partner handover: Dev Dashboard **Stores → Create store → Client
128
+ transfer store**, enter the name and country/region, then create it. To hand over,
129
+ open the **Client transfer** tab, use the store's **⋯ → Transfer store**, enter the
130
+ client email and submit. The client accepts ownership and selects a plan in
131
+ Shopify. Only perform those external actions with the owner's authorization.
132
+
133
+ This is a distinct host lifecycle, not a GraphQL product mutation. Shopify places
134
+ installation restrictions on client transfer stores; dev stores cannot be
135
+ transferred. A transfer also moves the store out of the original organization,
136
+ so organization-only client credentials cannot be assumed to remain usable.
137
+ Vibe64's automatic create/claim workflow and any commercial Shopify arrangement
138
+ are not delivered by this fragment. Do not promise Lovable's trial terms.
139
+ See [client transfer stores](https://shopify.dev/docs/apps/build/stores/client-transfer-stores).
140
+
141
+ ## Runtime and assistant authorization
142
+
143
+ Import `shopifyProvider` from `@jskit-ai/connectors-catalog/server/shopify` and
144
+ compose it with `createConnectionService`, the shared file store and a trusted
145
+ reference resolver. Supported provider operations:
146
+
147
+ | Operation | Input | Result |
148
+ |---|---|---|
149
+ | `products.list` | `first` 1–100 (20 default), optional opaque `after`, Shopify search `query` | GraphQL envelope with product nodes and page cursor |
150
+ | `products.create` | `product.title`; optional descriptionHtml, vendor, productType, status, tags | Confirmed product and empty userErrors; defaults to DRAFT |
151
+ | `products.update` | `product.id` (Product GID) plus one or more supported product fields | Confirmed updated product |
152
+ | `products.delete` | `input.id` (Product GID) | Confirmed deletedProductId; synchronous request |
153
+
154
+ No raw GraphQL or caller-supplied destination is accepted. Product IDs are GraphQL
155
+ GIDs, not numbers. Product status does not publish it to sales channels. Price and
156
+ SKU changes belong to variants and are not accepted by these product mutations.
157
+ Mutations are not automatically retried. A timeout may leave a completed Shopify
158
+ change: inspect the store before retrying, particularly after creation.
159
+
160
+ For assistant execution, compose the same service with `executionMode: "assistant"`.
161
+ The existing `authorize(context, request)` callback still verifies application
162
+ access and returns the trusted `applicationId` and `subjectId`. When
163
+ `request.assistantPermission.decision === "ask"`, it must also verify the human's
164
+ approval for that exact action/input and return `approved: true`. No such result
165
+ means `connector_approval_required`; `never` or disabled access stops before any
166
+ credential lookup or provider request. `always` still requires application access.
167
+ The host owns its approval UI, decision persistence, expiry and single-use checks.
168
+ Never copy `approved`, execution mode or owner identity from a browser request.
169
+
170
+ `authorizeAssistantAction({ context, integrationId, action: "claim", input })`
171
+ allows a host to apply the same policy before its own lifecycle operation. It
172
+ performs authorization only, never store creation, claiming or API calls. Use
173
+ `invoke` for the implemented product operations. The lifecycle host must still
174
+ validate its input and satisfy workspace policy. There is no new approval database.
175
+
176
+ The shared form offers access enablement, **Manage all permissions** and all
177
+ captured action choices. Changing the default resets individual overrides; choices
178
+ are `ask`, `always`, `never`. The policy lives outside credential settings, so a
179
+ policy edit does not invalidate a store grant. Workspace-level availability and
180
+ the actual editor assistant tool wiring remain separate unfinished host work.
181
+
182
+ ## Automation feasibility and verification
183
+
184
+ AI can author/validate the portable file, wire the shared runtime and file store,
185
+ prepare Shopify app configuration, and perform supported product operations
186
+ through the application's authorized server. CLI/deployment automation can update
187
+ an existing app after an operator establishes its organization and credentials.
188
+ An App Automation Token authenticates Shopify CLI automation; it is not the
189
+ Admin API token used by this runtime.
190
+
191
+ Account/organization creation, merchant consent, review, billing, store transfer
192
+ and any partner agreement require the appropriate human/provider process. A public
193
+ API for silently provisioning both platform apps or reproducing Lovable's special
194
+ create/claim arrangement has not been established. Do not invent one.
195
+
196
+ Local fixture tests cover organization grants and renewal, existing tokens,
197
+ encryption/restart, product operations and bounds, scopes, ownership and store
198
+ isolation, assistant decisions, error responses and cancellation. They make no
199
+ live Shopify calls. A credentialed store is still required to prove installation,
200
+ actual product access, provider quotas and account-specific permissions. The full
201
+ merchant-consent, managed, variant/discount and store lifecycle flows remain open.
202
+
203
+ Operation references: [products](https://shopify.dev/docs/api/admin-graphql/latest/queries/products),
204
+ [productCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productCreate),
205
+ [productUpdate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productUpdate),
206
+ [productDelete](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productDelete).