@octavus/docs 3.0.0 → 3.2.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 (59) hide show
  1. package/content/01-getting-started/01-introduction.md +15 -15
  2. package/content/01-getting-started/02-quickstart.md +2 -2
  3. package/content/02-server-sdk/01-overview.md +6 -6
  4. package/content/02-server-sdk/02-sessions.md +1 -1
  5. package/content/02-server-sdk/03-tools.md +4 -4
  6. package/content/02-server-sdk/04-streaming.md +1 -1
  7. package/content/02-server-sdk/05-cli.md +15 -15
  8. package/content/02-server-sdk/06-workers.md +8 -8
  9. package/content/02-server-sdk/07-debugging.md +7 -7
  10. package/content/02-server-sdk/08-computer.md +4 -4
  11. package/content/03-client-sdk/01-overview.md +11 -11
  12. package/content/03-client-sdk/02-messages.md +28 -1
  13. package/content/03-client-sdk/03-streaming.md +3 -3
  14. package/content/03-client-sdk/04-execution-blocks.md +1 -1
  15. package/content/03-client-sdk/05-socket-transport.md +5 -5
  16. package/content/03-client-sdk/06-http-transport.md +5 -5
  17. package/content/03-client-sdk/07-structured-output.md +3 -3
  18. package/content/03-client-sdk/08-file-uploads.md +2 -2
  19. package/content/03-client-sdk/09-error-handling.md +3 -3
  20. package/content/03-client-sdk/10-client-tools.md +3 -3
  21. package/content/04-protocol/01-overview.md +19 -18
  22. package/content/04-protocol/02-input-resources.md +1 -1
  23. package/content/04-protocol/03-triggers.md +1 -1
  24. package/content/04-protocol/04-tools.md +6 -6
  25. package/content/04-protocol/05-skills.md +5 -5
  26. package/content/04-protocol/06-handlers.md +3 -0
  27. package/content/04-protocol/07-agent-config.md +114 -21
  28. package/content/04-protocol/09-skills-advanced.md +18 -18
  29. package/content/04-protocol/10-types.md +22 -22
  30. package/content/04-protocol/11-workers.md +31 -30
  31. package/content/04-protocol/12-references.md +10 -10
  32. package/content/04-protocol/13-mcp-servers.md +95 -6
  33. package/content/05-api-reference/02-sessions.md +2 -2
  34. package/content/06-examples/02-nextjs-chat.md +3 -3
  35. package/content/06-examples/03-socket-chat.md +3 -3
  36. package/dist/chunk-R4UMXGAC.js +1523 -0
  37. package/dist/chunk-R4UMXGAC.js.map +1 -0
  38. package/dist/content.js +1 -1
  39. package/dist/docs.json +40 -40
  40. package/dist/index.js +1 -1
  41. package/dist/search-index.json +1 -1
  42. package/dist/search.js +1 -1
  43. package/dist/search.js.map +1 -1
  44. package/dist/sections.json +40 -40
  45. package/package.json +1 -1
  46. package/dist/chunk-4XCEGHY7.js +0 -1549
  47. package/dist/chunk-4XCEGHY7.js.map +0 -1
  48. package/dist/chunk-BKMROUXE.js +0 -1523
  49. package/dist/chunk-BKMROUXE.js.map +0 -1
  50. package/dist/chunk-HMRAGEPN.js +0 -1523
  51. package/dist/chunk-HMRAGEPN.js.map +0 -1
  52. package/dist/chunk-HQCOEPPD.js +0 -1523
  53. package/dist/chunk-HQCOEPPD.js.map +0 -1
  54. package/dist/chunk-J5MPASK3.js +0 -1523
  55. package/dist/chunk-J5MPASK3.js.map +0 -1
  56. package/dist/chunk-TFR7YOK2.js +0 -1523
  57. package/dist/chunk-TFR7YOK2.js.map +0 -1
  58. package/dist/chunk-XVO2F2JU.js +0 -1523
  59. package/dist/chunk-XVO2F2JU.js.map +0 -1
@@ -38,6 +38,7 @@ mcpServers:
38
38
  | `description` | Yes | What the MCP server provides |
39
39
  | `source` | Yes | `remote` (platform-managed) or `device` (consumer-provided) |
40
40
  | `display` | No | How tool calls appear in UI: `hidden`, `name`, `description` (default: `description`) |
41
+ | `connection` | No | When to connect: `eager` or `lazy` (default: `lazy`). Remote only. |
41
42
 
42
43
  ### Display Modes
43
44
 
@@ -97,7 +98,7 @@ A server defined as `figma:` that exposes `get_design_context` produces:
97
98
 
98
99
  - `figma__get_design_context`
99
100
 
100
- The namespace is stripped before calling the MCP server the server receives the original tool name. This convention matches Anthropic's MCP integration in Claude Desktop and ensures tool names stay unique across servers.
101
+ The namespace is stripped before calling the MCP server - the server receives the original tool name. This convention matches Anthropic's MCP integration in Claude Desktop and ensures tool names stay unique across servers.
101
102
 
102
103
  ### What the LLM Sees
103
104
 
@@ -122,7 +123,7 @@ Device MCP tools (auto-discovered):
122
123
  filesystem__list_directory
123
124
  ```
124
125
 
125
- You don't define individual MCP tool schemas in the protocol they're auto-discovered from each MCP server at runtime.
126
+ You don't define individual MCP tool schemas in the protocol - they're auto-discovered from each MCP server at runtime.
126
127
 
127
128
  ## Remote MCP Servers
128
129
 
@@ -134,6 +135,34 @@ Configuration happens in the Octavus platform UI:
134
135
  2. The server's slug must match the namespace in your protocol
135
136
  3. The platform connects, discovers tools, and makes them available to the agent
136
137
 
138
+ ### Connection Modes
139
+
140
+ The `connection` field controls when the platform connects to a remote MCP server:
141
+
142
+ | Mode | Behavior |
143
+ | ------- | ---------------------------------------------------------------------------------------------------------------------- |
144
+ | `lazy` | (default) The agent activates integrations on demand at runtime. The agent starts responding immediately. |
145
+ | `eager` | The platform connects and discovers tools before the first LLM request. Tools are guaranteed available from message 1. |
146
+
147
+ ```yaml
148
+ mcpServers:
149
+ sentry:
150
+ source: remote
151
+ connection: eager # Always connected upfront
152
+ display: name
153
+
154
+ notion:
155
+ source: remote
156
+ # connection defaults to lazy - agent activates when needed
157
+ display: description
158
+ ```
159
+
160
+ With **lazy connection** (the default), the agent receives two built-in tools - one for listing available integrations and one for activating them. The agent decides which integrations it needs based on the conversation and activates them on demand. This avoids paying connection latency for integrations the agent doesn't end up using.
161
+
162
+ With **eager connection**, the platform connects to the MCP server before the first LLM request, exactly like a declared tool. Use this when the agent needs the MCP's tools from the very first message.
163
+
164
+ The `connection` field is only valid on `source: remote` - device MCPs have their own connection mechanism through the server-sdk.
165
+
137
166
  ### Authentication
138
167
 
139
168
  Remote MCP servers support multiple authentication methods:
@@ -145,7 +174,7 @@ Remote MCP servers support multiple authentication methods:
145
174
  | Bearer | Bearer token authentication |
146
175
  | None | No authentication required |
147
176
 
148
- Authentication is configured per-project different projects can connect to the same MCP server with different credentials.
177
+ Authentication is configured per-project - different projects can connect to the same MCP server with different credentials.
149
178
 
150
179
  ## Device MCP Servers
151
180
 
@@ -199,11 +228,68 @@ handlers:
199
228
  system: research-prompt
200
229
  ```
201
230
 
202
- This thread can use Figma and browser tools, but not sentry or filesystem even if those are available on the main agent.
231
+ This thread can use Figma and browser tools, but not sentry or filesystem - even if those are available on the main agent.
232
+
233
+ ## On-Demand MCP Servers
234
+
235
+ By default, an agent can only call MCP tools whose namespace is listed in `mcpServers`. With `onDemandMcpServers`, a scope can opt into **every connected MCP of a given source** at runtime, without enumerating each one in the protocol.
236
+
237
+ Remote MCPs are connected at the project level from the Octavus dashboard. Normally, each connected MCP that the agent should be able to use has to be declared in the protocol - connecting a new MCP means editing the protocol and redeploying. `onDemandMcpServers` removes that round-trip: once a source is opted in, any MCP connected to the project under that source becomes available to the agent immediately.
238
+
239
+ Currently supported for `source: remote`.
240
+
241
+ ### Protocol-level declaration
242
+
243
+ Add an `onDemandMcpServers:` section alongside `mcpServers:`, keyed by source. Each entry configures how the matched MCPs appear in tool lists:
244
+
245
+ ```yaml
246
+ mcpServers:
247
+ figma:
248
+ description: Figma design tool integration
249
+ source: remote
250
+ display: description
251
+
252
+ onDemandMcpServers:
253
+ remote:
254
+ description: Additional connected integrations
255
+ display: name
256
+ contextRetention:
257
+ toolResults: { retainLast: 5 }
258
+ ```
259
+
260
+ ### Scope-level opt-in
261
+
262
+ The agent and individual `start-thread` blocks each choose whether to pick up on-demand MCPs, by listing the sources they want:
263
+
264
+ ```yaml
265
+ agent:
266
+ mcpServers: [figma]
267
+ onDemandMcpServers: [remote]
268
+
269
+ handlers:
270
+ user-message:
271
+ focused:
272
+ block: start-thread
273
+ mcpServers: [figma]
274
+ # no onDemandMcpServers - this thread does NOT see on-demand MCPs
275
+ broad:
276
+ block: start-thread
277
+ mcpServers: [figma]
278
+ onDemandMcpServers: [remote]
279
+ ```
280
+
281
+ ### Rules
282
+
283
+ - A scope's tool list includes every **connected** MCP of any referenced source, whether or not any protocol declares that slug.
284
+ - Undeclared namespaces inherit `description`, `display`, and `contextRetention` from the per-source entry in `onDemandMcpServers`.
285
+ - Scopes decide independently - threads do not inherit `onDemandMcpServers` from their parent, the same rule as `mcpServers:`.
286
+ - Tool namespaces are always the connector's slug (for example `notion__search`, `linear__create_issue`). Source keys are never namespaces.
287
+
288
+ Workers opt into on-demand MCPs the same way: through `start-thread` blocks inside `steps`. A worker without a `start-thread` that lists a source won't see on-demand MCPs of that source.
203
289
 
204
290
  ## Workers
205
291
 
206
- Workers can declare and use MCP servers using the same `mcpServers:` syntax. Workers resolve their own MCP connections independently they don't inherit from a parent interactive agent.
292
+ Workers can declare and use MCP servers using the same `mcpServers:` syntax. Workers resolve their own MCP connections independently - they don't inherit from a parent interactive agent.
207
293
 
208
294
  ```yaml
209
295
  # Worker protocol
@@ -227,7 +313,7 @@ steps:
227
313
  maxSteps: 10
228
314
  ```
229
315
 
230
- Since workers don't have a global `agent:` section, MCP servers are scoped per-thread via `start-thread` the same way tools and skills work in workers. Remote MCP connections are project-scoped, so workers in the same project share the same OAuth connections.
316
+ Since workers don't have a global `agent:` section, MCP servers are scoped per-thread via `start-thread` - the same way tools and skills work in workers. Remote MCP connections are project-scoped, so workers in the same project share the same OAuth connections.
231
317
 
232
318
  See [Workers](/docs/protocol/workers) for the full worker protocol reference.
233
319
 
@@ -238,6 +324,7 @@ mcpServers:
238
324
  figma:
239
325
  description: Figma design tool integration
240
326
  source: remote
327
+ connection: eager
241
328
  display: description
242
329
  sentry:
243
330
  description: Error tracking and debugging
@@ -298,10 +385,12 @@ mcpServers:
298
385
  figma:
299
386
  description: Figma design tool integration
300
387
  source: remote
388
+ connection: eager # Need design tools from message 1
301
389
  display: description
302
390
  sentry:
303
391
  description: Error tracking and debugging
304
392
  source: remote
393
+ # Lazy (default) - agent activates when debugging is needed
305
394
  display: name
306
395
 
307
396
  tools:
@@ -35,7 +35,7 @@ POST /api/agent-sessions
35
35
  | `agentId` | string | Yes | Agent ID (the `id` field, not `slug`) |
36
36
  | `input` | object | No | Input variables for the agent |
37
37
 
38
- > **Getting the agent ID:** Copy the ID from the agent URL in the [platform](https://octavus.ai) (e.g., `octavus.ai/platform/agents/clxyz123`), or use the [CLI](/docs/server-sdk/cli) (`octavus sync ./agents/my-agent`) for local development workflows.
38
+ > **Getting the agent ID:** Copy the ID from the agent URL in the [platform](https://octavus.ai) (e.g., `octavus.ai/projects/.../agents/clxyz123`), or use the [CLI](/docs/server-sdk/cli) (`octavus sync ./agents/my-agent`) for local development workflows.
39
39
 
40
40
  ### Response
41
41
 
@@ -216,7 +216,7 @@ curl -X POST https://octavus.ai/api/agent-sessions/:sessionId/restore \
216
216
 
217
217
  Clear session state, transitioning it to `expired` status. The session can be restored afterwards with the [Restore Session](#restore-session) endpoint.
218
218
 
219
- This is idempotent clearing an already expired session succeeds without error.
219
+ This is idempotent - clearing an already expired session succeeds without error.
220
220
 
221
221
  ```
222
222
  DELETE /api/agent-sessions/:sessionId
@@ -354,6 +354,6 @@ Tool handlers receive the parameters as `args`:
354
354
 
355
355
  ## Next Steps
356
356
 
357
- - [Protocol Overview](/docs/protocol/overview) Define agent behavior
358
- - [Messages](/docs/client-sdk/messages) Rich message rendering
359
- - [Streaming](/docs/client-sdk/streaming) Advanced streaming UI
357
+ - [Protocol Overview](/docs/protocol/overview) - Define agent behavior
358
+ - [Messages](/docs/client-sdk/messages) - Rich message rendering
359
+ - [Streaming](/docs/client-sdk/streaming) - Advanced streaming UI
@@ -404,6 +404,6 @@ const SockJS: typeof import('sockjs-client') = require('sockjs-client');
404
404
 
405
405
  ## Next Steps
406
406
 
407
- - [Socket Transport](/docs/client-sdk/socket-transport) Advanced socket patterns
408
- - [Protocol Overview](/docs/protocol/overview) Define agent behavior
409
- - [Tools](/docs/protocol/tools) Building tool handlers
407
+ - [Socket Transport](/docs/client-sdk/socket-transport) - Advanced socket patterns
408
+ - [Protocol Overview](/docs/protocol/overview) - Define agent behavior
409
+ - [Tools](/docs/protocol/tools) - Building tool handlers