@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.
- package/content/01-getting-started/01-introduction.md +15 -15
- package/content/01-getting-started/02-quickstart.md +2 -2
- package/content/02-server-sdk/01-overview.md +6 -6
- package/content/02-server-sdk/02-sessions.md +1 -1
- package/content/02-server-sdk/03-tools.md +4 -4
- package/content/02-server-sdk/04-streaming.md +1 -1
- package/content/02-server-sdk/05-cli.md +15 -15
- package/content/02-server-sdk/06-workers.md +8 -8
- package/content/02-server-sdk/07-debugging.md +7 -7
- package/content/02-server-sdk/08-computer.md +4 -4
- package/content/03-client-sdk/01-overview.md +11 -11
- package/content/03-client-sdk/02-messages.md +28 -1
- package/content/03-client-sdk/03-streaming.md +3 -3
- package/content/03-client-sdk/04-execution-blocks.md +1 -1
- package/content/03-client-sdk/05-socket-transport.md +5 -5
- package/content/03-client-sdk/06-http-transport.md +5 -5
- package/content/03-client-sdk/07-structured-output.md +3 -3
- package/content/03-client-sdk/08-file-uploads.md +2 -2
- package/content/03-client-sdk/09-error-handling.md +3 -3
- package/content/03-client-sdk/10-client-tools.md +3 -3
- package/content/04-protocol/01-overview.md +19 -18
- package/content/04-protocol/02-input-resources.md +1 -1
- package/content/04-protocol/03-triggers.md +1 -1
- package/content/04-protocol/04-tools.md +6 -6
- package/content/04-protocol/05-skills.md +5 -5
- package/content/04-protocol/06-handlers.md +3 -0
- package/content/04-protocol/07-agent-config.md +114 -21
- package/content/04-protocol/09-skills-advanced.md +18 -18
- package/content/04-protocol/10-types.md +22 -22
- package/content/04-protocol/11-workers.md +31 -30
- package/content/04-protocol/12-references.md +10 -10
- package/content/04-protocol/13-mcp-servers.md +95 -6
- package/content/05-api-reference/02-sessions.md +2 -2
- package/content/06-examples/02-nextjs-chat.md +3 -3
- package/content/06-examples/03-socket-chat.md +3 -3
- package/dist/chunk-R4UMXGAC.js +1523 -0
- package/dist/chunk-R4UMXGAC.js.map +1 -0
- package/dist/content.js +1 -1
- package/dist/docs.json +40 -40
- package/dist/index.js +1 -1
- package/dist/search-index.json +1 -1
- package/dist/search.js +1 -1
- package/dist/search.js.map +1 -1
- package/dist/sections.json +40 -40
- package/package.json +1 -1
- package/dist/chunk-4XCEGHY7.js +0 -1549
- package/dist/chunk-4XCEGHY7.js.map +0 -1
- package/dist/chunk-BKMROUXE.js +0 -1523
- package/dist/chunk-BKMROUXE.js.map +0 -1
- package/dist/chunk-HMRAGEPN.js +0 -1523
- package/dist/chunk-HMRAGEPN.js.map +0 -1
- package/dist/chunk-HQCOEPPD.js +0 -1523
- package/dist/chunk-HQCOEPPD.js.map +0 -1
- package/dist/chunk-J5MPASK3.js +0 -1523
- package/dist/chunk-J5MPASK3.js.map +0 -1
- package/dist/chunk-TFR7YOK2.js +0 -1523
- package/dist/chunk-TFR7YOK2.js.map +0 -1
- package/dist/chunk-XVO2F2JU.js +0 -1523
- 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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`
|
|
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/
|
|
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
|
|
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)
|
|
358
|
-
- [Messages](/docs/client-sdk/messages)
|
|
359
|
-
- [Streaming](/docs/client-sdk/streaming)
|
|
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)
|
|
408
|
-
- [Protocol Overview](/docs/protocol/overview)
|
|
409
|
-
- [Tools](/docs/protocol/tools)
|
|
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
|