@agent-native/core 0.106.3 → 0.107.0

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 (196) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +13 -0
  3. package/corpus/core/docs/content/integrations.mdx +597 -0
  4. package/corpus/core/docs/content/locales/ar-SA/mcp-clients.mdx +19 -1
  5. package/corpus/core/docs/content/locales/de-DE/mcp-clients.mdx +22 -1
  6. package/corpus/core/docs/content/locales/es-ES/mcp-clients.mdx +23 -1
  7. package/corpus/core/docs/content/locales/fr-FR/mcp-clients.mdx +23 -1
  8. package/corpus/core/docs/content/locales/hi-IN/mcp-clients.mdx +22 -1
  9. package/corpus/core/docs/content/locales/ja-JP/mcp-clients.mdx +21 -1
  10. package/corpus/core/docs/content/locales/ko-KR/mcp-clients.mdx +20 -1
  11. package/corpus/core/docs/content/locales/pt-BR/mcp-clients.mdx +22 -1
  12. package/corpus/core/docs/content/locales/zh-CN/mcp-clients.mdx +17 -1
  13. package/corpus/core/docs/content/locales/zh-TW/mcp-clients.mdx +17 -1
  14. package/corpus/core/docs/content/mcp-clients.mdx +51 -1
  15. package/corpus/core/docs/content/organizations-teams-permissions.mdx +413 -0
  16. package/corpus/core/package.json +1 -1
  17. package/corpus/core/src/client/AssistantChat.tsx +13 -1
  18. package/corpus/core/src/client/chat/message-components.tsx +41 -0
  19. package/corpus/core/src/client/composer/TiptapComposer.tsx +45 -8
  20. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +30 -11
  21. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +240 -0
  22. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +159 -40
  23. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +433 -4
  24. package/corpus/core/src/client/resources/mcp-integration-logos.ts +108 -0
  25. package/corpus/core/src/deploy/build.ts +32 -0
  26. package/corpus/core/src/extensions/html-shell.ts +33 -1
  27. package/corpus/core/src/ingestion/office.ts +1 -2
  28. package/corpus/core/src/ingestion/pptx.ts +2 -4
  29. package/corpus/core/src/localization/default-messages.ts +126 -1
  30. package/corpus/core/src/mcp/actions/call-mcp-tool.ts +1 -0
  31. package/corpus/core/src/server/index.ts +4 -0
  32. package/corpus/core/src/server/org-admin.ts +28 -0
  33. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
  34. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
  35. package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
  36. package/corpus/templates/analytics/.agents/skills/creative-context/SKILL.md +64 -0
  37. package/corpus/templates/analytics/AGENTS.md +5 -0
  38. package/corpus/templates/analytics/actions/clone-creative-context-dashboard.ts +86 -0
  39. package/corpus/templates/analytics/app/components/layout/Layout.tsx +2 -0
  40. package/corpus/templates/analytics/app/i18n/zh-TW.ts +1 -0
  41. package/corpus/templates/analytics/app/i18n-data.ts +1 -0
  42. package/corpus/templates/analytics/app/pages/Ask.tsx +8 -4
  43. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +59 -0
  44. package/corpus/templates/analytics/app/routes/agent.tsx +7 -1
  45. package/corpus/templates/analytics/changelog/2026-07-17-library-now-flags-published-dashboards-with-newer-versions-a.md +6 -0
  46. package/corpus/templates/analytics/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  47. package/corpus/templates/analytics/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  48. package/corpus/templates/analytics/package.json +1 -0
  49. package/corpus/templates/analytics/server/lib/native-creative-context.ts +158 -0
  50. package/corpus/templates/analytics/server/plugins/creative-context.ts +10 -0
  51. package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +12 -3
  52. package/corpus/templates/assets/AGENTS.md +5 -0
  53. package/corpus/templates/assets/actions/clone-creative-context-asset.ts +74 -0
  54. package/corpus/templates/assets/app/hooks/use-navigation-state.ts +2 -1
  55. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +308 -178
  56. package/corpus/templates/assets/app/routes/library.tsx +5 -11
  57. package/corpus/templates/assets/changelog/2026-07-17-library-now-flags-published-assets-with-newer-versions-and-l.md +6 -0
  58. package/corpus/templates/assets/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  59. package/corpus/templates/assets/server/lib/native-creative-context.ts +198 -0
  60. package/corpus/templates/assets/server/plugins/creative-context.ts +4 -0
  61. package/corpus/templates/brain/actions/provider-api-request.ts +1 -0
  62. package/corpus/templates/calendar/actions/provider-api-request.ts +1 -0
  63. package/corpus/templates/clips/actions/get-recording-insights.ts +7 -4
  64. package/corpus/templates/clips/actions/list-recordings.ts +48 -0
  65. package/corpus/templates/clips/actions/list-viewers.ts +2 -1
  66. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +3 -1
  67. package/corpus/templates/clips/app/components/player/share-dialog.tsx +1 -3
  68. package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +11 -6
  69. package/corpus/templates/clips/app/hooks/use-view-tracking.ts +6 -1
  70. package/corpus/templates/clips/app/lib/ffmpeg-export.ts +4 -2
  71. package/corpus/templates/clips/app/routes/share.$shareId.tsx +21 -3
  72. package/corpus/templates/clips/changelog/2026-07-17-dictation-keeps-sentence-spacing-and-no-longer-crashes-when-.md +6 -0
  73. package/corpus/templates/clips/changelog/2026-07-17-shared-clips-now-preserve-editor-access-and-show-editor-insi.md +6 -0
  74. package/corpus/templates/clips/changelog/2026-07-17-stitching-clips-no-longer-fails-when-editor-media-metadata-i.md +6 -0
  75. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +14 -8
  76. package/corpus/templates/clips/shared/view-analytics.ts +4 -0
  77. package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +12 -3
  78. package/corpus/templates/content/AGENTS.md +5 -0
  79. package/corpus/templates/content/actions/clone-creative-context-document.ts +61 -0
  80. package/corpus/templates/content/actions/provider-api-request.ts +1 -0
  81. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +21 -0
  82. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +29 -0
  83. package/corpus/templates/content/changelog/2026-07-17-library-now-flags-published-documents-with-newer-versions-an.md +6 -0
  84. package/corpus/templates/content/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  85. package/corpus/templates/content/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  86. package/corpus/templates/content/parity/matrix.md +1 -1
  87. package/corpus/templates/content/parity/matrix.ts +1 -0
  88. package/corpus/templates/content/server/lib/native-creative-context.ts +191 -0
  89. package/corpus/templates/content/server/plugins/creative-context.ts +8 -1
  90. package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +11 -3
  91. package/corpus/templates/design/AGENTS.md +5 -0
  92. package/corpus/templates/design/actions/clone-creative-context-design-native.ts +111 -0
  93. package/corpus/templates/design/actions/provider-api-request.ts +1 -0
  94. package/corpus/templates/design/app/pages/Index.tsx +44 -0
  95. package/corpus/templates/design/app/pages/design-editor/types.ts +1 -0
  96. package/corpus/templates/design/changelog/2026-07-17-library-now-flags-published-designs-with-newer-versions-and-.md +6 -0
  97. package/corpus/templates/design/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  98. package/corpus/templates/design/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  99. package/corpus/templates/design/server/lib/native-creative-context.ts +265 -0
  100. package/corpus/templates/design/server/plugins/creative-context.ts +8 -1
  101. package/corpus/templates/dispatch/actions/provider-api-request.ts +1 -0
  102. package/corpus/templates/mail/actions/provider-api-request.ts +1 -0
  103. package/corpus/templates/slides/.agents/skills/creative-context/SKILL.md +11 -3
  104. package/corpus/templates/slides/AGENTS.md +5 -0
  105. package/corpus/templates/slides/actions/clone-creative-context-deck.ts +96 -0
  106. package/corpus/templates/slides/actions/extract-pdf.ts +3 -2
  107. package/corpus/templates/slides/actions/import-file.ts +3 -2
  108. package/corpus/templates/slides/actions/provider-api-request.ts +1 -0
  109. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +27 -0
  110. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +21 -0
  111. package/corpus/templates/slides/changelog/2026-07-17-library-now-flags-published-decks-with-newer-versions-and-le.md +6 -0
  112. package/corpus/templates/slides/changelog/2026-07-17-pdf-and-powerpoint-imports-now-work-reliably-in-hosted-decks.md +6 -0
  113. package/corpus/templates/slides/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  114. package/corpus/templates/slides/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  115. package/corpus/templates/slides/server/lib/native-creative-context.ts +288 -0
  116. package/corpus/templates/slides/server/plugins/creative-context.ts +4 -0
  117. package/dist/client/AssistantChat.d.ts.map +1 -1
  118. package/dist/client/AssistantChat.js +8 -2
  119. package/dist/client/AssistantChat.js.map +1 -1
  120. package/dist/client/chat/message-components.d.ts.map +1 -1
  121. package/dist/client/chat/message-components.js +35 -1
  122. package/dist/client/chat/message-components.js.map +1 -1
  123. package/dist/client/composer/TiptapComposer.d.ts +7 -0
  124. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  125. package/dist/client/composer/TiptapComposer.js +37 -8
  126. package/dist/client/composer/TiptapComposer.js.map +1 -1
  127. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  128. package/dist/client/integrations/IntegrationsPanel.js +3 -2
  129. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  130. package/dist/client/resources/McpConnectionSuggestion.d.ts +9 -0
  131. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -0
  132. package/dist/client/resources/McpConnectionSuggestion.js +115 -0
  133. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -0
  134. package/dist/client/resources/McpIntegrationDialog.d.ts +2 -1
  135. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  136. package/dist/client/resources/McpIntegrationDialog.js +48 -20
  137. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  138. package/dist/client/resources/mcp-integration-catalog.d.ts +9 -0
  139. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  140. package/dist/client/resources/mcp-integration-catalog.js +387 -4
  141. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  142. package/dist/client/resources/mcp-integration-logos.d.ts +2 -0
  143. package/dist/client/resources/mcp-integration-logos.d.ts.map +1 -0
  144. package/dist/client/resources/mcp-integration-logos.js +109 -0
  145. package/dist/client/resources/mcp-integration-logos.js.map +1 -0
  146. package/dist/collab/awareness.d.ts +2 -2
  147. package/dist/collab/awareness.d.ts.map +1 -1
  148. package/dist/deploy/build.d.ts.map +1 -1
  149. package/dist/deploy/build.js +23 -0
  150. package/dist/deploy/build.js.map +1 -1
  151. package/dist/extensions/html-shell.d.ts.map +1 -1
  152. package/dist/extensions/html-shell.js +33 -1
  153. package/dist/extensions/html-shell.js.map +1 -1
  154. package/dist/ingestion/office.d.ts.map +1 -1
  155. package/dist/ingestion/office.js +1 -2
  156. package/dist/ingestion/office.js.map +1 -1
  157. package/dist/ingestion/pptx.js +2 -4
  158. package/dist/ingestion/pptx.js.map +1 -1
  159. package/dist/localization/default-messages.d.ts +98 -0
  160. package/dist/localization/default-messages.d.ts.map +1 -1
  161. package/dist/localization/default-messages.js +99 -1
  162. package/dist/localization/default-messages.js.map +1 -1
  163. package/dist/mcp/actions/call-mcp-tool.js +1 -0
  164. package/dist/mcp/actions/call-mcp-tool.js.map +1 -1
  165. package/dist/notifications/routes.d.ts +1 -1
  166. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  167. package/dist/resources/handlers.d.ts +1 -1
  168. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  169. package/dist/server/index.d.ts +1 -0
  170. package/dist/server/index.d.ts.map +1 -1
  171. package/dist/server/index.js +1 -0
  172. package/dist/server/index.js.map +1 -1
  173. package/dist/server/org-admin.d.ts +3 -0
  174. package/dist/server/org-admin.d.ts.map +1 -0
  175. package/dist/server/org-admin.js +24 -0
  176. package/dist/server/org-admin.js.map +1 -0
  177. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
  178. package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
  179. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
  180. package/docs/content/integrations.mdx +597 -0
  181. package/docs/content/locales/ar-SA/mcp-clients.mdx +19 -1
  182. package/docs/content/locales/de-DE/mcp-clients.mdx +22 -1
  183. package/docs/content/locales/es-ES/mcp-clients.mdx +23 -1
  184. package/docs/content/locales/fr-FR/mcp-clients.mdx +23 -1
  185. package/docs/content/locales/hi-IN/mcp-clients.mdx +22 -1
  186. package/docs/content/locales/ja-JP/mcp-clients.mdx +21 -1
  187. package/docs/content/locales/ko-KR/mcp-clients.mdx +20 -1
  188. package/docs/content/locales/pt-BR/mcp-clients.mdx +22 -1
  189. package/docs/content/locales/zh-CN/mcp-clients.mdx +17 -1
  190. package/docs/content/locales/zh-TW/mcp-clients.mdx +17 -1
  191. package/docs/content/mcp-clients.mdx +51 -1
  192. package/docs/content/organizations-teams-permissions.mdx +413 -0
  193. package/package.json +1 -1
  194. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
  195. package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
  196. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
@@ -3,8 +3,23 @@ import {
3
3
  type McpIntegrationsConfigInput,
4
4
  type NormalizedMcpIntegrationsConfig,
5
5
  } from "../../shared/mcp-integration-config.js";
6
+ import { mcpIntegrationLogo } from "./mcp-integration-logos.js";
6
7
 
7
8
  export type McpIntegrationAuthMode = "none" | "headers" | "oauth";
9
+ export type McpIntegrationConnectionMode =
10
+ | "direct"
11
+ | "headers"
12
+ | "oauth"
13
+ | "manual";
14
+ export type McpIntegrationAvailability =
15
+ | "ready"
16
+ | "beta"
17
+ | "provider-setup"
18
+ | "client-restricted";
19
+ export type McpIntegrationVerification =
20
+ | "verified"
21
+ | "preflight-only"
22
+ | "restricted";
8
23
 
9
24
  declare const __AGENT_NATIVE_MCP_INTEGRATIONS_CONFIG__:
10
25
  | NormalizedMcpIntegrationsConfig
@@ -20,6 +35,10 @@ export interface DefaultMcpIntegration {
20
35
  useCaseKey: string;
21
36
  url: string;
22
37
  authMode: McpIntegrationAuthMode;
38
+ connectionMode: McpIntegrationConnectionMode;
39
+ availability: McpIntegrationAvailability;
40
+ verification: McpIntegrationVerification;
41
+ logoUrl: string;
23
42
  docsUrl?: string;
24
43
  setupNoteKey?: string;
25
44
  headerPlaceholder?: string;
@@ -52,6 +71,10 @@ export const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [
52
71
  useCaseKey: "mcpIntegrations.catalog.context7.useCase",
53
72
  url: "https://mcp.context7.com/mcp",
54
73
  authMode: "none",
74
+ connectionMode: "direct",
75
+ availability: "ready",
76
+ verification: "verified",
77
+ logoUrl: mcpIntegrationLogo("context7"),
55
78
  docsUrl: "https://context7.com/",
56
79
  keywords: ["docs", "documentation", "libraries", "frameworks"],
57
80
  },
@@ -65,6 +88,10 @@ export const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [
65
88
  useCaseKey: "mcpIntegrations.catalog.sentry.useCase",
66
89
  url: "https://mcp.sentry.dev/mcp",
67
90
  authMode: "headers",
91
+ connectionMode: "headers",
92
+ availability: "ready",
93
+ verification: "preflight-only",
94
+ logoUrl: mcpIntegrationLogo("sentry"),
68
95
  docsUrl: "https://docs.sentry.io/product/sentry-mcp/",
69
96
  headerPlaceholder: "Authorization: Bearer <sentry-token>",
70
97
  keywords: ["errors", "monitoring", "debugging", "issues"],
@@ -77,9 +104,14 @@ export const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [
77
104
  descriptionKey: "mcpIntegrations.catalog.notion.description",
78
105
  useCase: "documentation, knowledge management, notes, content creation",
79
106
  useCaseKey: "mcpIntegrations.catalog.notion.useCase",
80
- url: "https://mcp.notion.com/sse",
107
+ url: "https://mcp.notion.com/mcp",
81
108
  authMode: "oauth",
82
- docsUrl: "https://developers.notion.com/docs/mcp",
109
+ connectionMode: "oauth",
110
+ availability: "ready",
111
+ verification: "preflight-only",
112
+ logoUrl: mcpIntegrationLogo("notion"),
113
+ docsUrl: "https://developers.notion.com/guides/mcp/get-started-with-mcp",
114
+ setupNoteKey: "mcpIntegrations.catalog.notion.setupNote",
83
115
  keywords: ["docs", "knowledge", "notes", "pages"],
84
116
  },
85
117
  {
@@ -92,6 +124,10 @@ export const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [
92
124
  useCaseKey: "mcpIntegrations.catalog.semgrep.useCase",
93
125
  url: "https://mcp.semgrep.ai/mcp",
94
126
  authMode: "none",
127
+ connectionMode: "direct",
128
+ availability: "ready",
129
+ verification: "preflight-only",
130
+ logoUrl: mcpIntegrationLogo("semgrep"),
95
131
  docsUrl: "https://github.com/semgrep/mcp#readme",
96
132
  keywords: ["security", "sast", "code scanning", "vulnerabilities"],
97
133
  },
@@ -103,9 +139,13 @@ export const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [
103
139
  descriptionKey: "mcpIntegrations.catalog.linear.description",
104
140
  useCase: "project management, issue tracking, planning, bug reports",
105
141
  useCaseKey: "mcpIntegrations.catalog.linear.useCase",
106
- url: "https://mcp.linear.app/sse",
142
+ url: "https://mcp.linear.app/mcp",
107
143
  authMode: "oauth",
108
- docsUrl: "https://www.builder.io/c/docs/fusion-connect-to-linear",
144
+ connectionMode: "oauth",
145
+ availability: "ready",
146
+ verification: "preflight-only",
147
+ logoUrl: mcpIntegrationLogo("linear"),
148
+ docsUrl: "https://linear.app/docs/mcp",
109
149
  keywords: ["issues", "tickets", "planning", "project management"],
110
150
  },
111
151
  {
@@ -119,6 +159,10 @@ export const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [
119
159
  useCaseKey: "mcpIntegrations.catalog.atlassian.useCase",
120
160
  url: "https://mcp.atlassian.com/v1/mcp/authv2",
121
161
  authMode: "oauth",
162
+ connectionMode: "oauth",
163
+ availability: "provider-setup",
164
+ verification: "restricted",
165
+ logoUrl: mcpIntegrationLogo("atlassian"),
122
166
  docsUrl:
123
167
  "https://developer.atlassian.com/cloud/rovo-mcp/guides/getting-started/",
124
168
  setupNoteKey: "mcpIntegrations.catalog.atlassian.setupNote",
@@ -134,6 +178,10 @@ export const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [
134
178
  useCaseKey: "mcpIntegrations.catalog.supabase.useCase",
135
179
  url: "https://mcp.supabase.com/mcp",
136
180
  authMode: "oauth",
181
+ connectionMode: "oauth",
182
+ availability: "ready",
183
+ verification: "preflight-only",
184
+ logoUrl: mcpIntegrationLogo("supabase"),
137
185
  docsUrl: "https://www.builder.io/c/docs/fusion-connect-to-supabase",
138
186
  keywords: ["database", "auth", "postgres", "storage"],
139
187
  },
@@ -147,6 +195,10 @@ export const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [
147
195
  useCaseKey: "mcpIntegrations.catalog.neon.useCase",
148
196
  url: "https://mcp.neon.tech/sse",
149
197
  authMode: "oauth",
198
+ connectionMode: "oauth",
199
+ availability: "ready",
200
+ verification: "preflight-only",
201
+ logoUrl: mcpIntegrationLogo("neon"),
150
202
  docsUrl: "https://www.builder.io/c/docs/fusion-connect-to-neon",
151
203
  keywords: ["database", "postgres", "serverless", "backend"],
152
204
  },
@@ -160,9 +212,311 @@ export const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [
160
212
  useCaseKey: "mcpIntegrations.catalog.stripe.useCase",
161
213
  url: "https://mcp.stripe.com",
162
214
  authMode: "oauth",
215
+ connectionMode: "oauth",
216
+ availability: "ready",
217
+ verification: "preflight-only",
218
+ logoUrl: mcpIntegrationLogo("stripe"),
163
219
  docsUrl: "https://docs.stripe.com/mcp",
164
220
  keywords: ["payments", "billing", "subscriptions", "customers"],
165
221
  },
222
+ {
223
+ id: "cloudflare",
224
+ name: "Cloudflare",
225
+ provider: "cloudflare",
226
+ description: "Search and operate Cloudflare services through MCP.",
227
+ descriptionKey: "mcpIntegrations.catalog.cloudflare.description",
228
+ useCase: "DNS, Workers, domains, security, observability, platform APIs",
229
+ useCaseKey: "mcpIntegrations.catalog.cloudflare.useCase",
230
+ url: "https://mcp.cloudflare.com/mcp",
231
+ authMode: "oauth",
232
+ connectionMode: "oauth",
233
+ availability: "ready",
234
+ verification: "preflight-only",
235
+ logoUrl: mcpIntegrationLogo("cloudflare"),
236
+ docsUrl:
237
+ "https://developers.cloudflare.com/agents/model-context-protocol/cloudflare/servers-for-cloudflare/",
238
+ setupNoteKey: "mcpIntegrations.catalog.cloudflare.setupNote",
239
+ keywords: ["cloud", "workers", "dns", "security", "observability"],
240
+ },
241
+ {
242
+ id: "gitlab",
243
+ name: "GitLab",
244
+ provider: "gitlab",
245
+ description: "Read and manage GitLab projects, issues, and merge requests.",
246
+ descriptionKey: "mcpIntegrations.catalog.gitlab.description",
247
+ useCase: "repositories, issues, merge requests, CI/CD, code analytics",
248
+ useCaseKey: "mcpIntegrations.catalog.gitlab.useCase",
249
+ url: "https://gitlab.com/api/v4/mcp",
250
+ authMode: "oauth",
251
+ connectionMode: "oauth",
252
+ availability: "beta",
253
+ verification: "restricted",
254
+ logoUrl: mcpIntegrationLogo("gitlab"),
255
+ docsUrl: "https://docs.gitlab.com/user/model_context_protocol/mcp_server/",
256
+ setupNoteKey: "mcpIntegrations.catalog.gitlab.setupNote",
257
+ keywords: ["git", "repositories", "issues", "merge requests", "ci"],
258
+ },
259
+ {
260
+ id: "figma",
261
+ name: "Figma",
262
+ provider: "figma",
263
+ description: "Bring Figma design context and canvas actions into an agent.",
264
+ descriptionKey: "mcpIntegrations.catalog.figma.description",
265
+ useCase: "design files, components, variables, design systems, canvas",
266
+ useCaseKey: "mcpIntegrations.catalog.figma.useCase",
267
+ url: "https://mcp.figma.com/mcp",
268
+ authMode: "oauth",
269
+ connectionMode: "manual",
270
+ availability: "client-restricted",
271
+ verification: "restricted",
272
+ logoUrl: mcpIntegrationLogo("figma"),
273
+ docsUrl: "https://developers.figma.com/docs/figma-mcp-server/",
274
+ setupNoteKey: "mcpIntegrations.catalog.figma.setupNote",
275
+ keywords: ["design", "figjam", "components", "variables", "canvas"],
276
+ },
277
+ {
278
+ id: "canva",
279
+ name: "Canva",
280
+ provider: "canva",
281
+ description: "Search, create, and update Canva designs and assets.",
282
+ descriptionKey: "mcpIntegrations.catalog.canva.description",
283
+ useCase: "designs, templates, assets, brand kits, exports, collaboration",
284
+ useCaseKey: "mcpIntegrations.catalog.canva.useCase",
285
+ url: "https://mcp.canva.com/mcp",
286
+ authMode: "oauth",
287
+ connectionMode: "manual",
288
+ availability: "client-restricted",
289
+ verification: "restricted",
290
+ logoUrl: mcpIntegrationLogo("canva"),
291
+ docsUrl: "https://www.canva.dev/docs/mcp/",
292
+ setupNoteKey: "mcpIntegrations.catalog.canva.setupNote",
293
+ keywords: ["design", "templates", "assets", "brand", "exports"],
294
+ },
295
+ {
296
+ id: "vercel",
297
+ name: "Vercel",
298
+ provider: "vercel",
299
+ description:
300
+ "Search Vercel docs and inspect projects, deployments, and logs.",
301
+ descriptionKey: "mcpIntegrations.catalog.vercel.description",
302
+ useCase: "deployments, projects, logs, domains, hosting, documentation",
303
+ useCaseKey: "mcpIntegrations.catalog.vercel.useCase",
304
+ url: "https://mcp.vercel.com",
305
+ authMode: "oauth",
306
+ connectionMode: "manual",
307
+ availability: "client-restricted",
308
+ verification: "restricted",
309
+ logoUrl: mcpIntegrationLogo("vercel"),
310
+ docsUrl: "https://vercel.com/docs/agent-resources/vercel-mcp",
311
+ setupNoteKey: "mcpIntegrations.catalog.vercel.setupNote",
312
+ keywords: ["deployments", "hosting", "projects", "logs", "domains"],
313
+ },
314
+ {
315
+ id: "github",
316
+ name: "GitHub",
317
+ provider: "github",
318
+ description: "Read repositories, issues, pull requests, and code context.",
319
+ descriptionKey: "mcpIntegrations.catalog.github.description",
320
+ useCase: "repositories, issues, pull requests, code, engineering analytics",
321
+ useCaseKey: "mcpIntegrations.catalog.github.useCase",
322
+ url: "https://api.githubcopilot.com/mcp/",
323
+ authMode: "oauth",
324
+ connectionMode: "manual",
325
+ availability: "provider-setup",
326
+ verification: "restricted",
327
+ logoUrl: mcpIntegrationLogo("github"),
328
+ docsUrl: "https://github.com/github/github-mcp-server",
329
+ setupNoteKey: "mcpIntegrations.catalog.github.setupNote",
330
+ keywords: ["git", "repositories", "issues", "pull requests", "code"],
331
+ },
332
+ {
333
+ id: "slack",
334
+ name: "Slack",
335
+ provider: "slack",
336
+ description:
337
+ "Search Slack conversations and take workspace actions through MCP.",
338
+ descriptionKey: "mcpIntegrations.catalog.slack.description",
339
+ useCase: "messages, channels, people, company memory, workflows",
340
+ useCaseKey: "mcpIntegrations.catalog.slack.useCase",
341
+ url: "https://mcp.slack.com/mcp",
342
+ authMode: "oauth",
343
+ connectionMode: "manual",
344
+ availability: "client-restricted",
345
+ verification: "restricted",
346
+ logoUrl: mcpIntegrationLogo("slack"),
347
+ docsUrl: "https://docs.slack.dev/ai/slack-mcp-server/",
348
+ setupNoteKey: "mcpIntegrations.catalog.slack.setupNote",
349
+ keywords: ["messages", "channels", "search", "people", "chat"],
350
+ },
351
+ {
352
+ id: "asana",
353
+ name: "Asana",
354
+ provider: "asana",
355
+ description:
356
+ "Search and manage Asana tasks, projects, and work graph data.",
357
+ descriptionKey: "mcpIntegrations.catalog.asana.description",
358
+ useCase: "tasks, projects, portfolios, planning, workload",
359
+ useCaseKey: "mcpIntegrations.catalog.asana.useCase",
360
+ url: "https://mcp.asana.com/v2/mcp",
361
+ authMode: "oauth",
362
+ connectionMode: "manual",
363
+ availability: "provider-setup",
364
+ verification: "restricted",
365
+ logoUrl: mcpIntegrationLogo("asana"),
366
+ docsUrl:
367
+ "https://developers.asana.com/docs/integrating-with-asanas-mcp-server",
368
+ setupNoteKey: "mcpIntegrations.catalog.asana.setupNote",
369
+ keywords: ["tasks", "projects", "planning", "workload", "portfolios"],
370
+ },
371
+ {
372
+ id: "hubspot",
373
+ name: "HubSpot",
374
+ provider: "hubspot",
375
+ description: "Search and update HubSpot CRM records through MCP.",
376
+ descriptionKey: "mcpIntegrations.catalog.hubspot.description",
377
+ useCase: "CRM, contacts, companies, deals, tickets, customer analytics",
378
+ useCaseKey: "mcpIntegrations.catalog.hubspot.useCase",
379
+ url: "https://mcp.hubspot.com",
380
+ authMode: "oauth",
381
+ connectionMode: "manual",
382
+ availability: "provider-setup",
383
+ verification: "restricted",
384
+ logoUrl: mcpIntegrationLogo("hubspot"),
385
+ docsUrl:
386
+ "https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server",
387
+ setupNoteKey: "mcpIntegrations.catalog.hubspot.setupNote",
388
+ keywords: ["crm", "contacts", "companies", "deals", "tickets"],
389
+ },
390
+ {
391
+ id: "intercom",
392
+ name: "Intercom",
393
+ provider: "intercom",
394
+ description: "Search conversations and customer support knowledge.",
395
+ descriptionKey: "mcpIntegrations.catalog.intercom.description",
396
+ useCase: "customer support, conversations, contacts, help center content",
397
+ useCaseKey: "mcpIntegrations.catalog.intercom.useCase",
398
+ url: "https://mcp.intercom.com/mcp",
399
+ authMode: "oauth",
400
+ connectionMode: "oauth",
401
+ availability: "ready",
402
+ verification: "preflight-only",
403
+ logoUrl: mcpIntegrationLogo("intercom"),
404
+ docsUrl: "https://developers.intercom.com/docs/guides/mcp",
405
+ setupNoteKey: "mcpIntegrations.catalog.intercom.setupNote",
406
+ keywords: ["support", "conversations", "customers", "help center"],
407
+ },
408
+ {
409
+ id: "monday",
410
+ name: "monday.com",
411
+ provider: "monday",
412
+ description: "Work with boards, items, and team workflows.",
413
+ descriptionKey: "mcpIntegrations.catalog.monday.description",
414
+ useCase: "work management, boards, projects, tasks, team operations",
415
+ useCaseKey: "mcpIntegrations.catalog.monday.useCase",
416
+ url: "https://mcp.monday.com/mcp",
417
+ authMode: "oauth",
418
+ connectionMode: "oauth",
419
+ availability: "ready",
420
+ verification: "preflight-only",
421
+ logoUrl: mcpIntegrationLogo("monday"),
422
+ docsUrl:
423
+ "https://developer.monday.com/api-reference/docs/build-on-monday-with-ai",
424
+ setupNoteKey: "mcpIntegrations.catalog.monday.setupNote",
425
+ keywords: ["work management", "boards", "projects", "tasks", "teams"],
426
+ },
427
+ {
428
+ id: "webflow",
429
+ name: "Webflow",
430
+ provider: "webflow",
431
+ description: "Read and update Webflow sites and content.",
432
+ descriptionKey: "mcpIntegrations.catalog.webflow.description",
433
+ useCase: "websites, CMS, site content, publishing, design workflows",
434
+ useCaseKey: "mcpIntegrations.catalog.webflow.useCase",
435
+ url: "https://mcp.webflow.com/mcp",
436
+ authMode: "oauth",
437
+ connectionMode: "oauth",
438
+ availability: "ready",
439
+ verification: "preflight-only",
440
+ logoUrl: mcpIntegrationLogo("webflow"),
441
+ docsUrl: "https://developers.webflow.com/mcp/reference/getting-started",
442
+ setupNoteKey: "mcpIntegrations.catalog.webflow.setupNote",
443
+ keywords: ["websites", "cms", "content", "publishing", "design"],
444
+ },
445
+ {
446
+ id: "paypal",
447
+ name: "PayPal",
448
+ provider: "paypal",
449
+ description: "Work with PayPal payments, invoices, and commerce data.",
450
+ descriptionKey: "mcpIntegrations.catalog.paypal.description",
451
+ useCase: "payments, invoices, transactions, merchant operations",
452
+ useCaseKey: "mcpIntegrations.catalog.paypal.useCase",
453
+ url: "https://mcp.paypal.com/sse",
454
+ authMode: "oauth",
455
+ connectionMode: "oauth",
456
+ availability: "ready",
457
+ verification: "preflight-only",
458
+ logoUrl: mcpIntegrationLogo("paypal"),
459
+ docsUrl: "https://developer.paypal.com/ai-tools/mcp-server/",
460
+ setupNoteKey: "mcpIntegrations.catalog.paypal.setupNote",
461
+ keywords: ["payments", "invoices", "transactions", "commerce"],
462
+ },
463
+ {
464
+ id: "box",
465
+ name: "Box",
466
+ provider: "box",
467
+ description: "Search and manage files and folders in Box.",
468
+ descriptionKey: "mcpIntegrations.catalog.box.description",
469
+ useCase: "files, folders, enterprise content, search, collaboration",
470
+ useCaseKey: "mcpIntegrations.catalog.box.useCase",
471
+ url: "https://mcp.box.com",
472
+ authMode: "oauth",
473
+ connectionMode: "manual",
474
+ availability: "provider-setup",
475
+ verification: "restricted",
476
+ logoUrl: mcpIntegrationLogo("box"),
477
+ docsUrl: "https://developer.box.com/guides/box-mcp",
478
+ setupNoteKey: "mcpIntegrations.catalog.box.setupNote",
479
+ keywords: ["files", "folders", "documents", "enterprise content"],
480
+ },
481
+ {
482
+ id: "netlify",
483
+ name: "Netlify",
484
+ provider: "netlify",
485
+ description: "Inspect and operate Netlify sites and deployments.",
486
+ descriptionKey: "mcpIntegrations.catalog.netlify.description",
487
+ useCase: "sites, deployments, builds, domains, hosting operations",
488
+ useCaseKey: "mcpIntegrations.catalog.netlify.useCase",
489
+ url: "https://netlify-mcp.netlify.app/mcp",
490
+ authMode: "oauth",
491
+ connectionMode: "oauth",
492
+ availability: "ready",
493
+ verification: "preflight-only",
494
+ logoUrl: mcpIntegrationLogo("netlify"),
495
+ docsUrl:
496
+ "https://docs.netlify.com/build/build-with-ai/agent-setup-guides/agent-setup-overview/",
497
+ setupNoteKey: "mcpIntegrations.catalog.netlify.setupNote",
498
+ keywords: ["deployments", "builds", "sites", "hosting", "domains"],
499
+ },
500
+ {
501
+ id: "zapier",
502
+ name: "Zapier",
503
+ provider: "zapier",
504
+ description: "Connect MCP tools to thousands of app actions.",
505
+ descriptionKey: "mcpIntegrations.catalog.zapier.description",
506
+ useCase: "automation, workflows, app actions, cross-service operations",
507
+ useCaseKey: "mcpIntegrations.catalog.zapier.useCase",
508
+ url: "https://mcp.zapier.com/api/v1/connect",
509
+ authMode: "headers",
510
+ connectionMode: "headers",
511
+ availability: "ready",
512
+ verification: "restricted",
513
+ logoUrl: mcpIntegrationLogo("zapier"),
514
+ docsUrl:
515
+ "https://help.zapier.com/hc/en-us/articles/36265392843917-Use-Zapier-MCP-with-your-client",
516
+ setupNoteKey: "mcpIntegrations.catalog.zapier.setupNote",
517
+ headerPlaceholder: "Authorization: Bearer <zapier-mcp-token>",
518
+ keywords: ["automation", "workflows", "actions", "apps", "integrations"],
519
+ },
166
520
  ];
167
521
 
168
522
  function readRuntimeMcpIntegrationsConfig(): NormalizedMcpIntegrationsConfig {
@@ -269,6 +623,81 @@ export function filterMcpIntegrations(
269
623
  });
270
624
  }
271
625
 
626
+ const MCP_LINK_HOSTS: Record<string, string[]> = {
627
+ notion: ["notion.so", "notion.site"],
628
+ canva: ["canva.com", "canva.ai"],
629
+ figma: ["figma.com"],
630
+ linear: ["linear.app"],
631
+ github: ["github.com", "github.dev"],
632
+ gitlab: ["gitlab.com"],
633
+ slack: ["slack.com"],
634
+ asana: ["asana.com"],
635
+ hubspot: ["hubspot.com"],
636
+ intercom: ["intercom.com"],
637
+ monday: ["monday.com"],
638
+ webflow: ["webflow.com"],
639
+ paypal: ["paypal.com"],
640
+ box: ["box.com"],
641
+ netlify: ["netlify.com"],
642
+ };
643
+
644
+ function hostMatches(hostname: string, domain: string): boolean {
645
+ return hostname === domain || hostname.endsWith(`.${domain}`);
646
+ }
647
+
648
+ function findUrlForText(text: string): URL | null {
649
+ const candidates = text.match(/https?:\/\/[^\s<>()[\]{}]+/gi) ?? [];
650
+ for (const candidate of candidates) {
651
+ try {
652
+ return new URL(candidate.replace(/[.,!?;:'\"]+$/, ""));
653
+ } catch {
654
+ // Ignore prose that only looks like a URL.
655
+ }
656
+ }
657
+ return null;
658
+ }
659
+
660
+ const MCP_RESOURCE_INTENT_PATTERN =
661
+ /\b(?:connect|connected|connection|integration|integrate|link|page|document|doc|file|workspace|project|issue|design|board|channel|message|ticket|read|access|open|see|fetch|sync|import)\b/i;
662
+
663
+ export function findMcpIntegrationForText(
664
+ text: string,
665
+ integrations: DefaultMcpIntegration[] = getDefaultMcpIntegrations(),
666
+ ): DefaultMcpIntegration | null {
667
+ const url = findUrlForText(text);
668
+ if (url) {
669
+ const match = integrations.find((integration) =>
670
+ (MCP_LINK_HOSTS[integration.id] ?? []).some((domain) =>
671
+ hostMatches(url.hostname.toLowerCase(), domain),
672
+ ),
673
+ );
674
+ if (match) return match;
675
+ }
676
+
677
+ const normalizedText = text.toLowerCase();
678
+ const hasResourceIntent =
679
+ MCP_RESOURCE_INTENT_PATTERN.test(normalizedText) ||
680
+ isMcpConnectionFailureText(normalizedText);
681
+ if (!hasResourceIntent) return null;
682
+ return (
683
+ integrations.find((integration) => {
684
+ const aliases = [integration.name, integration.provider, integration.id];
685
+ return aliases.some((alias) => {
686
+ const escaped = alias.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
687
+ return new RegExp(`(^|[^a-z0-9])${escaped}([^a-z0-9]|$)`, "i").test(
688
+ normalizedText,
689
+ );
690
+ });
691
+ }) ?? null
692
+ );
693
+ }
694
+
695
+ export function isMcpConnectionFailureText(text: string): boolean {
696
+ return /\b(?:can(?:not|'t|’t)|could(?: not|n't|n’t)|unable|failed|don't have access|don’t have access|not connected|not able)\b[\s\S]{0,80}\b(?:read|access|open|see|fetch|connect)\b/i.test(
697
+ text,
698
+ );
699
+ }
700
+
272
701
  export function createMcpIntegrationFormDefaults(
273
702
  integration?: DefaultMcpIntegration | null,
274
703
  ): McpIntegrationFormDefaults {