@agent-native/core 0.106.2 → 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 (240) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +19 -0
  3. package/corpus/core/docs/content/external-agents.mdx +8 -0
  4. package/corpus/core/docs/content/integrations.mdx +597 -0
  5. package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +7 -0
  6. package/corpus/core/docs/content/locales/ar-SA/mcp-clients.mdx +19 -1
  7. package/corpus/core/docs/content/locales/ar-SA/mcp-protocol.mdx +7 -0
  8. package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +9 -0
  9. package/corpus/core/docs/content/locales/de-DE/mcp-clients.mdx +22 -1
  10. package/corpus/core/docs/content/locales/de-DE/mcp-protocol.mdx +9 -0
  11. package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +9 -0
  12. package/corpus/core/docs/content/locales/es-ES/mcp-clients.mdx +23 -1
  13. package/corpus/core/docs/content/locales/es-ES/mcp-protocol.mdx +9 -0
  14. package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +9 -0
  15. package/corpus/core/docs/content/locales/fr-FR/mcp-clients.mdx +23 -1
  16. package/corpus/core/docs/content/locales/fr-FR/mcp-protocol.mdx +9 -0
  17. package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +8 -0
  18. package/corpus/core/docs/content/locales/hi-IN/mcp-clients.mdx +22 -1
  19. package/corpus/core/docs/content/locales/hi-IN/mcp-protocol.mdx +8 -0
  20. package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +8 -0
  21. package/corpus/core/docs/content/locales/ja-JP/mcp-clients.mdx +21 -1
  22. package/corpus/core/docs/content/locales/ja-JP/mcp-protocol.mdx +8 -0
  23. package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +8 -0
  24. package/corpus/core/docs/content/locales/ko-KR/mcp-clients.mdx +20 -1
  25. package/corpus/core/docs/content/locales/ko-KR/mcp-protocol.mdx +8 -0
  26. package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +9 -0
  27. package/corpus/core/docs/content/locales/pt-BR/mcp-clients.mdx +22 -1
  28. package/corpus/core/docs/content/locales/pt-BR/mcp-protocol.mdx +9 -0
  29. package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +6 -0
  30. package/corpus/core/docs/content/locales/zh-CN/mcp-clients.mdx +17 -1
  31. package/corpus/core/docs/content/locales/zh-CN/mcp-protocol.mdx +6 -0
  32. package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +6 -0
  33. package/corpus/core/docs/content/locales/zh-TW/mcp-clients.mdx +17 -1
  34. package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.mdx +6 -0
  35. package/corpus/core/docs/content/mcp-clients.mdx +51 -1
  36. package/corpus/core/docs/content/mcp-protocol.mdx +8 -0
  37. package/corpus/core/docs/content/organizations-teams-permissions.mdx +413 -0
  38. package/corpus/core/package.json +1 -1
  39. package/corpus/core/src/client/AssistantChat.tsx +13 -1
  40. package/corpus/core/src/client/chat/message-components.tsx +41 -0
  41. package/corpus/core/src/client/composer/TiptapComposer.tsx +45 -8
  42. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +30 -11
  43. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +240 -0
  44. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +159 -40
  45. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +433 -4
  46. package/corpus/core/src/client/resources/mcp-integration-logos.ts +108 -0
  47. package/corpus/core/src/deploy/build.ts +32 -0
  48. package/corpus/core/src/extensions/html-shell.ts +33 -1
  49. package/corpus/core/src/ingestion/office.ts +1 -2
  50. package/corpus/core/src/ingestion/pptx.ts +2 -4
  51. package/corpus/core/src/localization/default-messages.ts +126 -1
  52. package/corpus/core/src/mcp/actions/call-mcp-tool.ts +1 -0
  53. package/corpus/core/src/mcp/builtin-tools.ts +115 -10
  54. package/corpus/core/src/server/index.ts +4 -0
  55. package/corpus/core/src/server/org-admin.ts +28 -0
  56. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
  57. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
  58. package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
  59. package/corpus/templates/analytics/.agents/skills/creative-context/SKILL.md +64 -0
  60. package/corpus/templates/analytics/AGENTS.md +5 -0
  61. package/corpus/templates/analytics/actions/clone-creative-context-dashboard.ts +86 -0
  62. package/corpus/templates/analytics/app/components/layout/Layout.tsx +2 -0
  63. package/corpus/templates/analytics/app/i18n/zh-TW.ts +1 -0
  64. package/corpus/templates/analytics/app/i18n-data.ts +1 -0
  65. package/corpus/templates/analytics/app/pages/Ask.tsx +8 -4
  66. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +59 -0
  67. package/corpus/templates/analytics/app/routes/agent.tsx +7 -1
  68. package/corpus/templates/analytics/changelog/2026-07-17-library-now-flags-published-dashboards-with-newer-versions-a.md +6 -0
  69. package/corpus/templates/analytics/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  70. package/corpus/templates/analytics/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  71. package/corpus/templates/analytics/package.json +1 -0
  72. package/corpus/templates/analytics/server/lib/native-creative-context.ts +158 -0
  73. package/corpus/templates/analytics/server/plugins/creative-context.ts +10 -0
  74. package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +12 -3
  75. package/corpus/templates/assets/AGENTS.md +5 -0
  76. package/corpus/templates/assets/actions/clone-creative-context-asset.ts +74 -0
  77. package/corpus/templates/assets/app/hooks/use-navigation-state.ts +2 -1
  78. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +308 -178
  79. package/corpus/templates/assets/app/routes/library.tsx +5 -11
  80. package/corpus/templates/assets/changelog/2026-07-17-library-now-flags-published-assets-with-newer-versions-and-l.md +6 -0
  81. package/corpus/templates/assets/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  82. package/corpus/templates/assets/server/lib/native-creative-context.ts +198 -0
  83. package/corpus/templates/assets/server/plugins/creative-context.ts +4 -0
  84. package/corpus/templates/brain/actions/provider-api-request.ts +1 -0
  85. package/corpus/templates/calendar/actions/provider-api-request.ts +1 -0
  86. package/corpus/templates/clips/actions/get-recording-insights.ts +7 -4
  87. package/corpus/templates/clips/actions/list-recordings.ts +48 -0
  88. package/corpus/templates/clips/actions/list-viewers.ts +2 -1
  89. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +3 -1
  90. package/corpus/templates/clips/app/components/player/share-dialog.tsx +1 -3
  91. package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +11 -6
  92. package/corpus/templates/clips/app/hooks/use-view-tracking.ts +6 -1
  93. package/corpus/templates/clips/app/lib/ffmpeg-export.ts +4 -2
  94. package/corpus/templates/clips/app/routes/share.$shareId.tsx +21 -3
  95. package/corpus/templates/clips/changelog/2026-07-17-dictation-keeps-sentence-spacing-and-no-longer-crashes-when-.md +6 -0
  96. package/corpus/templates/clips/changelog/2026-07-17-shared-clips-now-preserve-editor-access-and-show-editor-insi.md +6 -0
  97. package/corpus/templates/clips/changelog/2026-07-17-stitching-clips-no-longer-fails-when-editor-media-metadata-i.md +6 -0
  98. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +14 -8
  99. package/corpus/templates/clips/shared/view-analytics.ts +4 -0
  100. package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +12 -3
  101. package/corpus/templates/content/AGENTS.md +5 -0
  102. package/corpus/templates/content/actions/clone-creative-context-document.ts +61 -0
  103. package/corpus/templates/content/actions/provider-api-request.ts +1 -0
  104. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +21 -0
  105. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +29 -0
  106. package/corpus/templates/content/changelog/2026-07-17-library-now-flags-published-documents-with-newer-versions-an.md +6 -0
  107. package/corpus/templates/content/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  108. package/corpus/templates/content/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  109. package/corpus/templates/content/parity/matrix.md +1 -1
  110. package/corpus/templates/content/parity/matrix.ts +1 -0
  111. package/corpus/templates/content/server/lib/native-creative-context.ts +191 -0
  112. package/corpus/templates/content/server/plugins/creative-context.ts +8 -1
  113. package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +11 -3
  114. package/corpus/templates/design/AGENTS.md +5 -0
  115. package/corpus/templates/design/actions/clone-creative-context-design-native.ts +111 -0
  116. package/corpus/templates/design/actions/provider-api-request.ts +1 -0
  117. package/corpus/templates/design/app/pages/Index.tsx +44 -0
  118. package/corpus/templates/design/app/pages/design-editor/types.ts +1 -0
  119. package/corpus/templates/design/changelog/2026-07-17-library-now-flags-published-designs-with-newer-versions-and-.md +6 -0
  120. package/corpus/templates/design/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  121. package/corpus/templates/design/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  122. package/corpus/templates/design/server/lib/native-creative-context.ts +265 -0
  123. package/corpus/templates/design/server/plugins/creative-context.ts +8 -1
  124. package/corpus/templates/dispatch/actions/provider-api-request.ts +1 -0
  125. package/corpus/templates/mail/actions/provider-api-request.ts +1 -0
  126. package/corpus/templates/slides/.agents/skills/creative-context/SKILL.md +11 -3
  127. package/corpus/templates/slides/AGENTS.md +5 -0
  128. package/corpus/templates/slides/actions/clone-creative-context-deck.ts +96 -0
  129. package/corpus/templates/slides/actions/extract-pdf.ts +3 -2
  130. package/corpus/templates/slides/actions/import-file.ts +3 -2
  131. package/corpus/templates/slides/actions/provider-api-request.ts +1 -0
  132. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +27 -0
  133. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +21 -0
  134. package/corpus/templates/slides/changelog/2026-07-17-library-now-flags-published-decks-with-newer-versions-and-le.md +6 -0
  135. package/corpus/templates/slides/changelog/2026-07-17-pdf-and-powerpoint-imports-now-work-reliably-in-hosted-decks.md +6 -0
  136. package/corpus/templates/slides/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  137. package/corpus/templates/slides/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  138. package/corpus/templates/slides/server/lib/native-creative-context.ts +288 -0
  139. package/corpus/templates/slides/server/plugins/creative-context.ts +4 -0
  140. package/dist/client/AssistantChat.d.ts.map +1 -1
  141. package/dist/client/AssistantChat.js +8 -2
  142. package/dist/client/AssistantChat.js.map +1 -1
  143. package/dist/client/chat/message-components.d.ts.map +1 -1
  144. package/dist/client/chat/message-components.js +35 -1
  145. package/dist/client/chat/message-components.js.map +1 -1
  146. package/dist/client/composer/TiptapComposer.d.ts +7 -0
  147. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  148. package/dist/client/composer/TiptapComposer.js +37 -8
  149. package/dist/client/composer/TiptapComposer.js.map +1 -1
  150. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  151. package/dist/client/integrations/IntegrationsPanel.js +3 -2
  152. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  153. package/dist/client/resources/McpConnectionSuggestion.d.ts +9 -0
  154. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -0
  155. package/dist/client/resources/McpConnectionSuggestion.js +115 -0
  156. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -0
  157. package/dist/client/resources/McpIntegrationDialog.d.ts +2 -1
  158. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  159. package/dist/client/resources/McpIntegrationDialog.js +48 -20
  160. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  161. package/dist/client/resources/mcp-integration-catalog.d.ts +9 -0
  162. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  163. package/dist/client/resources/mcp-integration-catalog.js +387 -4
  164. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  165. package/dist/client/resources/mcp-integration-logos.d.ts +2 -0
  166. package/dist/client/resources/mcp-integration-logos.d.ts.map +1 -0
  167. package/dist/client/resources/mcp-integration-logos.js +109 -0
  168. package/dist/client/resources/mcp-integration-logos.js.map +1 -0
  169. package/dist/deploy/build.d.ts.map +1 -1
  170. package/dist/deploy/build.js +23 -0
  171. package/dist/deploy/build.js.map +1 -1
  172. package/dist/extensions/html-shell.d.ts.map +1 -1
  173. package/dist/extensions/html-shell.js +33 -1
  174. package/dist/extensions/html-shell.js.map +1 -1
  175. package/dist/ingestion/office.d.ts.map +1 -1
  176. package/dist/ingestion/office.js +1 -2
  177. package/dist/ingestion/office.js.map +1 -1
  178. package/dist/ingestion/pptx.js +2 -4
  179. package/dist/ingestion/pptx.js.map +1 -1
  180. package/dist/localization/default-messages.d.ts +98 -0
  181. package/dist/localization/default-messages.d.ts.map +1 -1
  182. package/dist/localization/default-messages.js +99 -1
  183. package/dist/localization/default-messages.js.map +1 -1
  184. package/dist/mcp/actions/call-mcp-tool.js +1 -0
  185. package/dist/mcp/actions/call-mcp-tool.js.map +1 -1
  186. package/dist/mcp/builtin-tools.d.ts.map +1 -1
  187. package/dist/mcp/builtin-tools.js +87 -6
  188. package/dist/mcp/builtin-tools.js.map +1 -1
  189. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  190. package/dist/server/index.d.ts +1 -0
  191. package/dist/server/index.d.ts.map +1 -1
  192. package/dist/server/index.js +1 -0
  193. package/dist/server/index.js.map +1 -1
  194. package/dist/server/org-admin.d.ts +3 -0
  195. package/dist/server/org-admin.d.ts.map +1 -0
  196. package/dist/server/org-admin.js +24 -0
  197. package/dist/server/org-admin.js.map +1 -0
  198. package/dist/server/transcribe-voice.d.ts +1 -1
  199. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
  200. package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
  201. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
  202. package/docs/content/external-agents.mdx +8 -0
  203. package/docs/content/integrations.mdx +597 -0
  204. package/docs/content/locales/ar-SA/external-agents.mdx +7 -0
  205. package/docs/content/locales/ar-SA/mcp-clients.mdx +19 -1
  206. package/docs/content/locales/ar-SA/mcp-protocol.mdx +7 -0
  207. package/docs/content/locales/de-DE/external-agents.mdx +9 -0
  208. package/docs/content/locales/de-DE/mcp-clients.mdx +22 -1
  209. package/docs/content/locales/de-DE/mcp-protocol.mdx +9 -0
  210. package/docs/content/locales/es-ES/external-agents.mdx +9 -0
  211. package/docs/content/locales/es-ES/mcp-clients.mdx +23 -1
  212. package/docs/content/locales/es-ES/mcp-protocol.mdx +9 -0
  213. package/docs/content/locales/fr-FR/external-agents.mdx +9 -0
  214. package/docs/content/locales/fr-FR/mcp-clients.mdx +23 -1
  215. package/docs/content/locales/fr-FR/mcp-protocol.mdx +9 -0
  216. package/docs/content/locales/hi-IN/external-agents.mdx +8 -0
  217. package/docs/content/locales/hi-IN/mcp-clients.mdx +22 -1
  218. package/docs/content/locales/hi-IN/mcp-protocol.mdx +8 -0
  219. package/docs/content/locales/ja-JP/external-agents.mdx +8 -0
  220. package/docs/content/locales/ja-JP/mcp-clients.mdx +21 -1
  221. package/docs/content/locales/ja-JP/mcp-protocol.mdx +8 -0
  222. package/docs/content/locales/ko-KR/external-agents.mdx +8 -0
  223. package/docs/content/locales/ko-KR/mcp-clients.mdx +20 -1
  224. package/docs/content/locales/ko-KR/mcp-protocol.mdx +8 -0
  225. package/docs/content/locales/pt-BR/external-agents.mdx +9 -0
  226. package/docs/content/locales/pt-BR/mcp-clients.mdx +22 -1
  227. package/docs/content/locales/pt-BR/mcp-protocol.mdx +9 -0
  228. package/docs/content/locales/zh-CN/external-agents.mdx +6 -0
  229. package/docs/content/locales/zh-CN/mcp-clients.mdx +17 -1
  230. package/docs/content/locales/zh-CN/mcp-protocol.mdx +6 -0
  231. package/docs/content/locales/zh-TW/external-agents.mdx +6 -0
  232. package/docs/content/locales/zh-TW/mcp-clients.mdx +17 -1
  233. package/docs/content/locales/zh-TW/mcp-protocol.mdx +6 -0
  234. package/docs/content/mcp-clients.mdx +51 -1
  235. package/docs/content/mcp-protocol.mdx +8 -0
  236. package/docs/content/organizations-teams-permissions.mdx +413 -0
  237. package/package.json +1 -1
  238. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
  239. package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
  240. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
package/corpus/README.md CHANGED
@@ -27,5 +27,5 @@ rg -n "defineAction|useActionQuery" node_modules/@agent-native/core/corpus
27
27
 
28
28
  ## Generated Counts
29
29
 
30
- - core files: 2283
31
- - template files: 6064
30
+ - core files: 2288
31
+ - template files: 6095
@@ -1,5 +1,24 @@
1
1
  # @agent-native/core
2
2
 
3
+ ## 0.107.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 149c0ee: Expand the remote MCP directory with audited provider metadata and brand logos, and expose connected MCP/provider API actions to sandboxed extensions without leaking credentials.
8
+
9
+ ### Patch Changes
10
+
11
+ - 149c0ee: Add governed creative-context sharing, host-backed native clone actions, and a reusable organization-admin permission helper.
12
+ - 149c0ee: Add a practical guide for organization context, team roles, resource permissions, RBAC, and framework environment variables.
13
+ - 149c0ee: Ensure Office, PowerPoint, and PDF dependencies are bundled into serverless deployments and reject broken Netlify ingestion artifacts.
14
+ - 149c0ee: Harden agent composer dictation cleanup when sending live text and add sentence punctuation and spacing between dictated segments.
15
+
16
+ ## 0.106.3
17
+
18
+ ### Patch Changes
19
+
20
+ - 10fb9f4: Preserve durable `ask_app` task handles and return retryable status-read details when transient polling transport failures outlast bounded retries.
21
+
3
22
  ## 0.106.2
4
23
 
5
24
  ### Patch Changes
@@ -560,6 +560,14 @@ and `taskId`; the result includes `pollAfterMs` as a host-friendly interval.
560
560
  The task must be created before the first response can time out, so a polling
561
561
  URL returned only after a long call is not a reliable recovery contract.
562
562
 
563
+ If a bounded transient status read is unavailable, `ask_app_status` can return
564
+ `status: "unknown"`, `statusRead: "unavailable"`, `retryable: true`, the
565
+ original `app` and `taskId`, and `pollAfterMs` / `poll`. This means the status
566
+ read is unavailable—not that the durable task failed. Retry `ask_app_status`
567
+ with that exact `app` and `taskId`; never resubmit `ask_app` to recover, because
568
+ submission can duplicate work. Permanent authentication, not-found, and
569
+ protocol failures remain errors.
570
+
563
571
  ### Per-app tour {#tour}
564
572
 
565
573
  Every allow-listed template that produces or lists a navigable resource ships a `link` builder, and the ingest-heavy ones ship a GET + `publicAgent` action so a connected agent can pull live state:
@@ -0,0 +1,597 @@
1
+ ---
2
+ title: "Integrations Directory"
3
+ description: "Connect the tools your Agent-Native apps can use through remote MCP, reusable workspace connections, and provider APIs."
4
+ search: "integrations directory MCP connectors OAuth manual setup restricted provider API workspace connections self-hosted"
5
+ ---
6
+
7
+ # Connect your stack
8
+
9
+ Agent-Native apps can use the tools your team already works in. This directory
10
+ mirrors the framework's current remote MCP catalog: 25 provider presets that
11
+ can be discovered from the composer and Workspace Resources surfaces. It also
12
+ explains the separate reusable workspace-connection and provider-API layers so
13
+ you can choose the connection path that matches your product.
14
+
15
+ The catalog is intentionally honest about setup friction. **OAuth** means the
16
+ provider exposes an interactive authorization flow that the runtime can start.
17
+ **Manual setup** means the provider requires a registered client, an approved
18
+ client, or vendor-specific configuration before authorization can work.
19
+ **Restricted** means the preset remains visible for discovery, but a provider
20
+ or administrator policy can prevent a generic one-click connection.
21
+
22
+ <Callout id="integration-paths" title="Three ways to connect" tone="info">
23
+
24
+ - **Remote MCP integrations** add a provider's tools to the agent. Use the
25
+ [MCP Clients](/docs/mcp-clients#remote-via-ui) setup flow for personal or
26
+ organization scope.
27
+ - **Workspace connections** store reusable account metadata and scoped grants
28
+ so multiple apps can use one connected provider. See [Workspace
29
+ Connections](/docs/workspace-connections).
30
+ - **Provider APIs** expose a safe, catalog-driven HTTP request and docs surface
31
+ to actions. They are not automatically one-click MCP presets; use
32
+ `provider-api-catalog` and `provider-api-docs` when building an app action.
33
+
34
+ </Callout>
35
+
36
+ ## The integration wall {#integration-wall}
37
+
38
+ These compact, self-hosted wordmarks keep the directory fast and deployable
39
+ without a third-party logo CDN. The labels and status pills come from the same
40
+ shipped MCP preset categories documented below.
41
+
42
+ <Diagram id="doc-block-integrations-wall" title="Remote MCP integrations" summary="A self-hosted logo wall of the 25 remote MCP presets currently shipped in the Agent-Native framework." frame="hide">
43
+
44
+ ```html
45
+ <div class="integration-wall">
46
+ <div class="integration-card">
47
+ <div class="integration-head">
48
+ <span class="integration-mark c7">C7</span>
49
+ <div><strong>Context7</strong><small>Docs &amp; reference</small></div>
50
+ </div>
51
+ <div class="integration-tags">
52
+ <span class="integration-tag direct">No auth</span
53
+ ><span class="integration-tag ready">Verified</span>
54
+ </div>
55
+ </div>
56
+ <div class="integration-card">
57
+ <div class="integration-head">
58
+ <span class="integration-mark sentry">S</span>
59
+ <div><strong>Sentry</strong><small>Errors &amp; debugging</small></div>
60
+ </div>
61
+ <div class="integration-tags">
62
+ <span class="integration-tag token">Header / token</span
63
+ ><span class="integration-tag ready">Ready</span>
64
+ </div>
65
+ </div>
66
+ <div class="integration-card">
67
+ <div class="integration-head">
68
+ <span class="integration-mark notion">N</span>
69
+ <div><strong>Notion</strong><small>Knowledge &amp; docs</small></div>
70
+ </div>
71
+ <div class="integration-tags">
72
+ <span class="integration-tag oauth">OAuth</span
73
+ ><span class="integration-tag ready">Ready</span>
74
+ </div>
75
+ </div>
76
+ <div class="integration-card">
77
+ <div class="integration-head">
78
+ <span class="integration-mark semgrep">SG</span>
79
+ <div><strong>Semgrep</strong><small>Security scanning</small></div>
80
+ </div>
81
+ <div class="integration-tags">
82
+ <span class="integration-tag direct">No auth</span
83
+ ><span class="integration-tag ready">Ready</span>
84
+ </div>
85
+ </div>
86
+ <div class="integration-card">
87
+ <div class="integration-head">
88
+ <span class="integration-mark linear">L</span>
89
+ <div><strong>Linear</strong><small>Issues &amp; planning</small></div>
90
+ </div>
91
+ <div class="integration-tags">
92
+ <span class="integration-tag oauth">OAuth</span
93
+ ><span class="integration-tag ready">Ready</span>
94
+ </div>
95
+ </div>
96
+ <div class="integration-card">
97
+ <div class="integration-head">
98
+ <span class="integration-mark atlassian">A</span>
99
+ <div><strong>Atlassian</strong><small>Jira &amp; Confluence</small></div>
100
+ </div>
101
+ <div class="integration-tags">
102
+ <span class="integration-tag oauth">OAuth</span
103
+ ><span class="integration-tag restricted">Restricted</span>
104
+ </div>
105
+ </div>
106
+ <div class="integration-card">
107
+ <div class="integration-head">
108
+ <span class="integration-mark supabase">SB</span>
109
+ <div><strong>Supabase</strong><small>Database &amp; auth</small></div>
110
+ </div>
111
+ <div class="integration-tags">
112
+ <span class="integration-tag oauth">OAuth</span
113
+ ><span class="integration-tag ready">Ready</span>
114
+ </div>
115
+ </div>
116
+ <div class="integration-card">
117
+ <div class="integration-head">
118
+ <span class="integration-mark neon">N</span>
119
+ <div><strong>Neon</strong><small>Serverless Postgres</small></div>
120
+ </div>
121
+ <div class="integration-tags">
122
+ <span class="integration-tag oauth">OAuth</span
123
+ ><span class="integration-tag ready">Ready</span>
124
+ </div>
125
+ </div>
126
+ <div class="integration-card">
127
+ <div class="integration-head">
128
+ <span class="integration-mark stripe">S</span>
129
+ <div><strong>Stripe</strong><small>Payments &amp; billing</small></div>
130
+ </div>
131
+ <div class="integration-tags">
132
+ <span class="integration-tag oauth">OAuth</span
133
+ ><span class="integration-tag ready">Ready</span>
134
+ </div>
135
+ </div>
136
+ <div class="integration-card">
137
+ <div class="integration-head">
138
+ <span class="integration-mark cloudflare">CF</span>
139
+ <div><strong>Cloudflare</strong><small>Cloud &amp; security</small></div>
140
+ </div>
141
+ <div class="integration-tags">
142
+ <span class="integration-tag oauth">OAuth</span
143
+ ><span class="integration-tag ready">Ready</span>
144
+ </div>
145
+ </div>
146
+ <div class="integration-card">
147
+ <div class="integration-head">
148
+ <span class="integration-mark gitlab">GL</span>
149
+ <div><strong>GitLab</strong><small>Repos &amp; CI/CD</small></div>
150
+ </div>
151
+ <div class="integration-tags">
152
+ <span class="integration-tag oauth">OAuth</span
153
+ ><span class="integration-tag restricted">Beta / restricted</span>
154
+ </div>
155
+ </div>
156
+ <div class="integration-card">
157
+ <div class="integration-head">
158
+ <span class="integration-mark figma">F</span>
159
+ <div><strong>Figma</strong><small>Design context</small></div>
160
+ </div>
161
+ <div class="integration-tags">
162
+ <span class="integration-tag manual">Manual setup</span
163
+ ><span class="integration-tag restricted">Approved clients</span>
164
+ </div>
165
+ </div>
166
+ <div class="integration-card">
167
+ <div class="integration-head">
168
+ <span class="integration-mark canva">C</span>
169
+ <div><strong>Canva</strong><small>Designs &amp; assets</small></div>
170
+ </div>
171
+ <div class="integration-tags">
172
+ <span class="integration-tag manual">Manual setup</span
173
+ ><span class="integration-tag restricted">Approved domains</span>
174
+ </div>
175
+ </div>
176
+ <div class="integration-card">
177
+ <div class="integration-head">
178
+ <span class="integration-mark vercel">V</span>
179
+ <div><strong>Vercel</strong><small>Deployments &amp; logs</small></div>
180
+ </div>
181
+ <div class="integration-tags">
182
+ <span class="integration-tag manual">Manual setup</span
183
+ ><span class="integration-tag restricted">Approved clients</span>
184
+ </div>
185
+ </div>
186
+ <div class="integration-card">
187
+ <div class="integration-head">
188
+ <span class="integration-mark github">GH</span>
189
+ <div><strong>GitHub</strong><small>Code &amp; pull requests</small></div>
190
+ </div>
191
+ <div class="integration-tags">
192
+ <span class="integration-tag manual">Manual setup</span
193
+ ><span class="integration-tag restricted">Provider setup</span>
194
+ </div>
195
+ </div>
196
+ <div class="integration-card">
197
+ <div class="integration-head">
198
+ <span class="integration-mark slack">#</span>
199
+ <div><strong>Slack</strong><small>Messages &amp; channels</small></div>
200
+ </div>
201
+ <div class="integration-tags">
202
+ <span class="integration-tag manual">Manual setup</span
203
+ ><span class="integration-tag restricted">Approved clients</span>
204
+ </div>
205
+ </div>
206
+ <div class="integration-card">
207
+ <div class="integration-head">
208
+ <span class="integration-mark asana">AS</span>
209
+ <div><strong>Asana</strong><small>Tasks &amp; projects</small></div>
210
+ </div>
211
+ <div class="integration-tags">
212
+ <span class="integration-tag manual">Manual setup</span
213
+ ><span class="integration-tag restricted">Provider setup</span>
214
+ </div>
215
+ </div>
216
+ <div class="integration-card">
217
+ <div class="integration-head">
218
+ <span class="integration-mark hubspot">HS</span>
219
+ <div><strong>HubSpot</strong><small>CRM &amp; customer data</small></div>
220
+ </div>
221
+ <div class="integration-tags">
222
+ <span class="integration-tag manual">Manual setup</span
223
+ ><span class="integration-tag restricted">Provider setup</span>
224
+ </div>
225
+ </div>
226
+ <div class="integration-card">
227
+ <div class="integration-head">
228
+ <span class="integration-mark intercom">I</span>
229
+ <div><strong>Intercom</strong><small>Support conversations</small></div>
230
+ </div>
231
+ <div class="integration-tags">
232
+ <span class="integration-tag oauth">OAuth</span
233
+ ><span class="integration-tag ready">Ready</span>
234
+ </div>
235
+ </div>
236
+ <div class="integration-card">
237
+ <div class="integration-head">
238
+ <span class="integration-mark monday">M</span>
239
+ <div><strong>monday.com</strong><small>Work management</small></div>
240
+ </div>
241
+ <div class="integration-tags">
242
+ <span class="integration-tag oauth">OAuth</span
243
+ ><span class="integration-tag ready">Ready</span>
244
+ </div>
245
+ </div>
246
+ <div class="integration-card">
247
+ <div class="integration-head">
248
+ <span class="integration-mark webflow">W</span>
249
+ <div><strong>Webflow</strong><small>Websites &amp; CMS</small></div>
250
+ </div>
251
+ <div class="integration-tags">
252
+ <span class="integration-tag oauth">OAuth</span
253
+ ><span class="integration-tag ready">Ready</span>
254
+ </div>
255
+ </div>
256
+ <div class="integration-card">
257
+ <div class="integration-head">
258
+ <span class="integration-mark paypal">PP</span>
259
+ <div><strong>PayPal</strong><small>Commerce &amp; invoices</small></div>
260
+ </div>
261
+ <div class="integration-tags">
262
+ <span class="integration-tag oauth">OAuth</span
263
+ ><span class="integration-tag ready">Ready</span>
264
+ </div>
265
+ </div>
266
+ <div class="integration-card">
267
+ <div class="integration-head">
268
+ <span class="integration-mark box">B</span>
269
+ <div><strong>Box</strong><small>Files &amp; folders</small></div>
270
+ </div>
271
+ <div class="integration-tags">
272
+ <span class="integration-tag manual">Manual setup</span
273
+ ><span class="integration-tag restricted">Beta / restricted</span>
274
+ </div>
275
+ </div>
276
+ <div class="integration-card">
277
+ <div class="integration-head">
278
+ <span class="integration-mark netlify">N</span>
279
+ <div><strong>Netlify</strong><small>Sites &amp; builds</small></div>
280
+ </div>
281
+ <div class="integration-tags">
282
+ <span class="integration-tag oauth">OAuth</span
283
+ ><span class="integration-tag ready">Ready</span>
284
+ </div>
285
+ </div>
286
+ <div class="integration-card">
287
+ <div class="integration-head">
288
+ <span class="integration-mark zapier">Z</span>
289
+ <div><strong>Zapier</strong><small>Automation actions</small></div>
290
+ </div>
291
+ <div class="integration-tags">
292
+ <span class="integration-tag token">Header / token</span
293
+ ><span class="integration-tag restricted">User server</span>
294
+ </div>
295
+ </div>
296
+ </div>
297
+ ```
298
+
299
+ ```css
300
+ .integration-wall {
301
+ display: grid;
302
+ grid-template-columns: repeat(4, minmax(0, 1fr));
303
+ gap: 10px;
304
+ }
305
+ .integration-card {
306
+ display: flex;
307
+ flex-direction: column;
308
+ gap: 12px;
309
+ min-height: 118px;
310
+ padding: 14px;
311
+ border: 1px solid var(--wf-line);
312
+ border-radius: 12px;
313
+ background: var(--wf-card);
314
+ box-sizing: border-box;
315
+ }
316
+ .integration-head {
317
+ display: flex;
318
+ align-items: center;
319
+ gap: 10px;
320
+ min-width: 0;
321
+ }
322
+ .integration-head div {
323
+ display: flex;
324
+ flex-direction: column;
325
+ gap: 2px;
326
+ min-width: 0;
327
+ }
328
+ .integration-head strong {
329
+ overflow: hidden;
330
+ text-overflow: ellipsis;
331
+ white-space: nowrap;
332
+ }
333
+ .integration-head small {
334
+ color: var(--wf-muted);
335
+ font-size: 11px;
336
+ line-height: 1.25;
337
+ }
338
+ .integration-mark {
339
+ display: flex;
340
+ align-items: center;
341
+ justify-content: center;
342
+ width: 38px;
343
+ height: 38px;
344
+ flex: none;
345
+ border-radius: 10px;
346
+ color: #fff;
347
+ font-size: 11px;
348
+ font-weight: 800;
349
+ letter-spacing: -0.04em;
350
+ }
351
+ .c7 {
352
+ background: #1f6feb;
353
+ }
354
+ .sentry {
355
+ background: #5b35d5;
356
+ }
357
+ .notion {
358
+ background: #111;
359
+ }
360
+ .semgrep {
361
+ background: #0d8b76;
362
+ }
363
+ .linear {
364
+ background: #5e5ce6;
365
+ }
366
+ .atlassian {
367
+ background: #1868db;
368
+ }
369
+ .supabase {
370
+ background: #3ecf8e;
371
+ color: #062b1a;
372
+ }
373
+ .neon {
374
+ background: #00e5a0;
375
+ color: #062b1a;
376
+ }
377
+ .stripe {
378
+ background: #635bff;
379
+ }
380
+ .cloudflare {
381
+ background: #f38020;
382
+ }
383
+ .gitlab {
384
+ background: #fc6d26;
385
+ }
386
+ .figma {
387
+ background: #f24e1e;
388
+ }
389
+ .canva {
390
+ background: #00c4cc;
391
+ color: #053b40;
392
+ }
393
+ .vercel {
394
+ background: #111;
395
+ }
396
+ .github {
397
+ background: #24292f;
398
+ }
399
+ .slack {
400
+ background: #36c5f0;
401
+ color: #082c3b;
402
+ }
403
+ .asana {
404
+ background: #f06a6a;
405
+ }
406
+ .hubspot {
407
+ background: #ff7a59;
408
+ }
409
+ .intercom {
410
+ background: #286efa;
411
+ }
412
+ .monday {
413
+ background: #6161ff;
414
+ }
415
+ .webflow {
416
+ background: #146ef5;
417
+ }
418
+ .paypal {
419
+ background: #003087;
420
+ }
421
+ .box {
422
+ background: #0061d5;
423
+ }
424
+ .netlify {
425
+ background: #05bdbb;
426
+ color: #062b2b;
427
+ }
428
+ .zapier {
429
+ background: #ff4f00;
430
+ }
431
+ .integration-tags {
432
+ display: flex;
433
+ flex-wrap: wrap;
434
+ gap: 5px;
435
+ margin-top: auto;
436
+ }
437
+ .integration-tag {
438
+ padding: 4px 7px;
439
+ border-radius: 999px;
440
+ background: var(--wf-line);
441
+ color: var(--wf-muted);
442
+ font-size: 10px;
443
+ line-height: 1;
444
+ }
445
+ .integration-tag.oauth {
446
+ background: #e8e7ff;
447
+ color: #4438a8;
448
+ }
449
+ .integration-tag.manual {
450
+ background: #fff0d6;
451
+ color: #8a5200;
452
+ }
453
+ .integration-tag.token {
454
+ background: #e5f3ff;
455
+ color: #075985;
456
+ }
457
+ .integration-tag.direct {
458
+ background: #e1f7ee;
459
+ color: #146c4b;
460
+ }
461
+ .integration-tag.ready {
462
+ background: #e1f7ee;
463
+ color: #146c4b;
464
+ }
465
+ .integration-tag.restricted {
466
+ background: #ffe4e6;
467
+ color: #9f1239;
468
+ }
469
+ @media (max-width: 760px) {
470
+ .integration-wall {
471
+ grid-template-columns: repeat(2, minmax(0, 1fr));
472
+ }
473
+ }
474
+ @media (max-width: 430px) {
475
+ .integration-wall {
476
+ grid-template-columns: 1fr;
477
+ }
478
+ }
479
+ ```
480
+
481
+ </Diagram>
482
+
483
+ ## Remote MCP directory {#remote-mcp}
484
+
485
+ The table below mirrors `DEFAULT_MCP_INTEGRATIONS` in the framework. **Ready**
486
+ means the preset is available in the catalog. **Preflight only** means the
487
+ endpoint is reachable or cataloged, but a live provider authorization or tool
488
+ session still needs to be completed. **Restricted** entries remain discoverable
489
+ but need provider or administrator setup before a generic connection can work.
490
+
491
+ | Integration | Connection mode | Status | Endpoint | Setup and notes |
492
+ | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ---------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
493
+ | [Context7](https://context7.com/) | No auth | Ready · verified | `https://mcp.context7.com/mcp` | Fetch current library and framework docs. |
494
+ | [Sentry](https://docs.sentry.io/product/sentry-mcp/) | Header / token | Ready · preflight only | `https://mcp.sentry.dev/mcp` | Add a Sentry bearer token as the `Authorization` header. |
495
+ | [Notion](https://developers.notion.com/guides/mcp/get-started-with-mcp) | OAuth | Ready · preflight only | `https://mcp.notion.com/mcp` | User OAuth; enterprise admins can audit or restrict MCP clients. |
496
+ | [Semgrep](https://github.com/semgrep/mcp#readme) | No auth | Ready · preflight only | `https://mcp.semgrep.ai/mcp` | Scan code for security findings. |
497
+ | [Linear](https://linear.app/docs/mcp) | OAuth | Ready · preflight only | `https://mcp.linear.app/mcp` | Authorize the workspace and issue permissions required by the workflow. |
498
+ | [Atlassian Rovo MCP](https://developer.atlassian.com/cloud/rovo-mcp/guides/getting-started/) | OAuth + provider setup | Restricted | `https://mcp.atlassian.com/v1/mcp/authv2` | Admins may need to trust the app origin and enable Rovo Read, Write, and Search permissions. |
499
+ | [Supabase](https://www.builder.io/c/docs/fusion-connect-to-supabase) | OAuth | Ready · preflight only | `https://mcp.supabase.com/mcp` | Authorize the Supabase project and requested backend scopes. |
500
+ | [Neon](https://www.builder.io/c/docs/fusion-connect-to-neon) | OAuth | Ready · preflight only | `https://mcp.neon.tech/sse` | Authorize access to the serverless Postgres projects needed by the app. |
501
+ | [Stripe](https://docs.stripe.com/mcp) | OAuth | Ready · preflight only | `https://mcp.stripe.com` | Review payment, customer, and subscription permissions before authorizing. |
502
+ | [Cloudflare](https://developers.cloudflare.com/agents/model-context-protocol/cloudflare/servers-for-cloudflare/) | OAuth | Ready · preflight only | `https://mcp.cloudflare.com/mcp` | Choose the narrowest Cloudflare server and review scopes. |
503
+ | [GitLab](https://docs.gitlab.com/user/model_context_protocol/mcp_server/) | OAuth + provider setup | Beta · restricted | `https://gitlab.com/api/v4/mcp` | A top-level group admin, or the equivalent self-managed instance admin, must allow MCP. |
504
+ | [Figma](https://developers.figma.com/docs/figma-mcp-server/) | Manual setup | Approved clients only · restricted | `https://mcp.figma.com/mcp` | Figma only allows clients in its MCP Catalog; use the Figma OAuth connector for app-owned workflows until approved. |
505
+ | [Canva](https://www.canva.dev/docs/mcp/) | Manual setup | Approved domains · restricted | `https://mcp.canva.com/mcp` | Per-user OAuth; clients must allow Canva's canva.com and canva.ai domains and follow the current redirect setup. |
506
+ | [Vercel](https://vercel.com/docs/agent-resources/vercel-mcp) | Manual setup | Approved clients only · restricted | `https://mcp.vercel.com` | Vercel must list the client as approved before a generic connection will work. |
507
+ | [GitHub](https://github.com/github/github-mcp-server) | Manual setup | Provider setup · restricted | `https://api.githubcopilot.com/mcp/` | Use a registered OAuth app; organizations may also enforce OAuth App Access Policies. |
508
+ | [Slack](https://docs.slack.dev/ai/slack-mcp-server/) | Manual setup | Approved clients only · restricted | `https://mcp.slack.com/mcp` | Requires a fixed registered Slack app; dynamic client registration is not supported. |
509
+ | [Asana](https://developers.asana.com/docs/integrating-with-asanas-mcp-server) | Manual setup | Provider setup · restricted | `https://mcp.asana.com/v2/mcp` | Pre-register an Asana MCP OAuth app before connecting. |
510
+ | [HubSpot](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server) | Manual setup | Provider setup · restricted | `https://mcp.hubspot.com` | Create a HubSpot MCP Auth App with PKCE; the existing HubSpot OAuth connector remains available to app actions. |
511
+ | [Intercom](https://developers.intercom.com/docs/guides/mcp) | OAuth | Ready · preflight only | `https://mcp.intercom.com/mcp` | Available for US-hosted workspaces; confirm region and scopes during authorization. |
512
+ | [monday.com](https://developer.monday.com/api-reference/docs/build-on-monday-with-ai) | OAuth | Ready · preflight only | `https://mcp.monday.com/mcp` | Choose the workspace and permissions to share during authorization. |
513
+ | [Webflow](https://developers.webflow.com/mcp/reference/getting-started) | OAuth | Ready · preflight only | `https://mcp.webflow.com/mcp` | Designer capabilities may install Webflow's Bridge App; Data API access is separate. |
514
+ | [PayPal](https://developer.paypal.com/ai-tools/mcp-server/) | OAuth | Ready · preflight only | `https://mcp.paypal.com/sse` | Review merchant permissions before authorizing the remote server. |
515
+ | [Box](https://developer.box.com/guides/box-mcp) | Manual setup | Beta · restricted | `https://mcp.box.com` | An administrator must enable Box MCP; custom clients also need credentials, a redirect URI, and approved scopes. |
516
+ | [Netlify](https://docs.netlify.com/build/build-with-ai/agent-setup-guides/agent-setup-overview/) | OAuth | Ready · preflight only | `https://netlify-mcp.netlify.app/mcp` | Review site and team permissions before completing OAuth. |
517
+ | [Zapier MCP](https://help.zapier.com/hc/en-us/articles/36265392843917-Use-Zapier-MCP-with-your-client) | Header / token | User-created server · restricted | `https://mcp.zapier.com/api/v1/connect` | Create the MCP server in Zapier, then paste its generated bearer token into the header field. |
518
+
519
+ ### Repeatable preflight verification
520
+
521
+ Run the repository-owned probe before changing a preset or publishing a new
522
+ one:
523
+
524
+ ```sh
525
+ corepack pnpm exec tsx scripts/mcp-integration-preflight.ts
526
+ ```
527
+
528
+ The probe sends no credentials. It records whether an endpoint returns an MCP
529
+ `initialize` response, is merely reachable, or is blocked behind provider
530
+ authorization/setup. A `verified` result proves protocol reachability only; it
531
+ does not prove that a user has authorized the provider or that every tool call
532
+ will be allowed.
533
+
534
+ ## Reusable workspace connections {#workspace-connections}
535
+
536
+ Workspace connections are the right surface when an account should be
537
+ connected once and granted to several Agent-Native apps. The framework's
538
+ workspace provider catalog currently includes these providers:
539
+
540
+ | Provider | Connection mode | Typical use | Setup note |
541
+ | ------------ | ------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------ |
542
+ | Slack | Managed OAuth; bot-token fallback | Messages, channels, company memory | New messaging setups should use the managed Slack install. |
543
+ | GitHub | OAuth preferred; token fallback | Repositories, issues, pull requests, code | Fine-grained tokens remain available for local or legacy setups. |
544
+ | Figma | OAuth preferred; personal-token fallback | Design files, frames, components | Use workspace OAuth for shared access. |
545
+ | Notion | OAuth | Pages, wikis, databases | Store the grant once and scope it to consuming apps. |
546
+ | Gmail | Google OAuth | Mailbox search, triage, replies | Configure the Google OAuth client used by the workspace. |
547
+ | Google Drive | Google OAuth | Drive files, Docs, Sheets, and Slides | Keep the grant scoped to the files and apps that need it. |
548
+ | HubSpot | OAuth preferred; private-token fallback | CRM records and engagement history | OAuth is preferred for new connections. |
549
+ | Jira Cloud | OAuth preferred; API-token fallback | Projects, issues, and sprints | OAuth discovers the site; token fallback needs the site URL and account email. |
550
+ | Sentry | OAuth preferred; auth/server-token fallback | Error tracking and performance | Token fallback is useful for self-hosted or local Sentry. |
551
+ | Granola | API key | Meeting notes and transcripts | Respect the visibility of the connected Granola workspace. |
552
+ | Clips | Built-in | Agent-Native recordings and transcripts | No external credential is required for the framework's own Clips exports. |
553
+ | Generic | Manual/custom | Webhooks, CSV exports, and transcript drops | Use when a source does not need a first-class provider yet. |
554
+
555
+ See [Workspace Connections](/docs/workspace-connections#building-a-reusable-connector)
556
+ for the connection, grant, `credentialRef`, and readiness model.
557
+
558
+ ## Provider APIs behind agent actions {#provider-apis}
559
+
560
+ The provider API catalog is a separate action surface for provider-agnostic
561
+ discovery, documentation lookup, and safe HTTP requests. It currently includes
562
+ these built-in providers:
563
+
564
+ - **OAuth-backed or workspace-granted:** GitHub, Figma, Gmail, Google
565
+ Calendar, Google Drive, Google Slides, HubSpot, Jira Cloud, Notion, and
566
+ Sentry.
567
+ - **Google service-account:** BigQuery, Google Analytics 4, and Google Cloud
568
+ APIs.
569
+ - **API key or bearer token:** Apollo, Clay, Common Room, Granola, Grafana,
570
+ PostHog, Pylon, Slack, Stripe, and Twitter/X via `twitterapi.io`.
571
+ - **Basic or service credentials:** Amplitude, DataForSEO, Gong, and Mixpanel.
572
+ - **Instance-authenticated:** Prometheus, using the configured URL and the
573
+ instance's supported basic or bearer credentials.
574
+
575
+ These entries are available to actions through the shared
576
+ `provider-api-catalog`, `provider-api-docs`, and `provider-api-request` pattern.
577
+ They do not imply that the provider also appears in the remote MCP picker.
578
+ Custom provider registrations can extend this action catalog without changing
579
+ the built-in list above.
580
+
581
+ ## Keep the directory honest {#keep-current}
582
+
583
+ Provider OAuth policies, approved-client lists, endpoint versions, and scopes
584
+ change independently of the framework. Before enabling an integration in a
585
+ production catalog:
586
+
587
+ 1. Open the provider's setup link in the directory.
588
+ 2. Confirm the deployment origin, OAuth client, redirect URI, scopes, and admin
589
+ policies that apply to your workspace.
590
+ 3. Prefer workspace grants and the vault for reusable credentials; never put
591
+ tokens in prompts, committed config, or docs examples.
592
+ 4. Treat a **restricted**, **beta**, or **preflight-only** label as a setup
593
+ requirement, not as a promise of one-click availability.
594
+
595
+ For custom remote servers, see [MCP Clients — Remote MCP servers](/docs/mcp-clients#remote-via-ui).
596
+ For exposing your own app to Claude, ChatGPT, Codex, Cursor, or another MCP
597
+ host, see [External Agents](/docs/external-agents).
@@ -527,6 +527,13 @@ Claude Code calls: manage-draft(to: "john@example.com", subject: "Q3 Report", bo
527
527
 
528
528
  لا تشترك مضيفات وبوابات MCP في مهلة زمنية واحدة طويلة لاستدعاء الأداة؛ يفرض بعضها حدًا أقصى مدته خمس دقائق بينما يكون بعضها الآخر قابلاً للتكوين. لا تصمم تكامل الوكيل الخارجي بالاعتماد على استدعاء `tools/call` محظور لمدة عشر دقائق. يقر كل من `ask-agent` و`ask_app` بالعمل المستضاف بسرعة، ثم يُرجعان `taskId` دائمًا عند انتهاء مهلة الانتظار المضمّن. استطلع باستخدام `ask_app_status` مستخدمًا `app` و`taskId` المُرجعين؛ وتتضمن النتيجة `pollAfterMs` كفاصل زمني ملائم للمضيف. يجب إنشاء المهمة قبل أن تنتهي مهلة الاستجابة الأولى، لذا فإن رابط الاستطلاع الذي يُرجع فقط بعد استدعاء طويل ليس عقد استرداد يمكن الاعتماد عليه.
529
529
 
530
+ عند عدم إتاحة قراءة حالة عابرة ومحدودة المدة، يمكن أن تُرجع `ask_app_status` القيم
531
+ `status: "unknown"` و`statusRead: "unavailable"` و`retryable: true`، إلى جانب
532
+ `app` و`taskId` الأصليين و`pollAfterMs` / `poll`. يعني ذلك أن قراءة الحالة غير
533
+ متاحة، وليس أن المهمة الدائمة قد فشلت. أعد محاولة `ask_app_status` باستخدام `app`
534
+ و`taskId` نفسيهما تمامًا؛ ولا تعِد إرسال `ask_app` للاسترداد مطلقًا، إذ قد يكرر
535
+ الإرسال العمل. تظل أخطاء المصادقة الدائمة أو عدم العثور أو البروتوكول أخطاءً.
536
+
530
537
  ### جولة لكل تطبيق {#tour}
531
538
 
532
539
  يقوم كل قالب مدرج في القائمة المسموح بها ينتج موردًا قابلاً للملاحة أو يسرده بشحن أداة إنشاء `link`، وتقوم القوالب ذات الاستيعاب الثقيل بشحن إجراء GET + `publicAgent` حتى يتمكن الوكيل المتصل من سحب الحالة المباشرة: