@agent-native/core 0.54.1 → 0.56.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 (186) hide show
  1. package/README.md +16 -1
  2. package/dist/action-ui.d.ts +17 -0
  3. package/dist/action-ui.d.ts.map +1 -0
  4. package/dist/action-ui.js +23 -0
  5. package/dist/action-ui.js.map +1 -0
  6. package/dist/action.d.ts +8 -1
  7. package/dist/action.d.ts.map +1 -1
  8. package/dist/action.js +3 -0
  9. package/dist/action.js.map +1 -1
  10. package/dist/agent/production-agent.d.ts +2 -0
  11. package/dist/agent/production-agent.d.ts.map +1 -1
  12. package/dist/agent/production-agent.js +11 -1
  13. package/dist/agent/production-agent.js.map +1 -1
  14. package/dist/agent/thread-data-builder.d.ts +4 -0
  15. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  16. package/dist/agent/thread-data-builder.js +4 -0
  17. package/dist/agent/thread-data-builder.js.map +1 -1
  18. package/dist/agent/types.d.ts +2 -0
  19. package/dist/agent/types.d.ts.map +1 -1
  20. package/dist/agent/types.js.map +1 -1
  21. package/dist/cli/connect.d.ts +3 -1
  22. package/dist/cli/connect.d.ts.map +1 -1
  23. package/dist/cli/connect.js +7 -1
  24. package/dist/cli/connect.js.map +1 -1
  25. package/dist/cli/index.js +1 -1
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/plan-local.d.ts +40 -0
  28. package/dist/cli/plan-local.d.ts.map +1 -1
  29. package/dist/cli/plan-local.js +495 -9
  30. package/dist/cli/plan-local.js.map +1 -1
  31. package/dist/cli/skills.d.ts +17 -2
  32. package/dist/cli/skills.d.ts.map +1 -1
  33. package/dist/cli/skills.js +135 -36
  34. package/dist/cli/skills.js.map +1 -1
  35. package/dist/client/AgentChatHome.d.ts +23 -0
  36. package/dist/client/AgentChatHome.d.ts.map +1 -0
  37. package/dist/client/AgentChatHome.js +13 -0
  38. package/dist/client/AgentChatHome.js.map +1 -0
  39. package/dist/client/AgentPanel.d.ts +29 -2
  40. package/dist/client/AgentPanel.d.ts.map +1 -1
  41. package/dist/client/AgentPanel.js +116 -68
  42. package/dist/client/AgentPanel.js.map +1 -1
  43. package/dist/client/AssistantChat.d.ts.map +1 -1
  44. package/dist/client/AssistantChat.js +145 -21
  45. package/dist/client/AssistantChat.js.map +1 -1
  46. package/dist/client/FeedbackButton.d.ts +7 -1
  47. package/dist/client/FeedbackButton.d.ts.map +1 -1
  48. package/dist/client/FeedbackButton.js +13 -3
  49. package/dist/client/FeedbackButton.js.map +1 -1
  50. package/dist/client/MultiTabAssistantChat.d.ts +1 -2
  51. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  52. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  53. package/dist/client/agent-sidebar-state.d.ts +2 -0
  54. package/dist/client/agent-sidebar-state.d.ts.map +1 -1
  55. package/dist/client/agent-sidebar-state.js +15 -4
  56. package/dist/client/agent-sidebar-state.js.map +1 -1
  57. package/dist/client/chat/index.d.ts +7 -0
  58. package/dist/client/chat/index.d.ts.map +1 -1
  59. package/dist/client/chat/index.js +6 -0
  60. package/dist/client/chat/index.js.map +1 -1
  61. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  62. package/dist/client/chat/run-recovery.js +11 -9
  63. package/dist/client/chat/run-recovery.js.map +1 -1
  64. package/dist/client/chat/runtime.d.ts +354 -0
  65. package/dist/client/chat/runtime.d.ts.map +1 -0
  66. package/dist/client/chat/runtime.js +2 -0
  67. package/dist/client/chat/runtime.js.map +1 -0
  68. package/dist/client/chat/tool-call-display.d.ts +5 -1
  69. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  70. package/dist/client/chat/tool-call-display.js +22 -5
  71. package/dist/client/chat/tool-call-display.js.map +1 -1
  72. package/dist/client/chat/tool-render-registry.d.ts +35 -0
  73. package/dist/client/chat/tool-render-registry.d.ts.map +1 -0
  74. package/dist/client/chat/tool-render-registry.js +83 -0
  75. package/dist/client/chat/tool-render-registry.js.map +1 -0
  76. package/dist/client/chat/widgets/DataChartRenderer.d.ts +5 -0
  77. package/dist/client/chat/widgets/DataChartRenderer.d.ts.map +1 -0
  78. package/dist/client/chat/widgets/DataChartRenderer.js +33 -0
  79. package/dist/client/chat/widgets/DataChartRenderer.js.map +1 -0
  80. package/dist/client/chat/widgets/DataChartWidget.d.ts +5 -0
  81. package/dist/client/chat/widgets/DataChartWidget.d.ts.map +1 -0
  82. package/dist/client/chat/widgets/DataChartWidget.js +15 -0
  83. package/dist/client/chat/widgets/DataChartWidget.js.map +1 -0
  84. package/dist/client/chat/widgets/DataInsightsWidget.d.ts +5 -0
  85. package/dist/client/chat/widgets/DataInsightsWidget.d.ts.map +1 -0
  86. package/dist/client/chat/widgets/DataInsightsWidget.js +18 -0
  87. package/dist/client/chat/widgets/DataInsightsWidget.js.map +1 -0
  88. package/dist/client/chat/widgets/DataTableWidget.d.ts +9 -0
  89. package/dist/client/chat/widgets/DataTableWidget.d.ts.map +1 -0
  90. package/dist/client/chat/widgets/DataTableWidget.js +95 -0
  91. package/dist/client/chat/widgets/DataTableWidget.js.map +1 -0
  92. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts +2 -0
  93. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -0
  94. package/dist/client/chat/widgets/builtin-tool-renderers.js +82 -0
  95. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -0
  96. package/dist/client/chat/widgets/data-widget-types.d.ts +2 -0
  97. package/dist/client/chat/widgets/data-widget-types.d.ts.map +1 -0
  98. package/dist/client/chat/widgets/data-widget-types.js +2 -0
  99. package/dist/client/chat/widgets/data-widget-types.js.map +1 -0
  100. package/dist/client/chat-view-transition.d.ts +35 -0
  101. package/dist/client/chat-view-transition.d.ts.map +1 -0
  102. package/dist/client/chat-view-transition.js +66 -0
  103. package/dist/client/chat-view-transition.js.map +1 -0
  104. package/dist/client/composer/PromptComposer.d.ts +1 -1
  105. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  106. package/dist/client/composer/PromptComposer.js +2 -2
  107. package/dist/client/composer/PromptComposer.js.map +1 -1
  108. package/dist/client/composer/TiptapComposer.d.ts +2 -1
  109. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  110. package/dist/client/composer/TiptapComposer.js +2 -1
  111. package/dist/client/composer/TiptapComposer.js.map +1 -1
  112. package/dist/client/index.d.ts +7 -1
  113. package/dist/client/index.d.ts.map +1 -1
  114. package/dist/client/index.js +6 -1
  115. package/dist/client/index.js.map +1 -1
  116. package/dist/client/route-state.d.ts +6 -0
  117. package/dist/client/route-state.d.ts.map +1 -1
  118. package/dist/client/route-state.js +16 -1
  119. package/dist/client/route-state.js.map +1 -1
  120. package/dist/client/sse-event-processor.d.ts +3 -0
  121. package/dist/client/sse-event-processor.d.ts.map +1 -1
  122. package/dist/client/sse-event-processor.js +2 -0
  123. package/dist/client/sse-event-processor.js.map +1 -1
  124. package/dist/client/use-chat-threads.d.ts.map +1 -1
  125. package/dist/client/use-chat-threads.js +19 -4
  126. package/dist/client/use-chat-threads.js.map +1 -1
  127. package/dist/data-widgets/index.d.ts +326 -0
  128. package/dist/data-widgets/index.d.ts.map +1 -0
  129. package/dist/data-widgets/index.js +232 -0
  130. package/dist/data-widgets/index.js.map +1 -0
  131. package/dist/index.browser.d.ts +2 -0
  132. package/dist/index.browser.d.ts.map +1 -1
  133. package/dist/index.browser.js +2 -0
  134. package/dist/index.browser.js.map +1 -1
  135. package/dist/index.d.ts +2 -0
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +2 -0
  138. package/dist/index.js.map +1 -1
  139. package/dist/provider-api/corpus-jobs.d.ts +160 -0
  140. package/dist/provider-api/corpus-jobs.d.ts.map +1 -1
  141. package/dist/provider-api/corpus-jobs.js +44 -0
  142. package/dist/provider-api/corpus-jobs.js.map +1 -1
  143. package/dist/provider-api/index.d.ts +39 -0
  144. package/dist/provider-api/index.d.ts.map +1 -1
  145. package/dist/provider-api/index.js +53 -0
  146. package/dist/provider-api/index.js.map +1 -1
  147. package/dist/scripts/dev/index.d.ts +1 -0
  148. package/dist/scripts/dev/index.d.ts.map +1 -1
  149. package/dist/scripts/dev/index.js +129 -127
  150. package/dist/scripts/dev/index.js.map +1 -1
  151. package/dist/server/action-discovery.d.ts.map +1 -1
  152. package/dist/server/action-discovery.js +5 -0
  153. package/dist/server/action-discovery.js.map +1 -1
  154. package/dist/server/agent-chat-plugin.d.ts +8 -0
  155. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  156. package/dist/server/agent-chat-plugin.js +34 -21
  157. package/dist/server/agent-chat-plugin.js.map +1 -1
  158. package/dist/server/prompts/framework-core-compact.d.ts +4 -1
  159. package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
  160. package/dist/server/prompts/framework-core-compact.js +11 -4
  161. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  162. package/dist/server/prompts/framework-core.d.ts +4 -1
  163. package/dist/server/prompts/framework-core.d.ts.map +1 -1
  164. package/dist/server/prompts/framework-core.js +15 -5
  165. package/dist/server/prompts/framework-core.js.map +1 -1
  166. package/dist/server/prompts/shared-rules.d.ts +4 -1
  167. package/dist/server/prompts/shared-rules.d.ts.map +1 -1
  168. package/dist/server/prompts/shared-rules.js +4 -1
  169. package/dist/server/prompts/shared-rules.js.map +1 -1
  170. package/dist/styles/agent-native.css +62 -0
  171. package/dist/vite/client.d.ts.map +1 -1
  172. package/dist/vite/client.js +5 -0
  173. package/dist/vite/client.js.map +1 -1
  174. package/docs/content/actions.md +52 -0
  175. package/docs/content/components.md +24 -1
  176. package/docs/content/drop-in-agent.md +9 -2
  177. package/docs/content/external-agents.md +14 -4
  178. package/docs/content/faq.md +5 -4
  179. package/docs/content/getting-started.md +39 -87
  180. package/docs/content/key-concepts.md +34 -15
  181. package/docs/content/mcp-apps.md +2 -0
  182. package/docs/content/mcp-protocol.md +2 -2
  183. package/docs/content/native-chat-ui.md +210 -0
  184. package/docs/content/template-plan.md +16 -1
  185. package/docs/content/what-is-agent-native.md +10 -2
  186. package/package.json +2 -1
@@ -35,10 +35,16 @@ so bundlers choose the browser-safe entry.
35
35
  | `<AgentChatSurface>` | `@agent-native/core/client` or `/client/chat` | You want chat in panel or page mode without the sidebar wrapper. |
36
36
  | `<AssistantChat>` | `@agent-native/core/client` or `/client/chat` | You want to own surrounding chrome while keeping the standard conversation and composer runtime. |
37
37
  | `<MultiTabAssistantChat>` | `@agent-native/core/client` or `/client/chat` | You want the framework's thread tabs without `AgentPanel` chrome. |
38
- | `createAgentChatAdapter()` | `@agent-native/core/client` or `/client/chat` | You are building a custom assistant-ui runtime and need the Agent-Native chat transport. |
38
+ | `createAgentChatAdapter()` | `@agent-native/core/client` or `/client/chat` | You are adapting a BYO assistant-ui transport into the Agent-Native chat runtime. |
39
39
  | `useChatThreads()` | `@agent-native/core/client` or `/client/chat` | You need a custom thread list, history picker, or scoped chat UI. |
40
40
  | `sendToAgentChat()` | `@agent-native/core/client` or `/client/chat` | A product action should hand work to the agent chat. |
41
41
 
42
+ In docs, `AgentChatRuntime` means this standard runtime posture: assistant-ui
43
+ thread state, Agent-Native streaming, run recovery, attachments, model
44
+ selection, approvals, native tool widgets, and SQL-backed sync. It is not a
45
+ separate protocol replacement. BYO agents should adapt into this runtime with
46
+ `createAgentChatAdapter()` when they want the normal app chat experience.
47
+
42
48
  The shortest custom route is still a pre-wired surface:
43
49
 
44
50
  ```tsx
@@ -116,6 +122,23 @@ This layer is intentionally data-first: you own where messages come from, and
116
122
  the renderer owns consistent markdown, attachments, notices, artifacts, and
117
123
  tool-call display.
118
124
 
125
+ ## Native Tool Widgets {#native-tool-widgets}
126
+
127
+ Use native tool widgets when an action result should render as app-quality UI
128
+ inside chat instead of plain JSON. Built-in reusable outputs include
129
+ `DataTableWidget`, `DataChartWidget`, and `DataWidgetResult`; they are exported
130
+ from `@agent-native/core/client/chat` and the root client entry. See
131
+ [Native Chat UI](/docs/native-chat-ui) for the action result contract.
132
+
133
+ | API | Use when |
134
+ | -------------------------------- | --------------------------------------------------------------------------------------- |
135
+ | `DataTableWidget` | You want an action result to render rows and columns in native chat. |
136
+ | `DataChartWidget` | You want compact bar, line, or area chart output in native chat. |
137
+ | `DataWidgetResult` | You want a typed result shape for `"data-table"`, `"data-chart"`, or `"data-insights"`. |
138
+ | `registerActionChatRenderer()` | You need an action-declared renderer selected by exact `chatUI.renderer`. |
139
+ | `registerToolRenderer()` | You need a product-specific native renderer for a non-core tool result. |
140
+ | `registerReservedToolRenderer()` | Framework code needs a reserved renderer that wins before template renderers. |
141
+
119
142
  ## Realtime Collab And Presence {#collab-presence}
120
143
 
121
144
  Use `@agent-native/core/client/collab` for Liveblocks-style presence and
@@ -184,14 +184,21 @@ framework own the agent runtime:
184
184
  - **`@agent-native/core/client/conversation`** — use this for transcript
185
185
  rendering without the full chat runtime.
186
186
  - **`createAgentChatAdapter()`** — use this only when building a custom
187
- assistant-ui runtime. It connects to the same `/_agent-native/agent-chat`
188
- stream and preserves run-manager recovery, attachments, model selection, and
187
+ assistant-ui transport for the standard Agent-Native chat runtime. It
188
+ connects to the same `/_agent-native/agent-chat` stream and preserves
189
+ run-manager recovery, attachments, model selection, native widgets, and
189
190
  thread metadata.
190
191
 
191
192
  Avoid posting directly to `/_agent-native/agent-chat` from product UI. If a
192
193
  lower-level helper is missing for a real custom surface, add that named helper
193
194
  first so client code does not learn a second, ad hoc transport.
194
195
 
196
+ For BYO agent runtimes, keep actions and SQL-backed app state as the contract.
197
+ Adapt the runtime into `<AssistantChat createAdapter={...} />` when you want
198
+ Agent-Native chat behavior, or use `PromptComposer` by itself only when the
199
+ external runtime owns the transcript and loop. See
200
+ [Native Chat UI](/docs/native-chat-ui#byo-agent-runtimes).
201
+
195
202
  ### Build your own sidebar from pieces {#build-your-own-sidebar}
196
203
 
197
204
  The stock sidebar is optional. This example builds the agent-side UI itself.
@@ -10,6 +10,13 @@ An agent-native app is reachable by any MCP-compatible host — Claude, Claude D
10
10
 
11
11
  The external-agent bridge closes the loop. First you connect your own agent to a **hosted** app — either by pasting the app's remote MCP URL into a chat host like Claude or ChatGPT, or by running the developer CLI flow for local coding agents. Then the agent does the work over MCP and hands the user either an inline **MCP App** UI in compatible hosts or a single **"Open in &lt;app&gt; →"** link that opens the real app focused on exactly what was produced. It reuses the existing `navigate` / `application_state` contract the UI already drains every 2s (see [Context Awareness](/docs/context-awareness)) — there is no second navigation mechanism.
12
12
 
13
+ ## Which agent path do you need? {#which-agent-path}
14
+
15
+ - **External MCP host:** use this page when Claude, ChatGPT, Codex, Cursor, OpenCode, GitHub Copilot / VS Code, or another MCP-compatible host should call your hosted agent-native app.
16
+ - **Your app consuming MCP tools:** see [MCP Clients](/docs/mcp-clients) when an agent-native app needs to call tools exposed by another MCP server.
17
+ - **Another app or agent via A2A:** use [Agent Mentions](/docs/agent-mentions) and [A2A](/docs/a2a-protocol) when agent-native apps should discover and delegate to each other.
18
+ - **Local custom sub-agents:** use [Workspace](/docs/workspace) when you want custom agent profiles inside the agent-native workspace itself.
19
+
13
20
  ## Easy setup {#easy-setup}
14
21
 
15
22
  Add one remote MCP connector to the host where you want to use Agent-Native.
@@ -83,7 +90,7 @@ In hosts that support MCP Apps, Analytics can render real dashboard and analysis
83
90
 
84
91
  ## Advanced setup: local agents {#connect}
85
92
 
86
- Use this flow for local agent clients on your machine — Claude Code, Claude Code CLI, Codex, and Claude Cowork. (Cursor uses the paste-URL flow above; it does not need this CLI path.)
93
+ Use this flow for local agent clients on your machine — Claude Code, Claude Code CLI, Codex, Claude Cowork, Cursor, OpenCode, and GitHub Copilot / VS Code. Cursor and other OAuth-native clients can also use the paste-URL flow above when their UI supports remote MCP OAuth.
87
94
 
88
95
  Run the connect command through npm:
89
96
 
@@ -93,7 +100,7 @@ npx @agent-native/core@latest connect https://dispatch.agent-native.com
93
100
 
94
101
  The command asks which local agent clients should receive MCP config. All clients are preselected the first time; after you choose, the selection is saved to `~/.agent-native/connect.json` so the next run can reuse it with Enter, or you can edit the checked items.
95
102
 
96
- For Claude Code and Claude Code CLI, `connect` writes a standard remote HTTP MCP entry with no static headers. Restart Claude Code, run `/mcp`, and choose **Authenticate**; Claude completes the OAuth flow and stores its own tokens. For Codex and Claude Cowork, `connect` uses the compatibility device-code flow: it opens your browser at the app, you click **Authorize** once, and the command writes a scoped bearer-token entry. If you choose a mix of clients, it does both.
103
+ For Claude Code, Claude Code CLI, Cursor, OpenCode, and GitHub Copilot / VS Code, `connect` writes a standard remote HTTP MCP entry with no static headers. Restart the client and authenticate from its MCP UI when prompted. For Codex and Claude Cowork, `connect` uses the compatibility device-code flow: it opens your browser at the app, you click **Authorize** once, and the command writes a scoped bearer-token entry. If you choose a mix of clients, it does both.
97
104
 
98
105
  Keep the `connect` command running until the browser approval completes. If the
99
106
  waiting process is stopped early, the approval can succeed in the browser but
@@ -104,7 +111,10 @@ If you previously connected Claude Code through the old bearer-token flow, just
104
111
  | Local client | Config written by `connect` | Auth flow |
105
112
  | ----------------------------- | ------------------------------------------------------- | ----------------------------------------------- |
106
113
  | Claude Code / Claude Code CLI | `.mcp.json` or `~/.claude.json`, depending on `--scope` | Standard remote MCP OAuth in Claude's `/mcp` UI |
107
- | Codex | `~/.codex/config.toml` under `[mcp_servers.<app>]` | Browser-authorized bearer fallback |
114
+ | Cursor | `.cursor/mcp.json` or `~/.cursor/mcp.json` | Standard remote MCP OAuth in Cursor's MCP UI |
115
+ | OpenCode | `opencode.json` or `~/.config/opencode/opencode.json` | Standard remote MCP OAuth in OpenCode's MCP UI |
116
+ | GitHub Copilot / VS Code | `.vscode/mcp.json` or VS Code user MCP config | Standard remote MCP OAuth in VS Code's MCP UI |
117
+ | Codex | `$CODEX_HOME/config.toml` or `~/.codex/config.toml` | Browser-authorized bearer fallback |
108
118
  | Claude Cowork | `~/.cowork/mcp.json` using the Claude Code MCP shape | Browser-authorized bearer fallback |
109
119
 
110
120
  Restart the agent client after connecting so it picks up the new MCP server; OAuth-native clients may then prompt you to authenticate from their MCP UI.
@@ -114,7 +124,7 @@ and token values before sharing logs. Do not use raw curl as a substitute for a
114
124
  host MCP session; after connecting, use the host-exposed tools or restart the
115
125
  client if the new server is not visible yet.
116
126
 
117
- Use `--client codex` (or `--client claude-code`, `--client claude-code-cli`, `--client cowork`, `--client all`) to skip the picker for scripts or one-off installs.
127
+ Use `--client codex` (or `--client claude-code`, `--client claude-code-cli`, `--client cursor`, `--client opencode`, `--client github-copilot`, `--client cowork`, `--client all`) to skip the picker for scripts or one-off installs.
118
128
 
119
129
  First-party app skills install the instructions and the hosted MCP connector together with the Agent Native CLI:
120
130
 
@@ -15,11 +15,12 @@ Agent-native is a framework for building apps where the AI agent and the UI are
15
15
 
16
16
  ### Who is this for? {#who-is-this-for}
17
17
 
18
- Anyone who wants to ship an AI-powered product without spending a year building the boring parts. That includes:
18
+ Agent-native is for people who want a real app and an AI agent to work from the same data and actions. The common paths are:
19
19
 
20
- - **Founders and PMs** who want to fork a working SaaS and make it their ownsee [Templates](/docs/cloneable-saas).
21
- - **Operators** who want a [pure-agent app](/docs/pure-agent-apps) an agent that does work in the background with a minimal management UI.
22
- - **Developers** building agent-driven products from scratch and want auth, multi-tenancy, real-time sync, and an architecture that won't break when AI is the primary user.
20
+ - **Use a hosted app** if you want Mail, Calendar, Forms, Plan, or another finished template with no setup start at the [template gallery](/templates).
21
+ - **Fork and customize a template** if you want your own SaaS product with auth, database, UI, and agent actions already wired see [Templates](/docs/cloneable-saas).
22
+ - **Build from scratch** if you want the framework primitives for a new agent-driven product start with [Getting Started](/docs/getting-started).
23
+ - **Connect another agent or code tool** if you want Claude, ChatGPT, Codex, Cursor, or GitHub Copilot / VS Code to use an agent-native app — see [External Agents](/docs/external-agents) and [Skills Guide](/docs/skills-guide).
23
24
 
24
25
  ### How is this different from adding AI to an existing app? {#how-is-this-different}
25
26
 
@@ -1,25 +1,26 @@
1
1
  ---
2
2
  title: "Getting Started"
3
- description: "Pick a template, create your app, and start customizing it with AI."
3
+ description: "Choose the right path: hosted apps, local setup, agent-native skills, or external-agent connections."
4
4
  ---
5
5
 
6
6
  # Getting Started
7
7
 
8
- By the end of this page, you'll have a working app Mail, Calendar, Forms, or any other template running with an AI agent built into the sidebar that can drive every part of it.
8
+ Agent-Native is for apps where a real UI and an AI agent share the same actions, data, and state. This page helps you choose the right starting point, then walks through the local setup path.
9
9
 
10
- ## Who is this for? {#who-is-this-for}
10
+ ## Pick your path {#who-is-this-for}
11
11
 
12
- There are two ways to use agent-native, depending on how hands-on you want to be:
12
+ Start with the path that matches what you want to do next:
13
13
 
14
- - **You want to use a hosted version.** Try a template right now at [agent-native.com/templates](/templates). Each template is a live, hosted app — you sign in, start using it, and the agent is already there. No install, no setup. You can stop reading this page and head straight to the [template gallery](/templates).
15
- - **You want to run locally or customize it.** You'll clone a template, run it on your machine, and shape it however you want — branding, features, integrations. The rest of this page is for you. You'll need [Node.js 22 or newer (LTS recommended)](https://nodejs.org) and [pnpm](https://pnpm.io) installed.
16
- - **You just want to add agent-native to your existing coding agent.** Skip the scaffold entirely install a skill into Claude Code, Codex, or Cursor with one command. Jump to [Try it with a skill](#try-with-a-skill).
14
+ - **Use a starter app.** Browse the [template gallery](/templates). Hosted apps already include sign-in, data, and the agent sidebar. No install required.
15
+ - **Build or customize your own app.** Continue with [Create a local app](#create-your-app). You'll scaffold a template, run it locally, then change the code, brand, data model, and integrations.
16
+ - **Add agent-native skills to a code tool.** Jump to [Try it with a skill](#try-with-a-skill) to add Plans or PR Recaps to Claude Code, Codex, or Cursor without scaffolding an app.
17
+ - **Connect an external agent to an app.** Use [External Agents](/docs/external-agents) to connect Claude, ChatGPT, Codex, Cursor, OpenCode, GitHub Copilot / VS Code, or another MCP host to an existing app.
17
18
 
18
- Not sure which path? If you've never written code, the hosted version is for you. If you have a developer or AI coding tool ready, the local path gives you total control.
19
+ If you're not sure, use the hosted app when you want to use software now. Use the local path when you want to own and change the software.
19
20
 
20
- ## First run {#create-your-app}
21
+ ## Create a local app {#create-your-app}
21
22
 
22
- Three commands and you're up:
23
+ You'll need [Node.js 22 or newer](https://nodejs.org) and [pnpm](https://pnpm.io) installed. Then run:
23
24
 
24
25
  ```bash
25
26
  npx @agent-native/core@latest create my-platform
@@ -27,7 +28,7 @@ cd my-platform
27
28
  pnpm install && pnpm dev
28
29
  ```
29
30
 
30
- The `create` command defaults to a workspace monorepo. It shows a multi-select picker — pick one template or several (Mail + Calendar + Forms, for example) and they all scaffold into one workspace sharing auth, brand, and agent config. If you want one app directory instead, pass `--standalone`.
31
+ The `create` command opens a template picker. Pick one template for a single app, or pick several templates to create a workspace where the apps share auth, brand, and agent configuration. If you want one app directory instead of a workspace, pass `--standalone`.
31
32
 
32
33
  Open the URL the dev server prints. The workspace gateway always starts on port 8080 and serves every app through it; individual apps run on their own ports that are printed at startup. Standalone apps default to `http://localhost:3000`.
33
34
 
@@ -37,46 +38,27 @@ In local development the embedded agent panel picks up your existing Claude Code
37
38
 
38
39
  ## What just happened? {#what-just-happened}
39
40
 
40
- You now have a real, full-featured app running on your machine. Open it in the browser and try it:
41
+ You now have a real app running on your machine with an agent built into it:
41
42
 
42
- - Click around the UI like you would any SaaS product.
43
- - Open the agent panel on the right side. Type something like "show me my settings" or "create a new entry called Welcome." Watch the agent click through the app on your behalf.
44
- - Anything you do by clicking, the agent can do by reading and writing the same database. Anything the agent does shows up in the UI immediately.
43
+ - The UI works like a normal SaaS product: routes, forms, tables, settings, and keyboard flows.
44
+ - The agent panel can read the current screen and run the same actions the UI runs.
45
+ - Changes stay in sync because the UI and agent share the same database and application state.
45
46
 
46
47
  That parity between agent and UI is the whole point — see [What Is Agent-Native?](/docs/what-is-agent-native) for the bigger picture.
47
48
 
48
- ## Templates {#templates}
49
+ ## Pick a template {#templates}
49
50
 
50
- Each template is a complete app with UI, agent actions, database schema, and AI instructions ready to go:
51
+ Templates are complete apps, not blank starters. Choose one when you want a familiar product to customize:
51
52
 
52
- | Template | What it is |
53
- | ------------------------------------- | --------------------------------------------------------------------- |
54
- | [Calendar](/docs/template-calendar) | Agent-native Google Calendar + Calendly-style booking |
55
- | [Content](/docs/template-content) | Open-source Obsidian for MDX |
56
- | [Brain](/docs/template-brain) | Company chat with cited institutional memory |
57
- | [Assets](/docs/template-assets) | Brand asset libraries and generated media |
58
- | [Slides](/docs/template-slides) | Agent-native Google Slides / Pitch |
59
- | [Video](/docs/template-videos) | Programmatic motion graphics and product-demo videos on Remotion |
60
- | [Analytics](/docs/template-analytics) | Agent-native Amplitude / Mixpanel |
61
- | [Mail](/docs/template-mail) | Agent-native Superhuman / Gmail |
62
- | [Clips](/docs/template-clips) | Async screen + camera recording with transcription and AI summaries |
63
- | [Design](/docs/template-design) | Agent-native HTML prototyping studio |
64
- | [Forms](/docs/template-forms) | Agent-native Typeform |
65
- | [Plan](/docs/template-plan) | Visual plans and PR recaps with diagrams, wireframes, and annotations |
66
- | [Dispatch](/docs/template-dispatch) | Workspace control plane — shared secrets, integrations, routing |
53
+ - **Productivity apps** [Mail](/docs/template-mail), [Calendar](/docs/template-calendar), [Forms](/docs/template-forms), [Content](/docs/template-content), [Slides](/docs/template-slides), [Design](/docs/template-design), [Clips](/docs/template-clips), and [Video](/docs/template-videos)
54
+ - **Team and data apps** — [Analytics](/docs/template-analytics), [Brain](/docs/template-brain), [Dispatch](/docs/template-dispatch), [Assets](/docs/template-assets), and [Plan](/docs/template-plan)
55
+ - **Bare starting point** — [Starter](/docs/template-starter), a minimal app with the framework wiring and no domain model
67
56
 
68
- Browse the [template gallery](/templates) for live demos, or see [Templates](/docs/cloneable-saas) for the full catalog and the clone → customize → deploy flow.
57
+ Browse the [template gallery](/templates) for live hosted apps. See [Templates](/docs/cloneable-saas) for the full catalog and the clone → customize → deploy flow.
69
58
 
70
- ## Creating vs adding apps {#creating-vs-adding-apps}
59
+ ## Add more apps to a workspace {#creating-vs-adding-apps}
71
60
 
72
- Run `create` from the folder where you want a brand-new workspace:
73
-
74
- ```bash
75
- cd ~/projects
76
- npx @agent-native/core@latest create my-platform
77
- ```
78
-
79
- After a workspace exists, run app commands from the workspace root:
61
+ `create` (above) makes a brand-new workspace. Once you have one, add more apps to it with `add-app`, run from the workspace root:
80
62
 
81
63
  ```bash
82
64
  cd my-platform
@@ -85,9 +67,9 @@ pnpm install
85
67
  pnpm dev
86
68
  ```
87
69
 
88
- If your terminal is inside `apps/content` or another app folder, the CLI still detects the workspace and adds the new app as a sibling under `apps/`. Afterward, go back to the workspace root before running `pnpm install` or `pnpm dev`.
70
+ If your terminal is inside `apps/content` or another app folder, the CLI still detects the workspace and adds the new app as a sibling under `apps/`. Go back to the workspace root before running `pnpm install` or `pnpm dev`.
89
71
 
90
- To make a second app from the same template, give it a new app name:
72
+ To add another app from a specific template, pass a name and `--template`:
91
73
 
92
74
  ```bash
93
75
  npx @agent-native/core@latest add-app design-lab --template design
@@ -95,7 +77,7 @@ npx @agent-native/core@latest add-app design-lab --template design
95
77
 
96
78
  ## Try it with a skill {#try-with-a-skill}
97
79
 
98
- Don't want to scaffold a whole app yet? Add agent-native superpowers to a coding agent you already use — Claude Code, Codex, or Cursor — with a single command. Installing the **Plans** skill turns the plans your agent writes into structured, reviewable docs with diagrams, wireframes, and inline comments:
80
+ Don't want to scaffold an app? Add agent-native capabilities to a coding agent you already use. Installing the **Plans** skill turns the plans your agent writes into structured, reviewable docs with diagrams, wireframes, and inline comments:
99
81
 
100
82
  ```bash
101
83
  npx @agent-native/core@latest skills add visual-plan
@@ -103,6 +85,8 @@ npx @agent-native/core@latest skills add visual-plan
103
85
 
104
86
  That one command installs the skill instructions, registers the hosted MCP connector, and signs you in — no marketplace browsing, no manual OAuth. Then run `/visual-plan` in your agent. See the [Skills Guide](/docs/skills-guide#app-backed-skills) for more skills, local/offline installs, and how app-backed skills work.
105
87
 
88
+ Need the opposite direction, where Claude, ChatGPT, Codex, Cursor, OpenCode, GitHub Copilot / VS Code, or another MCP host calls an agent-native app? Use [External Agents](/docs/external-agents).
89
+
106
90
  ## Project structure {#project-structure}
107
91
 
108
92
  Every agent-native app — whether from a template or from scratch — follows the same structure:
@@ -117,30 +101,6 @@ my-app/
117
101
 
118
102
  Templates add domain-specific code on top: database schemas in `server/db/`, API routes in `server/routes/api/`, and actions in `actions/`. Building from scratch? See [Creating Templates](/docs/creating-templates) for `vite.config.ts`, `tsconfig.json`, and Tailwind setup.
119
103
 
120
- ## Next docs to read {#next-docs}
121
-
122
- Once your app is running, the most useful follow-ups are:
123
-
124
- - **Connect Slack or email** so you can message your agent from anywhere — see [Messaging](/docs/messaging).
125
- - **Set up Dispatch as your central inbox** to triage messages and orchestrate across multiple apps — see [Dispatch](/docs/dispatch).
126
- - **Customize via Workspace** — edit instructions, skills, memory, and connect MCP servers per user — see [Workspace](/docs/workspace).
127
- - **Troubleshoot common setup questions** — see the [FAQ](/docs/faq).
128
- - **Understand the architecture** — see [Key Concepts](/docs/key-concepts) for how SQL, actions, polling sync, and context awareness fit together.
129
-
130
- ## Try one concrete next step {#first-next-step}
131
-
132
- From here, use any AI coding tool (Agent-Native Code, Claude Code, Cursor, Windsurf, Builder.io) to customize the app. The agent instructions in `AGENTS.md` are already set up so any tool understands the codebase.
133
-
134
- Good first moves:
135
-
136
- - **Open Agent-Native Code** — run `npx @agent-native/core@latest` or `npx @agent-native/core@latest code` from the project. A bare command opens the local Claude Code/Codex-like workspace; a bare prompt such as `npx @agent-native/core@latest "rename the app"` starts a Code task directly.
137
- - **Ask the built-in agent what it sees** — open the agent panel and type "what app am I looking at, and what can you do here?" This verifies the app, UI state, and agent loop are all talking to each other.
138
- - **Make a tiny customization** — ask your coding tool to rename the app, change the first screen copy, or add one field to a form. It will read `AGENTS.md` for the framework conventions.
139
- - **Add another app to the same workspace** — use `npx @agent-native/core@latest add-app` from inside the workspace folder. The command starts at `npx`.
140
- - **Single app instead of a monorepo?** Pass `--standalone` when creating: `npx @agent-native/core@latest create my-app --standalone --template mail`.
141
-
142
- Agent-Native Code understands built-in slash goals such as `/migrate` and `/audit`, plus project commands in `.agents/commands/*.md`. Use `npx @agent-native/core@latest code list`, `status`, `resume`, `stop`, or `ui` to inspect and control the same run from the CLI, the local UI, or the Desktop Code tab.
143
-
144
104
  ## Architecture principles {#architecture-principles}
145
105
 
146
106
  The three principles that apply to every agent-native app:
@@ -151,25 +111,17 @@ The three principles that apply to every agent-native app:
151
111
 
152
112
  The definitive six rules are in [Key Concepts](/docs/key-concepts).
153
113
 
154
- ## Testing local framework changes {#testing-local-framework-changes}
114
+ ## Common next moves {#next-docs}
155
115
 
156
- Framework contributors can scaffold against the current checkout instead of the
157
- published packages:
116
+ Once your app is running, the usual next step is small and concrete:
158
117
 
159
- ```bash
160
- AGENT_NATIVE_CREATE_USE_LOCAL_CORE=1 pnpm --filter @agent-native/core create my-platform
161
- ```
162
-
163
- With that flag, generated workspaces link both the local `@agent-native/core`
164
- and local `@agent-native/dispatch` packages. Use it when you need to verify
165
- unpublished template or package changes end-to-end in a freshly generated
166
- workspace. The packages run their `prepack` build first, so the linked packages
167
- serve fresh `dist` output instead of stale build artifacts.
118
+ - **Ask the built-in agent what it sees** — open the agent panel and type "what app am I looking at, and what can you do here?" This verifies that the app, UI state, and agent loop are connected.
119
+ - **Make one customization** rename the app, change the first screen copy, or add a field to a form. The project `AGENTS.md` already tells coding agents how this repo is organized.
120
+ - **Deploy it** — see [Deployment](/docs/deployment) when you're ready to put the app on your own domain.
168
121
 
169
- To exercise the repo-local CLI itself without building first, run it through
170
- the root script:
122
+ Useful follow-up docs:
171
123
 
172
- ```bash
173
- pnpm dev:cli --help
174
- pnpm dev:cli code goals
175
- ```
124
+ - [Key Concepts](/docs/key-concepts) for the architecture: SQL, actions, polling sync, and context awareness
125
+ - [Workspace](/docs/workspace) for instructions, skills, memory, and per-user MCP connections
126
+ - [Messaging](/docs/messaging) for Slack, email, Telegram, and other ways to reach the agent
127
+ - [FAQ](/docs/faq) for setup and product questions
@@ -190,21 +190,39 @@ See [Context Awareness](/docs/context-awareness) for the full pattern: navigatio
190
190
 
191
191
  Agent-native supports a lot of agent-facing protocols because different hosts standardize different pieces of the same workflow. App authors should not have to choose among them or rebuild the same operation for each client. The center of gravity stays the action system.
192
192
 
193
- | Surface | What agent-native provides | What you write |
194
- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
195
- | Agent tool calling | The in-app agent sees actions as function tools with zod-derived JSON Schema. | `defineAction()` |
196
- | UI actions | React calls the same action through `useActionMutation()` / `useActionQuery()`. | The same action |
197
- | HTTP and CLI | Actions auto-mount at `/_agent-native/actions/:name` and run via `pnpm action <name>`. | The same action |
198
- | MCP server | External MCP hosts get Streamable HTTP tools, the `ask-agent` meta-tool, and optional MCP Apps resources. | The same action, plus optional `mcpApp` |
199
- | MCP Auth | Remote MCP OAuth, PKCE, dynamic client registration, refresh tokens, and `mcp:read` / `mcp:write` / `mcp:apps` scopes. | Nothing per action |
200
- | A2A | Other agents discover the agent card and call the app over JSON-RPC tasks. | The same actions and agent config |
201
- | Deep links | Action results can round-trip users into the running UI through `/_agent-native/open` and `agentnative://open`. | Optional `link` metadata |
202
- | MCP clients | The app can also consume local, remote, or hub-shared MCP servers as `mcp__...` tools. | `mcp.config.json` or settings |
203
- | Instructions and skills | `AGENTS.md`, skills, memory, slash commands, sub-agents, jobs, and automations live in the SQL-backed workspace. | Workspace resources, not protocol glue |
204
- | Agent Web | Public pages can publish `robots.txt`, `sitemap.xml`, `llms.txt`, markdown mirrors, and structured metadata. | Route access plus `agentWeb` config |
205
- | Extensions | Sandboxed mini-apps call app actions, persist extension data, and use proxied fetch helpers. | Extension HTML using `appAction()` |
206
-
207
- The practical rule is simple: implement domain operations as actions, add `readOnly`, `publicAgent`, `link`, or `mcpApp` metadata only when the surface needs it, and use skills/instructions for behavior. MCP, A2A, MCP Apps, MCP Auth, UI mutations, CLI commands, and deep-link handoffs are adapters around that same core.
193
+ | Surface | Status | What agent-native provides | What you write |
194
+ | ----------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
195
+ | Agent tool calling | Shipping | The in-app agent sees actions as function tools with zod-derived JSON Schema. | `defineAction()` |
196
+ | UI actions | Shipping | React calls the same action through `useActionMutation()` / `useActionQuery()`. | The same action |
197
+ | Native chat widgets | Shipping | Tool results with explicit widget discriminants can render native tables, charts, approvals, and setup cards in chat. | Structured action results |
198
+ | HTTP and CLI | Shipping | Actions auto-mount at `/_agent-native/actions/:name` and run via `pnpm action <name>`. | The same action |
199
+ | MCP server | Shipping | External MCP hosts get Streamable HTTP tools, the `ask-agent` meta-tool, and optional MCP Apps resources. | The same action, plus optional `mcpApp` |
200
+ | MCP OAuth | Shipping | Standard remote MCP OAuth, PKCE, dynamic client registration, refresh tokens, and `mcp:read` / `mcp:write` / `mcp:apps` scopes. | Nothing per action |
201
+ | MCP Apps | Shipping | External hosts that support app resources can render iframe/native-host widgets, with deep-link fallback elsewhere. | Optional `mcpApp` metadata |
202
+ | A2A | Shipping | Other agents discover the agent card and call the app over JSON-RPC tasks. | The same actions and agent config |
203
+ | Deep links | Shipping | Action results can round-trip users into the running UI through `/_agent-native/open` and `agentnative://open`. | Optional `link` metadata |
204
+ | MCP clients | Shipping | The app can also consume local, remote, or hub-shared MCP servers as `mcp__...` tools. | `mcp.config.json` or settings |
205
+ | Instructions and skills | Shipping | `AGENTS.md`, skills, memory, slash commands, sub-agents, jobs, and automations live in the SQL-backed workspace. | Workspace resources, not protocol glue |
206
+ | Agent Web | Shipping | Public pages can publish `robots.txt`, `sitemap.xml`, `llms.txt`, markdown mirrors, and structured metadata. | Route access plus `agentWeb` config |
207
+ | Extensions | Shipping | Sandboxed mini-apps call app actions, persist extension data, and use proxied fetch helpers. | Extension HTML using `appAction()` |
208
+ | AG-UI | Adapter target | A good fit for connecting an external agent runtime to an agent-native chat/UI shell through event streams. | An adapter, not duplicate actions |
209
+ | ACP | Coding-agent/editor | Useful for coding agents inside editors/IDEs; not the general BYO app-chat runtime contract. | Editor/agent adapter work |
210
+
211
+ The practical rule is simple: implement domain operations as actions, add `readOnly`, `publicAgent`, `link`, `mcpApp`, or an explicit native widget result only when a surface needs it, and use skills/instructions for behavior. MCP, A2A, MCP Apps, MCP OAuth, UI mutations, native chat widgets, CLI commands, and deep-link handoffs are adapters around that same core.
212
+
213
+ Adapter horizon: [AG-UI](https://docs.ag-ui.com/introduction) is a strong fit for connecting external agent runtimes to Agent-Native chat and app shells through events. [ACP](https://zed.dev/acp) is important for coding-agent/editor interoperability, but it is not the general BYO app-agent UI contract.
214
+
215
+ ## Three product shapes {#three-product-shapes}
216
+
217
+ Those protocol adapters let the same app grow across three product shapes:
218
+
219
+ | Shape | User experience | Best for |
220
+ | --------------------- | ---------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
221
+ | **Headless agent** | Call actions and the agent from your code, another app, MCP, A2A, HTTP, or CLI. | Automation, integrations, background jobs, developer workflows |
222
+ | **Rich chat agent** | A standalone or embedded chat can guide setup, call tools, request approvals, and render native tables/charts/results. | Agent-first workflows that still need inspectable output |
223
+ | **Whole application** | Chat starts central when helpful, then becomes a sidebar next to forms, dashboards, editors, calendars, or documents. | Durable products where humans and agents share state over time |
224
+
225
+ You should be able to start with the headless contract, add rich chat, and then grow a full app around the same actions and SQL state instead of rebuilding.
208
226
 
209
227
  ## Agent modifies code {#agent-modifies-code}
210
228
 
@@ -301,5 +319,6 @@ For detailed guidance on specific patterns:
301
319
  - [What Is Agent-Native?](/docs/what-is-agent-native) — the vision and philosophy
302
320
  - [Context Awareness](/docs/context-awareness) — navigation state, view-screen, navigate commands
303
321
  - [Skills Guide](/docs/skills-guide) — framework skills, domain skills, creating custom skills
322
+ - [Native Chat UI](/docs/native-chat-ui) — action-declared tables, charts, and BYO runtime posture
304
323
  - [A2A Protocol](/docs/a2a-protocol) — agent-to-agent communication
305
324
  - [Multi-App Workspace](/docs/multi-app-workspace) — host many apps in one monorepo with shared auth, skills, components, and credentials
@@ -9,6 +9,8 @@ MCP Apps are the official `io.modelcontextprotocol/ui` extension that lets compa
9
9
 
10
10
  For connecting external agents and the broader MCP server setup, see [External Agents](/docs/external-agents) and [MCP Protocol](/docs/mcp-protocol). This page covers authoring MCP App resources and the embed bridge that powers them.
11
11
 
12
+ Inside an Agent-Native app's own chat, prefer [native chat renderers](/docs/native-chat-ui) for first-party widgets such as tables, charts, setup cards, and approvals. Use MCP Apps for external/cross-host inline UI in Claude, ChatGPT, Copilot, Cursor, and other compatible hosts, with the action `link` as the universal deep-link fallback.
13
+
12
14
  ## Authoring: optional MCP Apps UI {#mcp-apps}
13
15
 
14
16
  For hosts that support the MCP Apps extension, an action can also advertise an inline UI resource with `mcpApp`. This is a progressive enhancement for flows where the external agent should hand the user an interactive surface instead of only text — for example reviewing an email draft, editing a calendar invite, or choosing between generated dashboard variants.
@@ -15,7 +15,7 @@ Every agent-native app automatically exposes a remote MCP (Model Context Protoco
15
15
  | Make your app callable over MCP (server setup, auth, tools) | This page |
16
16
  | Give your app's agent more tools from external MCP servers | [MCP Clients](/docs/mcp-clients) |
17
17
  | App-to-app delegation via JSON-RPC | [A2A Protocol](/docs/a2a-protocol) |
18
- | Build or embed interactive MCP App UIs | [MCP Apps](/docs/mcp-apps) |
18
+ | Build or embed interactive MCP App resources | [MCP Apps](/docs/mcp-apps) |
19
19
 
20
20
  If your goal is to connect Claude, ChatGPT, Claude Code, Codex, Cursor, or Claude Cowork to hosted agent-native apps, start with [External Agents](/docs/external-agents). It documents the recommended single Dispatch connector at `https://dispatch.agent-native.com/_agent-native/mcp`, direct per-app URLs for isolated app access, standard remote MCP OAuth, fallback config for older clients, MCP Apps inline UIs, and deep links back into the UI. This page is the lower-level MCP server reference.
21
21
 
@@ -29,7 +29,7 @@ Key concepts:
29
29
  - **Streamable HTTP** — uses the modern MCP transport over standard HTTP (POST + SSE)
30
30
  - **Same actions** — the exact same action registry that powers agent chat and A2A
31
31
  - **`ask-agent` tool** — a meta-tool that delegates to the full agent loop for complex tasks
32
- - **MCP Apps** — actions can advertise inline HTML UIs through the official `io.modelcontextprotocol/ui` extension
32
+ - **MCP Apps** — actions can advertise interactive UI resources through the official `io.modelcontextprotocol/ui` extension
33
33
  - **Standard remote MCP OAuth** — OAuth 2.1 discovery, dynamic client registration, authorization-code + PKCE, refresh-token rotation
34
34
  - **Bearer auth fallback** — uses `ACCESS_TOKEN`, `ACCESS_TOKENS`, or connect-minted JWTs for clients that cannot run OAuth
35
35