@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/hex.md ADDED
@@ -0,0 +1,161 @@
1
+ # Hex assistant connection
2
+
3
+ Import `hexProvider` and `registerHexClient` from
4
+ `@jskit-ai/connectors-catalog/server/hex`. This initial library connects an
5
+ assistant owner to remote MCP and exposes `tools.list` and `tools.call`.
6
+ It reuses the OAuth state, refresh and encrypted file-store implementations.
7
+
8
+ ## Provider setup
9
+
10
+ 1. Check the intended Hex workspace endpoint and account. Hex documents MCP on
11
+ Team and Enterprise plans with an Explorer or higher role.
12
+ 2. Choose Standard, Europe or HIPAA in the Vibe64 **Hex workspace endpoint**
13
+ field. Single-tenant custom Hex domains are not supported by this fragment.
14
+ 3. Confirm **Suggested callback URL** is the route your host will serve. Choose
15
+ **Register client and connect** to register at the selected fixed authority.
16
+ The public editor saves the ID in project configuration and the secret, callback
17
+ and recovery ID in development Env, then starts the app-owned setup command.
18
+ Existing Env values are not replaced. Alternatively in
19
+ **OAuth client registration**, copy the endpoint and JSON request body into
20
+ your HTTP client and send one POST with Content-Type application/json.
21
+ This endpoint changes with the selected Hex region. Register once; the
22
+ provider guide does not establish a developer-console creation screen.
23
+ 4. For manual registration, copy `client_id` into **Client ID** and **Save configuration**. Choose
24
+ **Set credential in Env** to save `client_secret` under the displayed reference.
25
+ Choose **Set callback in Env** to save the same callback used for registration.
26
+ Return to the form after saving Env. Keep the full registration response private.
27
+ 5. Select identity/profile/email/refresh permissions and save configuration.
28
+ Saving does not register a client or connect the account. The host must open
29
+ `beginAuthorization`'s URL and complete the callback under the same owner.
30
+ 6. In the provider browser flow, sign in, choose the workspace when prompted
31
+ and approve consent. Verification discovers tools without starting a Thread.
32
+
33
+ Hex documents project search, Thread creation/retrieval/continuation and project editing tools. Editing requires Editor or higher and the specific project permission.
34
+ Its workspace API-access switch does not revoke MCP access. Sensitive data
35
+ connection controls live under **Settings → Integrations → Configure sensitive
36
+ data connections for external integrations**, or the data source's **Access**
37
+ tab. These settings remain under the workspace administrator's control.
38
+ [Hex MCP guide](https://learn.hex.tech/docs/api-integrations/mcp-server).
39
+
40
+ ## Explicit registration and automation
41
+
42
+ Public metadata was rechecked on 12 September 2026 for all three endpoints. The
43
+ resource is `https://<host>/mcp`; its issuer is `https://auth.<host>`. The issuer
44
+ advertises `/oauth2/authorize`, `/oauth2/token` and `/oauth2/register`, S256,
45
+ code/refresh grants and `client_secret_post` authentication among its options.
46
+ Its scopes are `openid`, `profile`, `email` and `offline_access`.
47
+ [Standard resource metadata](https://app.hex.tech/.well-known/oauth-protected-resource/mcp),
48
+ [standard OAuth metadata](https://auth.app.hex.tech/.well-known/oauth-authorization-server),
49
+ [EU metadata](https://auth.eu.hex.tech/.well-known/oauth-authorization-server),
50
+ [HIPAA metadata](https://auth.hc.hex.tech/.well-known/oauth-authorization-server).
51
+
52
+ After the setup caller has authorization to create a provider client:
53
+
54
+ ```js
55
+ const registration = await registerHexClient({
56
+ endpoint: "standard",
57
+ clientName: "My assistant",
58
+ callbackUrl: "https://assistant.example/connections/hex/callback",
59
+ scopes: ["openid", "profile", "email", "offline_access"]
60
+ });
61
+ // Persist registration.clientSecret through the existing secret owner.
62
+ // Save registration.clientId in configuration; never log the whole result.
63
+ ```
64
+
65
+ The helper uses the MCP SDK with one exact callback, code/refresh grants and
66
+ `client_secret_post`. It validates returned client and redirect metadata and
67
+ returns `clientId`, `clientSecret` and any `clientSecretExpiresAt`. HTTPS and
68
+ HTTP loopback callbacks are accepted; credentials, query and fragment are not.
69
+ The host owns authorization to invoke this helper and storing its result.
70
+
71
+ An AI with an authorized setup API can prepare configuration and call this
72
+ helper. It cannot complete human consent, change provider entitlements or
73
+ promise registration acceptance from metadata alone. No live registration was
74
+ performed. Failed or interrupted registration must not be automatically retried;
75
+ the provider might already have created a client. The equivalent manual HTTP
76
+ operation is a JSON POST to the selected issuer's `/oauth2/register` with the
77
+ helper's `client_name`, `redirect_uris`, `token_endpoint_auth_method`,
78
+ `grant_types`, `response_types` and space-delimited `scope` fields.
79
+
80
+ ## Portable configuration and runtime
81
+
82
+ ```json
83
+ {
84
+ "schemaVersion": 1,
85
+ "registrations": {
86
+ "hex": {
87
+ "source": "own",
88
+ "clientId": "assigned-client-id",
89
+ "clientSecretRef": "env:HEX_CLIENT_SECRET",
90
+ "callbackUrlRef": "env:HEX_CALLBACK_URL"
91
+ }
92
+ },
93
+ "integrations": {
94
+ "analysis": {
95
+ "provider": "hex",
96
+ "accountMode": "assistant",
97
+ "scopes": ["openid", "profile", "email", "offline_access"],
98
+ "authentication": { "method": "oauth2", "registrationRef": "hex" },
99
+ "settings": { "endpoint": "standard" }
100
+ }
101
+ }
102
+ }
103
+ ```
104
+
105
+ CLI and UI validate the same configuration. `endpoint` defaults to `standard`;
106
+ `eu` and `hipaa` select their respective fixed MCP/issuer pair. No arbitrary
107
+ provider URL is accepted. Changing endpoint invalidates a pending attempt and
108
+ requires reconnecting an existing grant. Configuration stores references;
109
+ runtime grants and attempts use the host-selected file store.
110
+
111
+ Compose the existing `oauth-connection` and `assistant-mcp-oauth` patterns with
112
+ this provider. Both operations require granted `openid`. All four permissions
113
+ are selected initially; profile/email/refresh can be omitted. Identity scopes
114
+ are not a read-only tool boundary. The host must authorize the exact tool name,
115
+ arguments, workspace and intended effect. Obtain argument schemas from
116
+ `tools.list`, which accepts an explicit cursor; do not guess Thread fields.
117
+ `tools.call` preserves the result and `isError` flag. Listing tools does not
118
+ grant permission to run an analysis or consume credits.
119
+
120
+ The library does not automatically poll a Thread, fetch all discovery pages,
121
+ retry a call or attach tools to an AI. The host schedules any explicit follow-up
122
+ read and displays its status. Disconnect removes the local grant, not provider
123
+ work already accepted. OAuth here does not implement login to an application.
124
+
125
+ ## Connection ownership and callbacks
126
+
127
+ This fragment is for an explicitly configured assistant host. That host owns its
128
+ client registration, callback, private credentials and grants; it may be an
129
+ application-owned assistant or an opt-in editor tool. Merely adding the provider
130
+ to a project does not authorize the editor's coding assistant. It does not supply
131
+ published app-user login. The host's callback may differ from the published app's
132
+ domain, but it must match that host's real route and registered redirect URI.
133
+
134
+ Register this host's actual callback for the selected Standard, Europe or HIPAA
135
+ endpoint. Its selected endpoint and credentials belong to this connection; keep
136
+ runtime records bound to that owner. Update registration and callback Env when
137
+ the actual callback changes. Separate clients do not establish separate Hex
138
+ workspace credits or capacity. Provider accounts, plans and workspace permissions
139
+ still apply. Selecting the HIPAA endpoint is a routing choice, not a compliance
140
+ certification for JSKIT, Vibe64 or a generated application. The explicit registration and controlled connection UI have been reviewed.
141
+ The explicit Register client and connect action supports DCR; ordinary Connect
142
+ does not silently create another registration.
143
+
144
+ ## Focused verification and limits
145
+
146
+ The controlled tests exercise selected endpoints, PKCE/resource binding,
147
+ registration request/response validation, file restart and encryption, refresh,
148
+ owner and tool policy, consent/permission failures, pagination, redacted errors
149
+ and interruption without replay. Browser proof covers endpoint/permission and
150
+ reference persistence. Live registrations, consent, actual Hex tool calls,
151
+ single-tenant hosts, provider billing and real generated applications are not
152
+ part of that proof. The separate Hex REST API/token mode is not implemented.
153
+
154
+ **LIMITATIONS:** Editor coding-assistant attachment and notebook/Thread widgets
155
+ are deferred. For example an app-owned MCP host can call Hex project or Thread
156
+ tools after its own permission checks, but adding this form does not let Vibe64
157
+ Codex/OpenCode analyze the workspace. The app owns tool discovery/schema use,
158
+ status polling, output rendering, sensitive data policy and credit approval.
159
+ Single-tenant custom hosts, REST/token mode and live Hex execution remain outside
160
+ this adapter. Other frameworks use their native MCP client and the same project
161
+ configuration/Env; they do not need JSKIT or a Node sidecar.
package/docs/heygen.md ADDED
@@ -0,0 +1,124 @@
1
+ # HeyGen
2
+
3
+ Import `heygenProvider` from `@jskit-ai/connectors-catalog/server/heygen`.
4
+ This fragment uses the v3 API to read the current profile and voice catalogue.
5
+
6
+ ## Configure access
7
+
8
+ 1. Sign into the intended HeyGen account. Open the
9
+ [API dashboard](https://app.heygen.com/home?from=&nav=API), also linked from
10
+ the provider guide, and generate an API key.
11
+ 2. Restrict the key to `account:read` for profile verification and `voices:read`
12
+ for voice listing. Copy it into backend Env as `HEYGEN_API_KEY`. API-key billing and
13
+ subscription OAuth are separate arrangements; use a key for the REST mode.
14
+ [Key setup](https://developers.heygen.com/docs/api-key).
15
+ 3. Save provider `heygen`, mode `shared` or `assistant`, `scopes: []`, and
16
+ authentication `{ "method": "api-key", "secretRef": "env:HEYGEN_API_KEY" }`.
17
+ 4. In the screen, Save configuration, choose Set credential in Env, save the
18
+ actual key as `HEYGEN_API_KEY`, then return and choose Connect account.
19
+ CLI applications run `connectApiKey`. The verifier calls `GET /v3/users/me`, which returns
20
+ profile and billing fields under `data`. Replace the provider key in Env
21
+ when rotating it; local disconnect does not revoke remote access.
22
+ [Profile endpoint](https://developers.heygen.com/reference/get-current-user).
23
+
24
+ ## Runtime and AI composition
25
+
26
+ `profile.read` accepts no inputs. `voices.list` reads `GET /v3/voices` and
27
+ accepts `limit` (1–100, default 20), `token`, `type` (`public` by default or
28
+ `private`), `engine`, `language` and `gender` (`male` or `female`). Pass the
29
+ returned `next_token` as `token` when `has_more` is true. These calls use
30
+ `x-api-key` against `https://api.heygen.com`; neither creates speech or video.
31
+ [Voice endpoint](https://developers.heygen.com/reference/list-voices).
32
+
33
+ Use the [API-key pattern](../patterns/api-key-connection/PATTERN.md) with this
34
+ provider and the private JSON store. AI-written applications can select voice
35
+ IDs from the catalogue; generation, consent to cloning, billing and job handling
36
+ remain additional application work. No arbitrary endpoint is accepted as input.
37
+
38
+ ## Automation and application ownership
39
+
40
+ The verified key bootstrap is the API dashboard. An AI can prepare JSON and
41
+ library composition afterwards; this pass does not establish a key-creation API.
42
+ The application owner supplies its key through private Env and arranges provider
43
+ billing/capacity. Two named keys alone do not create independent budgets.
44
+ Subscription provisioning remains provider-owned. Browser OAuth is available through the separate MCP mode below.
45
+
46
+ Tests cover profile verification, voice filters, paging, defaults, private-file
47
+ restart, key replacement, isolation, disconnect and provider errors. They use
48
+ simulated responses and do not create media or access a real HeyGen account.
49
+
50
+
51
+ ## MCP OAuth connection
52
+
53
+ The captured Lovable chat connection opened HeyGen OAuth. The current
54
+ [MCP guide](https://developers.heygen.com/mcp/overview) still describes browser
55
+ OAuth at `https://mcp.heygen.com/mcp/v1/`, drawing on the connected account's
56
+ plan. The same provider now exposes that path as OAuth with `tools.list` and
57
+ `tools.call`. The runtime rejects cross-method operations before refresh or
58
+ transport. Neither current authentication mode is retired.
59
+
60
+ On 2026-09-12, the MCP host's authorization-server metadata redirected to
61
+ `https://api2.heygen.com/.well-known/oauth-authorization-server`. That published
62
+ metadata advertises issuer `https://api2.heygen.com`, authorization/token/client
63
+ registration at `/v1/oauth/authorize`, `/v1/oauth/token`, `/v1/oauth/register`,
64
+ S256, code/refresh grants, resource indicators and identity scopes `openid`,
65
+ `profile`, `email`. It supports confidential and public client authentication.
66
+ The protected-resource metadata identifies `https://mcp.heygen.com` as the
67
+ OAuth resource, distinct from the transport endpoint's `/mcp/v1/` path. The
68
+ adapter uses that root resource in authorization and token requests and reuses
69
+ the existing MCP transport and method-specific connection lifecycle. No live
70
+ client was registered or account connected during this inspection.
71
+
72
+ To configure the OAuth assistant connection:
73
+
74
+ 1. Select Assistant access and OAuth. Keep `openid`, `profile`, `email` selected.
75
+ 2. Confirm Suggested callback URL is the route the host will serve. Choose
76
+ Register client and connect: the public editor invokes the fixed-authority
77
+ helper and saves ID, secret and callback in project configuration/private Env.
78
+ Manual fallback: send one POST to the displayed endpoint with its JSON body
79
+ and Content-Type application/json. CLI users can call
80
+ `registerHeyGenClient({ clientName, callbackUrl })`, exported beside the provider.
81
+ 3. For manual registration, copy `client_id` into Client ID and Save configuration. Use Set credential in
82
+ Env to save `client_secret` under the displayed reference; use Set callback
83
+ in Env to save the exact registered callback. Keep the response private.
84
+ 4. Return, save and Connect account. Sign into HeyGen and approve consent.
85
+ Verification lists tools and creates no media. The host must authorize each
86
+ tool name and arguments; tools can incur credits and change or delete content.
87
+ 5. Reconnect repeats consent. Disconnect removes local state, does not undo work
88
+ and does not promise provider-wide revocation.
89
+
90
+ The application/assistant host owns its registration, callback, Env and grants.
91
+ There is no Vibe64 gateway. Ordinary Connect never silently registers a client;
92
+ the explicit Register client and connect action uses the existing helper. Metadata
93
+ advertises a revocation endpoint, but this adapter's Disconnect remains local;
94
+ no provider-wide revocation claim is made. Both credential instruction screens were rendered and reviewed with controlled
95
+ connection fixtures on 2026-09-12. Live provider authorization remains untested.
96
+
97
+ [API-key permission mapping](https://developers.heygen.com/docs/api-key-permissions)
98
+ confirms the read scopes required by this REST fragment. Provider keys and MCP
99
+ grants remain distinct; do not send one credential type to the other service.
100
+
101
+ ## Media tools and limits
102
+
103
+ Use `tools.list` to obtain the connected account's current tool names and input
104
+ schemas; the [MCP guide](https://developers.heygen.com/mcp/overview) describes
105
+ video creation/status, avatars, speech and translation (reviewed 2026-09-13).
106
+ The host invokes `tools.call` with the discovered schema, checks `isError`, and
107
+ polls the corresponding status tool for asynchronous work. API-key profile/voice
108
+ reads are not a substitute for these OAuth media tools. Identity scopes do not
109
+ make tool calls read-only: the application must authorize the exact tool and
110
+ arguments before calling, and confirm chargeable/destructive operations. Do not
111
+ retry an uncertain creation blindly; reconcile its session/job ID first.
112
+
113
+ **LIMITATIONS:** No editor-assistant attachment, video editor, automatic media-job
114
+ worker or API-key media generation is included. Example: an authorized MCP host
115
+ can submit a video request and retrieve its status, but this form alone does not
116
+ make Codex create a video or render progress. The app owns polling, downloads,
117
+ user consent, content rights and credit limits. Fixtures prove transport and
118
+ host policy, not actual media generation or current plan entitlement.
119
+
120
+ CLI Node applications use the same exported provider and registration helper,
121
+ JSON and Env without Vibe64. Other frameworks use their native MCP/OAuth client
122
+ with those same project-owned configuration values; no JSKIT runtime or Node
123
+ sidecar is required. Select tools from discovery rather than hard-coding this
124
+ module's example catalogue as permanent provider API contracts.
@@ -0,0 +1,142 @@
1
+ # HubSpot
2
+
3
+ Import `hubspotProvider` from `@jskit-ai/connectors-catalog/server/hubspot`.
4
+ The adapter manages contacts, deals and their relationships using a private/static token or a project-owned OAuth
5
+ registration. Each-user connections are isolated by application subject identity.
6
+
7
+ ## Configure access through the console
8
+
9
+ 1. As a HubSpot super admin, select the account that owns the CRM data.
10
+ 2. Open **Development → Legacy apps → Create legacy app → Private**.
11
+ 3. In **Basic Info**, enter an identifying name and description.
12
+ 4. Open **Scopes → Add new scope**, find `crm.objects.contacts.read`, select
13
+ it, and click **Update**. For writes add `crm.objects.contacts.write`; for deals/pipelines add
14
+ `crm.objects.deals.read`, and for deal writes/relationships add
15
+ `crm.objects.deals.write`. Match the selected permissions in configuration.
16
+ 5. Click **Create app**, then **Continue creating**. Open the app's **Auth** tab
17
+ and use **Show token → Copy**. Store the token in backend Env.
18
+ 6. In `integrations.json`, use provider `hubspot`, mode `shared` or `assistant`,
19
+ `scopes: ["crm.objects.contacts.read"]`, and authentication `{ "method": "api-key", "secretRef":
20
+ "env:HUBSPOT_API_KEY" }`. Verify through `connectApiKey`.
21
+ 7. Use the Auth tab to rotate/revoke the token and update its Env value.
22
+ [Private-app console guide](https://developers.hubspot.com/docs/apps/legacy-apps/private-apps/overview).
23
+
24
+ ## Runtime and AI composition
25
+
26
+ `contacts.list` calls `GET https://api.hubapi.com/crm/objects/2026-09/contacts`
27
+ with a Bearer token. Inputs: `limit` (1–100, default 20), optional `after`,
28
+ and `archived` (default false). Results include `results` and optional
29
+ `paging.next.after`, which the caller passes to the next request. This operation
30
+ also verifies the credential. See the [contacts contract](https://developers.hubspot.com/docs/api-reference/latest/crm/objects/contacts/guide).
31
+
32
+ Compose the [API-key pattern](../patterns/api-key-connection/PATTERN.md) with
33
+ this provider. A new-platform static token uses the same authentication mechanism;
34
+ OAuth consent and refresh use the existing connection lifecycle.
35
+
36
+ ## Provisioning automation and quota separation
37
+
38
+ HubSpot's current developer platform supports CLI provisioning after account
39
+ authentication. An AI can prepare distinct app UIDs, scopes and configuration,
40
+ then use the documented `hs project create` and upload workflow. Choose private
41
+ distribution/static authentication for one account, or an appropriate OAuth
42
+ distribution for multiple accounts. Operator account authorization and installation
43
+ still occur. The legacy console route above is available without requiring this
44
+ developer-project workflow.
45
+ [CLI app creation](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/create-an-app),
46
+ [authentication modes](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/authentication/overview).
47
+
48
+ Create a private app and credentials for the application owner. Private-app burst
49
+ limits may be app-specific while daily limits are account-wide; two private apps
50
+ in one account therefore do not fully isolate capacity. Application usage must
51
+ respect both boundaries. Tests simulate pagination, file persistence, key rotation,
52
+ cross-app isolation, bad credentials and rate limits. No CRM account was contacted.
53
+
54
+ ## OAuth registration and project setup
55
+
56
+ 1. Follow the [developer-project guide](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/create-an-app)
57
+ to authenticate HubSpot CLI and run `hs project create`. Select App and OAuth.
58
+ 2. Configure `src/app/app-hsmeta.json`: `config.auth.type` is `oauth`,
59
+ `redirectUrls` contains this project's exact Suggested callback URL, and
60
+ `requiredScopes` includes `oauth` and `crm.objects.contacts.read`. Upload with
61
+ `hs project upload`. The callback belongs to the application backend.
62
+ 3. Run `hs project open`, choose the app under Project Components, and open
63
+ **Auth → Client credentials**. Copy Client ID into the integration form.
64
+ Save configuration, use **Set credential in Env** for the client secret, and
65
+ **Set callback in Env** for the exact registered callback.
66
+ 4. Keep both permissions selected. Shared access connects from project settings;
67
+ per-user access connects from the application's account screen. Application
68
+ login is separate. Tokens and refresh credentials stay in its private store.
69
+ 5. Disconnect deletes the local grant. Remove the installation in HubSpot
70
+ separately when provider access must end. No provider-wide revocation is
71
+ implemented here.
72
+
73
+ Private OAuth distribution is limited to ten allowlisted HubSpot accounts; use
74
+ HubSpot's marketplace distribution process for broader distribution. See the
75
+ [authentication overview](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/authentication/overview).
76
+ The normal installation is account-level: a per-user local grant does not promise
77
+ that HubSpot restricts records to that person's ownership. The app must enforce
78
+ business authorization. See [app access configuration](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/app-configuration).
79
+
80
+ The [current token API](https://developers.hubspot.com/docs/api-reference/latest/authentication/manage-oauth-tokens)
81
+ uses `https://api.hubspot.com/oauth/2026-09/token` for code and refresh exchanges.
82
+ Client credentials are form-body values; the documented confidential flow does
83
+ not use PKCE. Authorization opens `https://app.hubspot.com/oauth/authorize`.
84
+ The adapter converts the response's `scopes` array into the shared runtime's
85
+ permission format and rejects malformed grants. Missing contact permission
86
+ prevents contact reads even after refresh. There is no central token gateway.
87
+
88
+ Three OAuth cases and two API-key cases passed with controlled fixtures. Both
89
+ credential screens were rendered and reviewed on 2026-09-12. No live installation,
90
+ CRM request or generated-app execution is claimed.
91
+
92
+ ## Lead-to-deal workflow
93
+
94
+ The current [contact](https://developers.hubspot.com/docs/api-reference/latest/crm/objects/contacts/guide),
95
+ [deal](https://developers.hubspot.com/docs/api-reference/latest/crm/objects/deals/guide),
96
+ [association](https://developers.hubspot.com/docs/api-reference/latest/crm/associations/associate-records/guide)
97
+ and [pipeline](https://developers.hubspot.com/docs/api-reference/latest/crm/pipelines/guide)
98
+ contracts were reviewed 2026-09-13. Operations use the documented 2026-09 routes.
99
+
100
+ `contacts` and `deals` each expose `.list`, `.get`, `.create`, `.update`.
101
+ Lists accept limit/after, archived, comma-separated properties and associations;
102
+ get takes numeric-string `id` plus those read fields except limit/after. Writes
103
+ accept a `properties` object of 1–100 string values, at most 100KB. Empty string
104
+ clears a value. Contact creation requires email, firstname or lastname. Deal
105
+ creation requires dealname and the internal dealstage ID; set pipeline when the
106
+ account has multiple pipelines. `.update` requires `id` and does not replace
107
+ unspecified properties. HubSpot validates property types and business rules.
108
+
109
+ `pipelines.list` returns deal pipeline/stage IDs. `deals.associateContact` takes
110
+ numeric-string `dealId` and `contactId`, creating the default unlabeled relation.
111
+ It requires both contact and deal write permissions. Object reads/writes require
112
+ the corresponding `crm.objects.contacts|deals.read|write` scope. Update provider
113
+ permissions and consent as needed; ticking this screen cannot grant provider access.
114
+
115
+ ```js
116
+ // `connection`, `context` and integrationId come from the app-owned runtime.
117
+ const call = (operation, input = {}) => connection.invoke({ context, integrationId, operation, input });
118
+ const pipelines = await call("pipelines.list");
119
+ // Select the intended pipeline and stage from returned IDs; never assume a label.
120
+ const pipeline = pipelines.results.find(item => item.id === selectedPipelineId);
121
+ const contact = await call("contacts.create", { properties: { email: customer.email, firstname: customer.name } });
122
+ const deal = await call("deals.create", { properties: {
123
+ dealname: "Grooming booking", pipeline: pipeline.id, dealstage: selectedStageId, amount: "80.00"
124
+ } });
125
+ await call("deals.associateContact", { contactId: contact.id, dealId: deal.id });
126
+ // On the app's authorized booking-confirmed event:
127
+ await call("deals.update", { id: deal.id, properties: { dealstage: confirmedStageId } });
128
+ ```
129
+
130
+ The application owns triggering events, record access checks and duplicate
131
+ prevention. Persist returned IDs; reconcile partial/uncertain writes instead of
132
+ blindly retrying creation. The library performs no hidden workflow or sync.
133
+ CLI JSKIT apps use the same JSON/Env and exported provider without the editor;
134
+ other frameworks use their native HTTP/HubSpot client with the same project
135
+ configuration and operation sequence. Keys and tokens stay server-side.
136
+
137
+ **LIMITATIONS:** No CRM dashboard, workflow designer/engine, webhook receiver,
138
+ bulk import/sync, custom association labels, company/ticket API or archive/delete
139
+ operations. Example: a booking app can create a linked deal and advance its stage,
140
+ but it must supply the trigger and cannot import an entire CRM automatically.
141
+ Editor-assistant attachment is deferred. Fixture success does not prove live CRM
142
+ installation, property availability, subscription features or generated-app use.
@@ -0,0 +1,118 @@
1
+ # incident.io
2
+
3
+ Import `incidentIoProvider` from
4
+ `@jskit-ai/connectors-catalog/server/incident-io`.
5
+ The adapter reads and manages incidents, follow-ups and catalogue entries,
6
+ resolves alerts and reads schedules using an organization's API key.
7
+
8
+ ## Configure access
9
+
10
+ 1. Select the intended incident.io organization. Open **Settings**, then
11
+ **API keys**, and create a key named for this application.
12
+ 2. Grant `viewer` access to the relevant incidents. Review account and team
13
+ permissions before creating the key; for writes add Create incidents / Edit incidents, for alert/schedule
14
+ reads choose View on-call resources / Read schedules, and for catalogue
15
+ access choose View catalog / Manage catalog. Inspect each permission
16
+ scopes badge: follow-up writes require `follow_ups.create` and
17
+ `follow_ups.update`; alert resolution requires `alerts.resolve`. Restrict
18
+ team-scoped permissions to intended teams. The token cannot exceed your
19
+ own authority.
20
+ 3. Copy its value into backend Env as `INCIDENT_IO_API_KEY`.
21
+ 4. Save provider `incident-io`, mode `shared` or `assistant`, `scopes: []`,
22
+ authentication
23
+ `{ "method": "api-key", "secretRef": "env:INCIDENT_IO_API_KEY" }`.
24
+ 5. In the form Save configuration, choose Set credential in Env and store the
25
+ key, then return to Connect account. CLI apps run `connectApiKey`. It verifies incident access by reading the list, not by
26
+ creating an incident. Manage or revoke the provider key from API keys;
27
+ local disconnect does not revoke it remotely.
28
+ [API introduction](https://docs.incident.io/api-reference/introduction).
29
+
30
+ ## Runtime and AI composition
31
+
32
+ `incidents.list` uses `GET https://api.incident.io/v2/incidents` with Bearer
33
+ authorization. Inputs are `page_size` (1–500, default 25), optional `after`,
34
+ and `sort_by` (`created_at_newest_first`, the default, or
35
+ `created_at_oldest_first`). The response retains incident records and optional
36
+ `pagination_meta`. Pass its `after` value for the next page; absence of paging
37
+ metadata is valid. The fragment does not implement all server-side filters.
38
+ [Endpoint schema](https://docs.incident.io/openapi/tags/incidents-v2.json).
39
+
40
+ The [API-key pattern](../patterns/api-key-connection/PATTERN.md) supplies
41
+ configuration, connection-service and JSON file-store composition for CLI or
42
+ editor consumers. The application decides which users can read its shared
43
+ incident data.
44
+
45
+ ## Automation and application ownership
46
+
47
+ After an administrator creates a bootstrap key with `api_keys_manage`, an AI
48
+ can provision additional keys through `POST /v1/api_keys`. Supply a name,
49
+ account `role_names`, and any intended team IDs/team roles. The caller may
50
+ delegate only a subset of its own authority; the API cannot delegate
51
+ `api_keys_manage`. Capture the returned secret in the backend environment.
52
+ Key creation is an administrative action, not part of connection verification.
53
+ [Key API schema](https://docs.incident.io/openapi/tags/api-keys-v1.json).
54
+
55
+ Application keys can be provisioned and revoked independently, but shared
56
+ provider limits may still apply. Renaming keys is insufficient proof of isolated
57
+ capacity. The application owner supplies its authorized key through private Env.
58
+
59
+ Tests cover ordering, paging, omitted metadata, malformed results, restart,
60
+ rotation, isolation and 401/403/429 failures without live incident access.
61
+
62
+ ## Incident recovery and catalogue operations
63
+
64
+ Contracts reviewed 2026-09-13 from the provider's OpenAPI:
65
+ [incidents](https://docs.incident.io/openapi/tags/incidents-v2.json),
66
+ [follow-ups](https://docs.incident.io/openapi/tags/follow-ups-v2.json),
67
+ [alerts](https://docs.incident.io/openapi/tags/alerts-v2.json),
68
+ [schedules](https://docs.incident.io/openapi/tags/schedules-v2.json),
69
+ [catalogue](https://docs.incident.io/openapi/tags/catalog-v3.json).
70
+
71
+ - `incidents.get({id})`, `.create({idempotency_key, visibility, name?, summary?,
72
+ severity_id?, incident_status_id?, incident_type_id?, mode?})`; mode defaults
73
+ to standard. Set public/private visibility explicitly. Standard incidents can
74
+ create Slack announcements. Retain the event's idempotency key across retries.
75
+ - `incidents.update({id, incident, notify_incident_channel})` edits only supplied
76
+ name, summary, severity_id or incident_status_id. The notification choice is
77
+ mandatory. Copy status/severity IDs from your account's records/API, not labels.
78
+ - `followUps.list({incident_id?, incident_mode?, assignee_team_id?})`, `.get({id})`,
79
+ `.create({incident_id,title,description?,assignee_id?,assignee_team_id?,
80
+ follow_up_category_id?,follow_up_priority_option_id?})`; `.update` takes `id`,
81
+ required current title and status, plus those optional editable fields.
82
+ Status is outstanding/completed/deleted/not_doing. Fetch the current record
83
+ before updating; this is the provider's PUT contract, not a partial PATCH.
84
+ - `alerts.list({page_size?,after?})` (maximum 50), `.get({id})`, `.resolve({id})`.
85
+ Already-resolved alerts are a provider no-op. Externally resolved sources can
86
+ return 422; resolve those in their source system. Private alerts need provider
87
+ permission and may otherwise appear as 404.
88
+ - `schedules.list({page_size?,after?})` caps pages at 25 to retain next_shifts;
89
+ `.get({id})` reads a schedule. No rota creation or override management.
90
+ - `catalog.types()`, `.list({catalog_type_id,page_size?,after?,identifier?})`
91
+ (maximum 250), `.get({id})`, `.create({catalog_type_id,name,attribute_values,
92
+ external_id?})`, `.update({id,name,attribute_values,external_id?})`.
93
+ Bind attribute IDs to `{value:{literal:"..."}}` or
94
+ `{array_value:[{literal:"..."}]}`. Maximum 250 attributes / 100KB, with up to
95
+ 100 array values. Fetch existing values and send the intended full map when
96
+ updating. Matching external_id/catalog_type_id on creation can update an
97
+ existing entry; authorize that target first. Provider schemas determine which
98
+ attribute IDs/types are valid.
99
+
100
+ For example, an app receives its own outage event, creates an incident with a
101
+ stable idempotency key, assigns a follow-up, reads the next on-call shift and
102
+ updates the recovery summary. After recovery it explicitly resolves an eligible
103
+ alert and marks the follow-up completed. All triggers, authorization, correlation
104
+ IDs and retry/reconciliation decisions belong to that app. The connector performs
105
+ one requested operation at a time; verification never creates incidents.
106
+
107
+ The UI, CLI and AI-written Node apps use the same JSON/Env and exported runtime.
108
+ Other frameworks use their native HTTP client with the same configuration and
109
+ provider contracts. No editor or JSKIT process is required in their deployment.
110
+ No OAuth registration/callback is needed. AI may prepare configuration and key
111
+ provisioning after an authorized bootstrap key; the owner supplies initial access.
112
+
113
+ **LIMITATIONS:** No incident dashboard, scheduling/paging engine, alert ingestion,
114
+ workflow engine, webhook receiver, postmortem importer, custom-field/role editing,
115
+ catalogue schema editing or bulk synchronizer. Example: an app can show the next
116
+ shift and resolve an alert, but cannot generate a rota or start monitoring servers
117
+ just by connecting. Editor-assistant attachment is deferred. Fixture tests do not
118
+ prove live delivery, role entitlement or provider-side workflow effects.