@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
@@ -0,0 +1,74 @@
1
+ # Confidence Exp
2
+
3
+ Use `confidenceExpProvider` and `registerConfidenceClient` from
4
+ `@jskit-ai/connectors-catalog/server/confidence-exp`.
5
+ Read the [shared setup guide](confidence-oauth.md) for exact setup steps,
6
+ registration automation, ownership, quotas, callbacks and verification limits.
7
+
8
+ ```json
9
+ {
10
+ "schemaVersion": 1,
11
+ "registrations": {
12
+ "confidence-exp": {
13
+ "source": "own",
14
+ "clientId": "assigned-client-id",
15
+ "clientSecretRef": "env:CONFIDENCE_EXP_CLIENT_SECRET",
16
+ "callbackUrlRef": "env:CONFIDENCE_EXP_CALLBACK_URL"
17
+ }
18
+ },
19
+ "integrations": {
20
+ "experiments": {
21
+ "provider": "confidence-exp",
22
+ "accountMode": "assistant",
23
+ "scopes": ["openid", "profile", "email", "offline_access"],
24
+ "authentication": { "method": "oauth2", "registrationRef": "confidence-exp" }
25
+ }
26
+ }
27
+ }
28
+ ```
29
+
30
+ The MCP destination is `https://mcp.confidence.dev/mcp/experiments`. Verification
31
+ uses `tools.list`. The provider describes `list_experiments`, `get_experiment`,
32
+ `get_results` and `get_resource`. Discover current schemas before invoking
33
+ `tools.call`; resource names must belong to the authorized request. Search and
34
+ list filters are different modes, and summary versus full detail changes the
35
+ returned information. See the
36
+ [MCP guide](https://confidence.spotify.com/docs/sdks/mcp-servers).
37
+
38
+ This initial adapter does not launch experiments, implement a statistics engine,
39
+ configure a warehouse or ingest events. Tool results are retained with their
40
+ error status; the application owns presentation and interpretation.
41
+ The application owns and registers its callback route, using its assigned public
42
+ URL as the initial origin. Keep that exact callback in application Env and update
43
+ the provider registration when it changes. Its grant stays separate from a
44
+ Confidence Flags integration.
45
+
46
+
47
+ ## Read and interpret results
48
+
49
+ Call `tools.list` first and use each returned tool's current input schema. An
50
+ explicitly wired host can call `get_experiment` for an approved instance name,
51
+ then `get_results` for that same name (or a returned analysis name); Confidence
52
+ resolves the primary analysis when an instance is supplied. Request `summary:
53
+ false` only when full detail is needed. `get_resource` resolves referenced metric,
54
+ entity, surface, segment and fact-table definitions; authorize those IDs too.
55
+ `list_experiments` search mode ignores filter/orderBy, so do not assume it has
56
+ applied an access filter. Apply the host's resource authorization independently.
57
+
58
+ Use `connections.invoke({ context, integrationId: "experiments", operation:
59
+ "tools.call", input: { name: "get_results", arguments: { name:
60
+ approvedInstanceName, summary: false } } })` after connection. Preserve the MCP
61
+ result/error status and the provider's confidence intervals, significance,
62
+ sample sizes and status messages. A positive effect estimate is not automatically
63
+ a winning experiment. Do not fabricate a shipping recommendation or recalculate
64
+ provider statistics from a summary. Other frameworks can connect their native
65
+ MCP clients to the same endpoint with their own OAuth/grant storage.
66
+
67
+ **LIMITATIONS:** Vibe64 coding-assistant attachment is deferred. For example,
68
+ saving this connection does not make Vibe64 chat explain an A/B result; an
69
+ explicitly wired assistant host can retrieve it. Confidence owns statistical
70
+ analysis, metric/event ingestion and experiment execution. This adapter transports
71
+ its tools and results, not a new experimentation engine. Controlled fixtures
72
+ prove analysis content is preserved and other experiment IDs are denied; tool
73
+ schemas and actual statistical outputs remain provider-owned and were not
74
+ validated against a live account.
@@ -0,0 +1,75 @@
1
+ # Confidence Flags
2
+
3
+ Use `confidenceFlagsProvider` and `registerConfidenceClient` from
4
+ `@jskit-ai/connectors-catalog/server/confidence-flags`.
5
+ Read the [shared setup guide](confidence-oauth.md) for exact setup steps,
6
+ registration automation, ownership, quotas, callbacks and verification limits.
7
+
8
+ ```json
9
+ {
10
+ "schemaVersion": 1,
11
+ "registrations": {
12
+ "confidence-flags": {
13
+ "source": "own",
14
+ "clientId": "assigned-client-id",
15
+ "clientSecretRef": "env:CONFIDENCE_FLAGS_CLIENT_SECRET",
16
+ "callbackUrlRef": "env:CONFIDENCE_FLAGS_CALLBACK_URL"
17
+ }
18
+ },
19
+ "integrations": {
20
+ "flags": {
21
+ "provider": "confidence-flags",
22
+ "accountMode": "assistant",
23
+ "scopes": ["openid", "profile", "email", "offline_access"],
24
+ "authentication": { "method": "oauth2", "registrationRef": "confidence-flags" }
25
+ }
26
+ }
27
+ }
28
+ ```
29
+
30
+ The MCP destination is `https://mcp.confidence.dev/mcp/flags`. Verification uses
31
+ `tools.list`, without calling a flag tool. Discover schemas before invoking
32
+ `tools.call`; the host can allow listing/reading while separately approving
33
+ creation or targeting changes. Account identity scopes do not enforce that
34
+ distinction. The provider describes tools including `listFlags`, `getFlag`,
35
+ `createFlag` and `testResolveFlag` in its
36
+ [MCP guide](https://confidence.spotify.com/docs/sdks/mcp-servers).
37
+
38
+ This initial adapter does not implement an OpenFeature evaluation provider,
39
+ production resolve/apply calls, event collection or a management API client.
40
+ The application owns and registers its callback route, using its assigned public
41
+ URL as the initial origin. Keep that exact callback in application Env and update
42
+ the provider registration when it changes. The builder's assistant grant must
43
+ not become a shared app-user grant.
44
+
45
+
46
+ ## Managing flags with deliberate approval
47
+
48
+ Discover current schemas using `tools.list`; do not hardcode argument names from
49
+ examples. The documented tools cover `listClients`, `listFlags`, `getFlag`,
50
+ `createFlag`, `addFlagVariant`, `updateFlagSchema`, `createOverrideRule`,
51
+ `testResolveFlag` and `analyzeFlagUsage`. Use `tools.call` with the discovered
52
+ name/schema and an authenticated host policy that approves the exact operation,
53
+ flag, variant, targeting rule and context. An identity OAuth scope is not write
54
+ approval. Review the proposed change before executing it, then read/test the
55
+ result. A test-user override is not a rollout to all users.
56
+
57
+ For example, an explicitly wired assistant can create a boolean checkout flag,
58
+ add an enabled variant, target only a test account, and call `testResolveFlag` to
59
+ inspect the selected variant and explanation. Preserve tool `isError` even on
60
+ HTTP success. If a write times out, inspect the flag/rules before retrying; neither
61
+ local cancellation nor disconnect undoes a remotely applied change.
62
+
63
+ The host owns its OAuth registration, callback and private Env references. A CLI
64
+ can use the same JSKIT methods without Vibe64, or another framework's native MCP
65
+ client with the same endpoint and its own OAuth storage. Production flag evaluation
66
+ belongs to that framework's Confidence/OpenFeature integration; never place this
67
+ management grant in a browser or treat it as the application's client secret.
68
+
69
+ **LIMITATIONS:** Automatic Vibe64 coding-assistant attachment is deferred. Saving
70
+ this connection does not let Vibe64 chat switch a feature on; an explicitly wired
71
+ host can approve and call these management tools. This is not a feature-flag
72
+ execution engine, event pipeline or visual rollout dashboard. The generated app
73
+ must separately implement runtime evaluation if it wants to hide/show features.
74
+ Controlled fixtures prove transport, exact write approval, tool-error retention
75
+ and no replay; their example argument shapes are not live schema verification.
@@ -0,0 +1,137 @@
1
+ # Confidence MCP setup and ownership
2
+
3
+ The Flags and Experiments adapters use separate integration IDs and MCP paths.
4
+ They share an OAuth issuer and `registerConfidenceClient`, exported through
5
+ either provider entry point. Both support assistant ownership only.
6
+
7
+ ## Account and manual setup
8
+
9
+ 1. Sign into the intended Confidence account and confirm access to the target
10
+ organisation. The provider's account policy remains authoritative.
11
+ 2. Add **Confidence Flags** or **Confidence Exp** in Vibe64. These configure an explicitly wired assistant host; automatic Vibe64 chat
12
+ attachment is deferred. They do not configure production flag evaluation.
13
+ 3. Confirm the suggested callback is the exact route served by that host and
14
+ choose identity/profile/email/refresh permissions. In development, the owner
15
+ can choose **Register client and connect**: the existing project registration action
16
+ saves the client ID to configuration and secret/callback/recovery ID to Env.
17
+ Existing Env values are preserved. Investigate any uncertain failure before
18
+ repeating it. The application must still implement its callback/setup command.
19
+ 4. For manual or standalone CLI setup, send the displayed registration JSON to
20
+ the fixed endpoint using POST and Content-Type application/json, or call
21
+ `registerConfidenceClient` below. Copy `client_id` to configuration and store
22
+ `client_secret` and the exact callback in private Env. No manual OAuth
23
+ client-creation console is established by the reviewed docs. Changing scopes
24
+ in a saved file does not update a previously registered client.
25
+ 5. The host calls `beginAuthorization` and opens its URL. Sign in at the
26
+ provider prompt and allow the connection. Complete the callback under the
27
+ same authenticated assistant owner. Verification lists tools only.
28
+ 6. Discover tool schemas and configure host policy for their names, arguments,
29
+ target resources and effects. Do this before exposing calls to an AI.
30
+
31
+ The provider documents Streamable HTTP MCP at `/mcp/flags` and
32
+ `/mcp/experiments`, with browser authentication. Flags include management tools;
33
+ experiments include analysis and result retrieval. Its separate documentation
34
+ MCP is unauthenticated and not part of either adapter.
35
+ [Confidence MCP guide](https://confidence.spotify.com/docs/sdks/mcp-servers).
36
+
37
+ ## Automation and provider registration
38
+
39
+ On 9 September 2026, public
40
+ [OAuth metadata](https://mcp.confidence.dev/.well-known/oauth-authorization-server)
41
+ advertised issuer `https://mcp.confidence.dev`, `/authorize`, `/token`, `/register`,
42
+ S256, code/refresh grants and `none`/`client_secret_post`. The
43
+ [resource metadata](https://mcp.confidence.dev/.well-known/oauth-protected-resource/mcp)
44
+ declared resource `https://mcp.confidence.dev/mcp` for both paths.
45
+
46
+ The documents differ on permissions: authorization metadata lists `openid`,
47
+ `profile`, `email`, `offline_access`; resource metadata instead lists `flags:read`
48
+ alongside the three identity scopes. This fragment exposes the authorization
49
+ server's four scopes. It does not claim a verified `flags:read` grant or infer
50
+ that any identity scope restricts tool calls to reads. Live consent acceptance
51
+ remains untested.
52
+
53
+ Unauthenticated MCP challenges advertised HTTP discovery addresses. This
54
+ implementation pins the independently verified HTTPS issuer/resource and never
55
+ follows those HTTP addresses or a replacement authentication URL from an error.
56
+
57
+ An authorized operator or AI setup process can call:
58
+
59
+ ```js
60
+ const client = await registerConfidenceClient({
61
+ clientName: "My assistant",
62
+ callbackUrl: "https://assistant.example/connections/confidence/callback",
63
+ scopes: ["openid", "profile", "email", "offline_access"]
64
+ });
65
+ ```
66
+
67
+ The helper uses the MCP SDK to POST one exact callback, code/refresh grants,
68
+ `client_secret_post` and the chosen scopes to `/register`. It validates returned
69
+ client/redirect metadata and returns `clientId`, `clientSecret` and any
70
+ `clientSecretExpiresAt`. Store that result through existing privileged owners;
71
+ never log or return the secret through ordinary UI status.
72
+
73
+ For manual HTTP setup, send JSON to `https://mcp.confidence.dev/register` with
74
+ `client_name`, `redirect_uris: [callback]`,
75
+ `token_endpoint_auth_method: "client_secret_post"`,
76
+ `grant_types: ["authorization_code", "refresh_token"]`,
77
+ `response_types: ["code"]` and space-delimited `scope`. HTTPS and HTTP loopback
78
+ callbacks are accepted by the helper; credentials, query and fragments are
79
+ rejected. It neither follows redirects nor retries registration. An interrupted
80
+ request may already have created a client; inspect before retrying.
81
+
82
+ This is different from **Admin → API Clients**, which creates management API
83
+ credentials, and from flag client secrets used by evaluation SDKs. Those are not
84
+ MCP browser consent credentials.
85
+ [Management API quickstart](https://confidence.spotify.com/docs/api/quickstart),
86
+ [flag client credentials](https://confidence.spotify.com/docs/api/how-to-guides/flags/setup-flag-clients).
87
+ An AI can prepare this setup and perform explicitly authorized API requests.
88
+ It cannot complete human consent or remove provider account requirements.
89
+
90
+ ## Runtime and CLI contract
91
+
92
+ Compose the existing `oauth-connection` and `assistant-mcp-oauth` patterns with
93
+ the selected provider and the provider guide's `integrations.json`. CLI and UI
94
+ use the same parser. All four scopes are initially selected; `openid` is needed
95
+ by both initial operations. The host resolves secret references and chooses
96
+ encrypted file storage. No database is required.
97
+
98
+ `tools.list` accepts a cursor and returns one page. `tools.call` accepts `name`
99
+ and `arguments`; discover their current schema rather than inventing fields.
100
+ The host's `authorize` callback must validate resource ownership and approve
101
+ each operation. Handle `isError` as a tool failure. Tool output, descriptions and
102
+ linked documents do not grant further authority. No automatic paging, retries,
103
+ polling, tool attachment or flag changes occur.
104
+
105
+ Each configured integration keeps a distinct grant even when both use one
106
+ registration. Changing a provider ID cannot reuse another integration's grant.
107
+ The provider's common OAuth resource is not an application-side permission
108
+ boundary. Disconnect removes the local grant and does not undo completed work.
109
+ This library does not use these identity scopes to implement application login.
110
+
111
+ ## Connection ownership and callbacks
112
+
113
+ This fragment is for an explicitly configured assistant host. That host owns its
114
+ client registration, callback, private credentials and grants; it may be an
115
+ application-owned assistant or an opt-in editor tool. Merely adding the provider
116
+ to a project does not authorize the editor's coding assistant. It does not supply
117
+ published app-user login. The host's callback may differ from the published app's
118
+ domain, but it must match that host's real route and registered redirect URI.
119
+
120
+ Flags and Experiments each register the host's real callback with the appropriate
121
+ provider endpoint. Keep their registrations, Env references and grants distinct.
122
+ On a host/domain change, update registration and callback Env when the callback
123
+ changes, while retaining the owning runtime identity and persistent grants.
124
+ Separate client IDs do not establish separate provider quotas or organisation
125
+ entitlements. Registration acceptance and commercial use need provider proof.
126
+ The editor exposes explicit automatic or manual client registration and the
127
+ application-owned connection lifecycle. Live provider registration and consent remain unverified.
128
+
129
+ ## Evidence
130
+
131
+ Controlled tests exercise both MCP paths, common resource binding, confidential
132
+ registration, file ownership and restart, refresh, exact tool policy, malformed
133
+ responses, permission errors, cancellation and no request replay. Provider guide
134
+ JSON and responsive editor persistence are checked separately. No live provider
135
+ account, registration, consent, flag mutation, experiment run, database or
136
+ generated application is used. Metadata discovery alone does not prove live
137
+ registration or token acceptance.
@@ -0,0 +1,123 @@
1
+ # Contentful
2
+
3
+ Import `contentfulProvider` from `@jskit-ai/connectors-catalog/server/contentful`.
4
+ This connector reads published entries using a Content Delivery API key.
5
+
6
+ ## Configure access
7
+
8
+ 1. Sign into Contentful and select the space for this application.
9
+ 2. Open **Settings → API keys**. Add or select a Content delivery / preview key.
10
+ 3. Copy **Space ID** into the integration form. Copy **Content Delivery API
11
+ access token** into private Env as `CONTENTFUL_ACCESS_TOKEN`.
12
+ 4. Select an environment authorized for the key (`master` by default) and the
13
+ space's region. Enter `env:CONTENTFUL_ACCESS_TOKEN` as the token reference.
14
+ 5. Save, then explicitly connect. Verification reads one published entry at
15
+ most. An empty published space is a valid successful result.
16
+ 6. Rotate by updating the Env binding and verifying the replacement before
17
+ retiring the old key in Contentful. Disconnect deletes local state only.
18
+
19
+ Content Management personal tokens and Preview tokens are different credentials.
20
+ See [Contentful authentication](https://www.contentful.com/developers/docs/references/authentication/).
21
+
22
+ ## Portable configuration and CLI
23
+
24
+ ```json
25
+ {
26
+ "schemaVersion": 1,
27
+ "registrations": {},
28
+ "integrations": {
29
+ "content": {
30
+ "provider": "contentful",
31
+ "accountMode": "shared",
32
+ "scopes": [],
33
+ "settings": { "spaceId": "your-space-id", "environmentId": "master", "region": "us" },
34
+ "authentication": { "method": "api-key", "secretRef": "env:CONTENTFUL_ACCESS_TOKEN" }
35
+ }
36
+ }
37
+ }
38
+ ```
39
+
40
+ Replace the example Space ID with the actual value. Compose the
41
+ [API-key pattern](../patterns/api-key-connection/PATTERN.md) with this provider,
42
+ application authorization and private file state. CLI and UI use the same file.
43
+ The application owns its connection and controls who may read its content.
44
+
45
+ `entries.list` reads `/spaces/{spaceId}/environments/{environmentId}/entries`
46
+ on `cdn.contentful.com` or `cdn.eu.contentful.com`, using a Bearer header.
47
+ Inputs are `limit` (1–1000, default 1), `skip` (nonnegative, default 0), optional
48
+ `content_type`, `locale`, `include` (0–10), `order`, full-text `query` and `sys.id`.
49
+ The original JSON envelope is preserved, including unresolved-link errors and
50
+ `includes.Entry`/`includes.Asset`. Advance `skip` explicitly using `total`, `skip`
51
+ and `limit`, with an appropriate stable `order`; no automatic paging occurs.
52
+ Concurrent publication can still change offset results. Cursor/Sync APIs remain
53
+ native work. [Delivery API](https://www.contentful.com/developers/docs/references/content-delivery-api/overview/).
54
+
55
+ | Operation | Inputs | Purpose |
56
+ |---|---|---|
57
+ | `entries.list` | Pagination and fields above | Published entries, with optional linked content |
58
+ | `entries.get` | `id`, optional `locale` | One published entry |
59
+ | `assets.list` | `limit`, `skip`, optional `locale`, `order`, `query` | Published asset metadata |
60
+ | `assets.get` | `id`, optional `locale` | One asset's fields and file URL |
61
+ | `contentTypes.list` / `contentTypes.get` | Pagination / `id` | Content model fields |
62
+ | `locales.list` | Pagination | Locale codes, default/fallback information |
63
+
64
+ For a single article **with links**, use `entries.list` with `sys.id` and
65
+ `include`; the individual-entry endpoint does not expand links. Contentful's
66
+ include default is 1, maximum 10. Match linked IDs/types against `items` and
67
+ `includes`; unpublished/missing links can remain unresolved. Do not assume a
68
+ missing link means the entire request failed, or that every returned reference
69
+ has a corresponding asset. Preserve provider errors and handle absent content.
70
+ [Link resolution](https://www.contentful.com/developers/docs/references/content-delivery-api/links/).
71
+
72
+ ```js
73
+ const page = await connections.invoke({ context, integrationId: "content",
74
+ operation: "entries.list", input: { "sys.id": approvedArticleId, include: 2, locale: "en-US" } });
75
+ const image = await connections.invoke({ context, integrationId: "content",
76
+ operation: "assets.get", input: { id: approvedAssetId, locale: "en-US" } });
77
+ ```
78
+
79
+ `locale: "*"` returns locale-keyed field values; do not treat them as the same
80
+ shape as single-locale strings. Locales and fallback rules belong to the content
81
+ model. Asset results are metadata/file URLs, not downloaded bytes. Convert
82
+ protocol-relative file URLs to HTTPS when rendering and validate the destination
83
+ in your application's media policy; the adapter never forwards its token to an
84
+ asset URL. Rich-text rendering/sanitization and caching belong to the framework.
85
+
86
+ All operations are read-only Delivery calls. Preview drafts, publication, edits
87
+ and management credentials are intentionally excluded.
88
+
89
+ ## Provisioning and ownership
90
+
91
+ The application owner supplies the space and key. No OAuth callback or Vibe64
92
+ registration is needed; custom application domains do not change this flow.
93
+ An AI can prepare the configuration and framework wiring. Contentful documents
94
+ Delivery key creation through its Content Management API after authorized
95
+ bootstrap access, as well as the console flow above. That management credential
96
+ is separate from the delivery key stored for runtime use. Account signup,
97
+ space access and authorizing bootstrap management access remain owner tasks.
98
+ Different key names do not establish independent quota allocations.
99
+
100
+ For Laravel, use native HTTP/configuration tools and the public application
101
+ setup command contract; this package provides JavaScript code only.
102
+
103
+ ## Version-zero change and evidence
104
+
105
+ The initial unpublished CMA `spaces.list` fragment has been replaced. Existing
106
+ experimental configurations must supply `settings.spaceId`, a Delivery token,
107
+ and use `entries.list`. There is no compatibility alias or automatic token
108
+ conversion. Environment and region default to `master` and `us` respectively.
109
+
110
+ Focused controlled tests cover delivery headers and paths, EU/environment
111
+ selection, invalid settings before transport, published-entry validation,
112
+ page limits, private file-store restart, token rotation, isolation, disconnect
113
+ and provider failures. No live Contentful account or generated app was used.
114
+
115
+
116
+ **LIMITATIONS:** Vibe64 chat attachment is deferred: the app can display published
117
+ articles and images, but saving this connection does not let the coding assistant
118
+ browse the space. This connector does not author/publish content or render a CMS
119
+ interface. For example, publish the article and hero asset in Contentful first;
120
+ the app then resolves their IDs and renders them with its native components.
121
+ Cross-space authenticated links, Sync/cursor feeds and asset transformation are
122
+ native extensions, not silently fetched. Controlled tests cover links, locale
123
+ shapes, pagination, resource reads and errors; no live content was accessed.
@@ -0,0 +1,180 @@
1
+ # Databricks
2
+
3
+ The initial fragment reads a workspace's Jobs API through a custom OAuth
4
+ application or a service principal. Both use `databricksProvider` from
5
+ `@jskit-ai/connectors-catalog/server/databricks` and the ordinary connections
6
+ service. Configuration and encrypted runtime state can both use files.
7
+
8
+ ## Choose the owner and credentials
9
+
10
+ | Use | Registration | Connection method | Callback |
11
+ |---|---|---|---|
12
+ | Each user's Databricks access | Custom confidential OAuth application | `beginAuthorization`, then `completeAuthorization` | Exact backend callback |
13
+ | Shared service principal | Service principal client ID and Databricks OAuth secret | `connectClientCredentials` | None |
14
+
15
+ The service principal has its own identity. It cannot stand in for a different
16
+ Databricks account belonging to each app user. The application policy may let
17
+ authorized members use a shared connection or delegate access to an assistant.
18
+ It must derive the storage owner from trusted application identity.
19
+
20
+ ## Create a service principal connection
21
+
22
+ 1. Open the intended Databricks workspace. Open the user menu, **Settings**,
23
+ **Identity and access**, then **Service principals → Manage**.
24
+ 2. Select an existing principal or arrange for the admin to create and assign
25
+ one. Grant workspace access and visibility of the jobs the application needs.
26
+ 3. Open the principal's **Secrets** tab and select **Generate secret**. Set a
27
+ suitable lifetime and scopes, then generate it. Copy its client ID and the
28
+ one-time secret into your private configuration environment.
29
+ 4. For this fragment, a secret allowing `jobs` can be narrower than `all-apis`.
30
+ A legacy unrestricted secret can request `all-apis`. Avoid granting token
31
+ administration just to read jobs.
32
+ 5. Configure **Service account** in the editor, enter the principal's client ID
33
+ and save configuration. Choose **Set credential in Env**, paste the OAuth
34
+ secret under the displayed client-secret reference, and save it there. Select
35
+ `jobs` without `all-apis` when the secret is jobs-scoped. Return and verify the
36
+ first jobs page; this mode needs no callback or browser consent.
37
+
38
+ This is Databricks OAuth, including on Azure; a Microsoft Entra secret, personal
39
+ access token or login password is not interchangeable. The provider describes
40
+ secret management and workspace assignment in its [service principal guide](https://docs.databricks.com/aws/en/dev-tools/auth/oauth-m2m).
41
+
42
+ ```json
43
+ {
44
+ "schemaVersion": 1,
45
+ "integrations": {
46
+ "warehouse": {
47
+ "provider": "databricks",
48
+ "displayName": "Operations jobs",
49
+ "accountMode": "shared",
50
+ "settings": { "workspaceUrl": "https://dbc-abc123.cloud.databricks.com" },
51
+ "scopes": ["jobs"],
52
+ "authentication": { "method": "oauth2", "registrationRef": "databricks-service" }
53
+ }
54
+ },
55
+ "registrations": {
56
+ "databricks-service": {
57
+ "source": "own",
58
+ "grantType": "client_credentials",
59
+ "clientId": "11111111-1111-1111-1111-111111111111",
60
+ "clientSecretRef": "env:DATABRICKS_CLIENT_SECRET",
61
+ "tokenEndpointAuthMethod": "client_secret_basic"
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ ## Create a user consent connection
68
+
69
+ An account admin opens the **account console → Settings → App connections →
70
+ Add connection**. Enter the application's name and the exact redirect URL.
71
+ Choose **All APIs** for the Jobs fragment and generate a client secret for a
72
+ confidential application. Set access/refresh lifetimes, add the connection and
73
+ save the client ID and one-time secret. Activation can take 30 minutes.
74
+ See [custom application setup](https://docs.databricks.com/aws/en/integrations/enable-disable-oauth).
75
+
76
+ In the JSON above, set `accountMode` to `per-user`, select `all-apis` and
77
+ `offline_access`, and use a registration containing:
78
+
79
+ ```json
80
+ {
81
+ "source": "own",
82
+ "grantType": "authorization_code",
83
+ "clientId": "22222222-2222-2222-2222-222222222222",
84
+ "clientSecretRef": "env:DATABRICKS_OAUTH_CLIENT_SECRET",
85
+ "tokenEndpointAuthMethod": "client_secret_post",
86
+ "callbackUrlRef": "env:DATABRICKS_CALLBACK_URL"
87
+ }
88
+ ```
89
+
90
+ Set that callback binding to your own active HTTPS route, or an explicitly
91
+ registered loopback callback for a CLI. Start consent, open the returned URL,
92
+ then pass the returned callback to `completeAuthorization` under the same
93
+ authenticated app owner. PKCE/state and one-time completion are library-owned.
94
+ Do not borrow `databricks-cli` as a third-party client ID. Databricks documents
95
+ the [user authorization flow](https://docs.databricks.com/aws/en/dev-tools/auth/oauth-u2m).
96
+
97
+ The service uses form-body client authentication for user authorization and
98
+ refresh, matching the official SDK; service credentials use HTTP Basic. It
99
+ renews tokens 40 seconds early because Azure can reject tokens with 30 seconds
100
+ remaining. See the [Databricks OAuth implementation](https://github.com/databricks/databricks-sdk-py/blob/main/databricks/sdk/oauth.py).
101
+
102
+ ## Workspace addresses
103
+
104
+ Use the exact workspace origin, without an application path, query or hash.
105
+ This initial validator accepts `dbc-….cloud.databricks.com` on AWS,
106
+ `adb-<digits>.<digits>.azuredatabricks.net` on Azure and
107
+ `<digits>.<digits>.gcp.databricks.com` on Google Cloud. A final slash is allowed.
108
+ Regional/account console URLs, private proxy aliases and newer unified domain
109
+ forms require a separate adapter extension. See the [Azure per-workspace URL](https://learn.microsoft.com/en-us/azure/databricks/workspace/per-workspace-urls)
110
+ and [Google Cloud workspace identifiers](https://docs.databricks.com/gcp/en/workspace/workspace-details).
111
+
112
+ The configured workspace selects both `/oidc/v1/authorize` and `/oidc/v1/token`
113
+ as well as the API origin. Neither callback parameters nor operation input can
114
+ change that destination.
115
+
116
+ ## Runtime and AI composition
117
+
118
+ Parse the same JSON with `parseIntegrationConfiguration(text, { providers:
119
+ [databricksProvider] })`. Supply the ordinary `authorize`, reference resolver
120
+ and private file store to `createConnectionService`. Compose the Feature when
121
+ using JSKIT actions; `connectors.verifyClientCredentials` exposes service
122
+ verification through the existing action runtime.
123
+
124
+ ```js
125
+ await connections.connectClientCredentials({ context, integrationId: "warehouse" });
126
+ const jobs = await connections.invoke({
127
+ context, integrationId: "warehouse", operation: "jobs.list",
128
+ input: { limit: 20, expand_tasks: false }
129
+ });
130
+ ```
131
+
132
+ `jobs.list` accepts `limit` (1–100), `expand_tasks`, exact `name` filtering and an
133
+ opaque `page_token`. Empty results may omit `jobs`. `jobs.get` requires numeric
134
+ `job_id`, accepts `include_trigger_state` and a continuation token, and returns
135
+ one page of job details. Nested task arrays can be paginated. The caller must
136
+ decide whether to follow tokens; the library makes one read per invocation.
137
+ See the [Jobs API](https://docs.databricks.com/api/jobs/v2/list-jobs).
138
+
139
+ The fragment bounds tokens to 8192 characters and job IDs to JavaScript's safe
140
+ integer range. It rejects writes, SQL, arbitrary URLs, malformed job IDs and
141
+ responses identifying a different requested job. An OAuth grant can allow
142
+ more than these two operations; neither `jobs` nor `all-apis` is a read-only
143
+ provider permission. Configure resource permissions accordingly.
144
+
145
+ Service credentials renew with their secret rather than a refresh token.
146
+ Renewal is serialized per connection and cannot expand the stored grant.
147
+ Changing a service connection's scopes or grant type requires reconnecting.
148
+ Tokens remain encrypted; source contains references. Disconnect removes the
149
+ local connection and attempts without deleting the principal or revoking the
150
+ provider application globally.
151
+
152
+ ## Public, Online and automation
153
+
154
+ Register the real callback implemented by the runtime that owns this connection.
155
+ For an application integration, use the application's assigned hosting URL as
156
+ the initial origin and its implemented callback path. Store the exact callback
157
+ in its Env reference and provider registration. A domain change requires updating
158
+ both values if the callback URL changes; retain the application identity and its
159
+ persistent grants when moving hosts. Public Vibe64, Online and CLI users supply
160
+ their own registrations through this same contract.
161
+ See the [callback guide](../../connectors-core/docs/oauth-callbacks.md).
162
+
163
+ Service principals have no callback. Databricks custom applications are created
164
+ within a customer account; creating one does not establish a universal third-party
165
+ registration across every customer account. The application owner supplies its
166
+ account's registration. Separate registrations do not reserve workspace compute
167
+ or guarantee separate provider quotas.
168
+
169
+ An AI can prepare the portable file and registration request, and an authorized
170
+ operator can provision custom apps using the account API or
171
+ `databricks account custom-app-integration create --confidential --json …`.
172
+ The API accepts name, redirect URLs, scopes and token policy and returns client
173
+ credentials. Admin authorization and storage of the returned secret remain
174
+ operator responsibilities. See [OAuth app integration APIs](https://docs.databricks.com/api/o-auth/v1/get-custom-o-auth-app-integration).
175
+ Service principal provisioning and secret generation similarly need account
176
+ privileges; this fragment does not implement provisioning endpoints.
177
+
178
+ Live accounts, consent, private networking, account-level operations, SQL/data
179
+ queries, jobs execution and app login are unverified or
180
+ unfinished. Local proof uses controlled HTTP responses and encrypted files.