@mastra/mcp-docs-server 1.3.6-alpha.9 → 1.3.7-alpha.1

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 (51) hide show
  1. package/.docs/docs/deployment/mastra-server.md +2 -2
  2. package/.docs/docs/harness/durable-agents.md +45 -9
  3. package/.docs/docs/harness/signals.md +12 -0
  4. package/.docs/docs/memory/observational-memory.md +17 -15
  5. package/.docs/docs/sandbox/overview.md +1 -0
  6. package/.docs/docs/server/pubsub.md +2 -0
  7. package/.docs/docs/subagents.md +1 -0
  8. package/.docs/docs/workflows/overview.md +2 -0
  9. package/.docs/integrations/sandboxes/blaxel.md +3 -1
  10. package/.docs/integrations/sandboxes/e2b.md +32 -1
  11. package/.docs/integrations/sandboxes/railway.md +13 -0
  12. package/.docs/integrations/sandboxes/sprites.md +219 -0
  13. package/.docs/integrations.md +1 -0
  14. package/.docs/models/environment-variables.md +2 -1
  15. package/.docs/models/gateways/merge-gateway.md +3 -1
  16. package/.docs/models/gateways/openrouter.md +1 -12
  17. package/.docs/models/gateways/vercel.md +2 -1
  18. package/.docs/models/index.md +3 -2
  19. package/.docs/models/providers/302ai.md +3 -1
  20. package/.docs/models/providers/ambient.md +17 -15
  21. package/.docs/models/providers/coralbricks.md +2 -2
  22. package/.docs/models/providers/deepinfra.md +2 -2
  23. package/.docs/models/providers/digitalocean.md +2 -1
  24. package/.docs/models/providers/edenai.md +306 -300
  25. package/.docs/models/providers/empiriolabs.md +4 -8
  26. package/.docs/models/providers/huggingface.md +7 -4
  27. package/.docs/models/providers/kilo.md +31 -42
  28. package/.docs/models/providers/llmgateway-providers.md +6 -6
  29. package/.docs/models/providers/llmgateway.md +3 -7
  30. package/.docs/models/providers/lowrouter.md +84 -0
  31. package/.docs/models/providers/moark.md +17 -9
  32. package/.docs/models/providers/nano-gpt.md +12 -12
  33. package/.docs/models/providers/nearai.md +27 -3
  34. package/.docs/models/providers/novita-ai.md +43 -66
  35. package/.docs/models/providers/ofox.md +2 -1
  36. package/.docs/models/providers/tinfoil.md +1 -2
  37. package/.docs/models/providers.md +2 -1
  38. package/.docs/reference/agents/durable-agent.md +40 -4
  39. package/.docs/reference/agents/inngest-agent.md +26 -0
  40. package/.docs/reference/client-js/agent-controller.md +1 -1
  41. package/.docs/reference/client-js/agents.md +2 -2
  42. package/.docs/reference/client-js/datasets.md +19 -0
  43. package/.docs/reference/core/mastra-class.md +12 -4
  44. package/.docs/reference/memory/observational-memory.md +3 -3
  45. package/.docs/reference/pubsub/lease-provider.md +2 -0
  46. package/.docs/reference/pubsub/valkey-streams.md +1 -1
  47. package/.docs/reference/server/routes.md +1 -0
  48. package/.docs/reference/storage/retention.md +21 -18
  49. package/.docs/reference/tools/mcp-client.md +5 -0
  50. package/.docs/reference/workspace/platform-sandbox.md +15 -2
  51. package/package.json +6 -6
@@ -131,10 +131,14 @@ Visit the [Configuration reference](https://mastra.ai/reference/configuration) f
131
131
 
132
132
  **scheduler.enabled** (`boolean`): Explicitly enable or disable the scheduler.
133
133
 
134
- **recovery** (`MastraRecoveryConfig`): Boot-time recovery behavior for orphaned agent and workflow runs. See Crash recovery. (Default: `{ durableAgents: 'off' }`)
134
+ **recovery** (`MastraRecoveryConfig`): Boot-time recovery behavior for orphaned agent and workflow runs. See Crash recovery. (Default: `{ durableAgents: 'off', workflows: 'auto', workflowConcurrency: 5 }`)
135
135
 
136
136
  **recovery.durableAgents** (`'auto' | 'off'`): Set to 'auto' to automatically re-drive orphaned RUNNING durable agent runs on server boot. This also controls the default snapshot-persistence policy for durable agents: running checkpoints are only written when set to 'auto' (or when an agent sets a custom shouldPersistSnapshot that includes running). Recovery re-issues LLM calls and re-executes tool calls, so tools must be idempotent. See Crash recovery.
137
137
 
138
+ **recovery.workflows** (`'auto' | 'off'`): Set to 'off' to skip restarting active workflow runs on server boot. Individual workflows can also opt out with autoRestartActiveRuns: false.
139
+
140
+ **recovery.workflowConcurrency** (`number`): Maximum number of workflow runs restarted at the same time during boot recovery. Use Infinity for no limit. Workflow and durable agent recovery run in parallel.
141
+
138
142
  ## Methods
139
143
 
140
144
  ### `recoverAllDurableAgents()`
@@ -143,17 +147,21 @@ Re-drives every orphaned `running` durable-agent run across all registered durab
143
147
 
144
148
  Requires persistent storage. With an in-memory store, there's nothing to recover after a process restart.
145
149
 
150
+ A run that another execution still drives isn't taken over. It's counted in `skipped` and checked again once that execution's claim could have lapsed, so a run whose process crashed is recovered without another call. `shutdown()` cancels pending re-checks. See [run ownership](https://mastra.ai/docs/harness/durable-agents).
151
+
146
152
  ```typescript
147
153
  const result = await mastra.recoverAllDurableAgents()
148
- // { agents: 2, recovered: 3, succeeded: 3, failed: 0 }
154
+ // { agents: 2, recovered: 3, succeeded: 3, failed: 0, skipped: 1 }
149
155
  ```
150
156
 
151
157
  Returns:
152
158
 
153
159
  **agents** (`number`): Number of durable agents scanned.
154
160
 
155
- **recovered** (`number`): Total number of runs that were re-driven.
161
+ **recovered** (`number`): Total number of runs that were re-driven: succeeded plus failed.
156
162
 
157
163
  **succeeded** (`number`): Runs that restarted successfully.
158
164
 
159
- **failed** (`number`): Runs whose restart threw an error.
165
+ **failed** (`number`): Runs whose restart threw an error.
166
+
167
+ **skipped** (`number`): Runs that another execution still drives. Each is checked again later.
@@ -99,7 +99,7 @@ OM performs thresholding with fast local token estimation. Text uses `tokenx`, a
99
99
 
100
100
  **observation.activateOnProviderChange** (`boolean`): Force buffered observations to activate when the actor provider or model changes. If unset, the top-level activateOnProviderChange value is used for observations. Currently only applied when using the standalone ObservationalMemory class; new Memory(...) applies the top-level activateOnProviderChange only.
101
101
 
102
- **observation.blockAfter** (`number`): Safety net for when background buffering can't keep up. Values from 1 up to (but not including) 100 are multipliers of messageTokens: 1.2 resolves to 120% of the threshold (36k tokens with the default 30k). Values of 100 or more are absolute token counts and must be greater than messageTokens. Above this point, activation uses the smallest set of buffered chunks that reaches the retention target, even when that overshoots the target by more than the usual safeguard allows. It never activates more chunks than are needed to reach the retention target, so it removes only slightly more history than a normal activation. It changes the result only when the retention floor is above roughly 20,000 tokens; with the default bufferActivation (a 6k floor) it has no observable effect. Activation usually keeps a minimum remaining context (the smaller of 1000 tokens or the retention floor), but a single buffered chunk that covers the whole pending window still activates and can leave less. Crossing blockAfter does not trigger a blocking observation. A synchronous (blocking) observation runs when the messageTokens threshold is reached and activating buffered chunks doesn't bring pending tokens back under it, for example when a large tool result arrives after buffering has stopped. All remaining buffered chunks are activated first, so the synchronous observation only covers messages no chunk has observed. Only relevant when bufferTokens is set. Defaults to 1.2 when async buffering is enabled.
102
+ **observation.blockAfter** (`number`): Safety net for when background buffering can't keep up. Values from 1 up to (but not including) 100 are multipliers of messageTokens: 1.2 resolves to 120% of the threshold (36k tokens with the default 30k). Multipliers apply to a per-thread messageTokens override when one is set. Values of 100 or more are absolute token counts and must be greater than messageTokens. Between messageTokens and blockAfter, only async buffering and activation run: reaching the threshold without a buffered chunk to activate starts background buffering, and the chunk activates on a later step. A synchronous (blocking) observation runs if pending tokens still reach blockAfter after buffered activation. All remaining buffered chunks are activated first, so the synchronous observation only covers messages no chunk has observed. Set blockAfter: 1 to observe synchronously at messageTokens. Above this point, activation also uses the smallest set of buffered chunks that reaches the retention target, even when that overshoots the target by more than the usual safeguard allows. It never activates more chunks than are needed to reach the retention target, so it removes only slightly more history than a normal activation. It changes the result only when the retention floor is above roughly 20,000 tokens; with the default bufferActivation (a 6k floor) it has no observable effect. Activation usually keeps a minimum remaining context (the smaller of 1000 tokens or the retention floor), but a single buffered chunk that covers the whole pending window still activates and can leave less. Only relevant when bufferTokens is set. Defaults to 1.2 when async buffering is enabled.
103
103
 
104
104
  **observation.previousObserverTokens** (`number | false`): Optional token budget for the observer's previous-observations context. When set to a number, the observations passed to the Observer agent are tail-truncated to fit within this budget while keeping the newest observations and preserving highlighted 🔴 items when possible. When a buffered reflection is pending, the already-reflected observation lines are automatically replaced with the reflection summary before truncation. Set to 0 to omit previous observations entirely, or false to disable truncation explicitly.
105
105
 
@@ -371,7 +371,7 @@ export const agent = new Agent({
371
371
 
372
372
  Async buffering is **enabled by default**. It pre-computes observations in the background as the conversation grows: when the `messageTokens` threshold is reached, buffered observations activate instantly with no blocking LLM call.
373
373
 
374
- The lifecycle follows **buffer → activate → remove messages → repeat**. Background Observer calls run at `bufferTokens` intervals and produce chunks of observations. At the threshold, activation moves observations into the log and removes raw messages from context. Above `blockAfter`, activation may overshoot the retention target instead of activating fewer chunks. A synchronous observation runs if pending tokens are still at or above the threshold after all buffered chunks have been activated.
374
+ The lifecycle follows **buffer → activate → remove messages → repeat**. Background Observer calls run at `bufferTokens` intervals and produce chunks of observations. At the threshold, activation moves observations into the log and removes raw messages from context. Between the threshold and `blockAfter`, buffering continues in the background and the next ready chunk activates on a later step. A synchronous observation runs if pending tokens still reach `blockAfter` after all buffered chunks have been activated. Above `blockAfter`, activation may also overshoot the retention target instead of activating fewer chunks.
375
375
 
376
376
  Default settings:
377
377
 
@@ -402,7 +402,7 @@ export const agent = new Agent({
402
402
  bufferTokens: 5_000,
403
403
  // Activate to retain 30% of threshold
404
404
  bufferActivation: 0.7,
405
- // Above 1.5x the threshold, let activation overshoot the retention target
405
+ // Observe synchronously at 1.5x the threshold if no buffered chunk is ready
406
406
  blockAfter: 1.5,
407
407
  },
408
408
  reflection: {
@@ -6,6 +6,8 @@
6
6
 
7
7
  `LeaseProvider` is the distributed leasing contract, separate from event delivery ([`PubSub`](https://mastra.ai/reference/pubsub/base)). Mastra's [signals layer](https://mastra.ai/docs/harness/signals) uses it to elect a single owner across multiple processes (for example, serverless invocations) for a resource, most commonly a thread key. The owner is the process that wakes and runs the agent stream, so other processes route follow-up work to it instead of starting a competing run.
8
8
 
9
+ [Durable agents](https://mastra.ai/docs/harness/durable-agents) also claim each run through a lease when the workflows store doesn't support run fencing, so crash recovery can tell whether another process still drives the run.
10
+
9
11
  Leasing is separate from pub/sub. A `LeaseProvider` implementation needs actual lock coordination, whether through an atomic Redis operation such as `SET` or Lua or through an in-memory map for a single process. For backends that omit leasing, the signals runtime preserves single-process behavior with a no-op provider.
10
12
 
11
13
  The built-in [`RedisStreamsPubSub`](https://mastra.ai/reference/pubsub/redis-streams) implements `LeaseProvider`, which is what enables signals to coordinate across instances in distributed and serverless deployments.
@@ -49,7 +49,7 @@ export const mastra = new Mastra({
49
49
 
50
50
  ## Constructor parameters
51
51
 
52
- **url** (`string`): Valkey connection URL. Falls back to valkeyOptions.url. (Default: `valkey://localhost:6379`)
52
+ **url** (`string`): Valkey connection URL. Falls back to valkeyOptions.url. rediss\:// and valkeys\:// URLs enable TLS unless valkeyOptions.useTLS is set. (Default: `valkey://localhost:6379`)
53
53
 
54
54
  **valkeyOptions** (`ValkeyClientOptions`): GLIDE connection options, including native client configuration.
55
55
 
@@ -405,6 +405,7 @@ On authenticated servers, the read routes require the `stored-workflows:read` pe
405
405
  | `POST` | `/api/datasets/:datasetId/items` | Add a dataset item |
406
406
  | `DELETE` | `/api/datasets/:datasetId/items/:itemId/purge` | Permanently scrub an item's content from every dataset version and linked experiment result |
407
407
  | `GET` | `/api/experiments` | List experiments across datasets |
408
+ | `GET` | `/api/experiments/:experimentId` | Get an experiment by ID without knowing its dataset |
408
409
  | `DELETE` | `/api/experiments/:experimentId` | Delete an experiment, including one orphaned by dataset deletion |
409
410
  | `GET` | `/api/datasets/:datasetId/experiments` | List experiments for a dataset |
410
411
  | `POST` | `/api/datasets/:datasetId/experiments` | Trigger an experiment, or create one without starting it (`start: false`) |
@@ -95,29 +95,32 @@ Set the `retention` field on the store config.
95
95
 
96
96
  Each domain specifies its age-prunable tables and the timestamp column that anchors comparison, chosen so `maxAge` matches the meaning of the data. Append-only logs use creation time, live state uses last activity, and jobs or runs use completion time so in-flight work isn't pruned.
97
97
 
98
- | Domain | Table key | Anchor column | `maxAge` measures |
99
- | ----------------- | ------------------ | ---------------- | ---------------------------------------------------------------- |
100
- | `memory` | `threads` | `createdAt` | Thread age |
101
- | `memory` | `messages` | `createdAt` | Message age |
102
- | `memory` | `resources` | `createdAt` | Resource age |
103
- | `threadState` | `threadState` | `updatedAt` | Inactivity: state for still-active threads survives |
104
- | `observability` | `spans` | `startedAt` | Span age |
105
- | `observability` | `metrics` | `timestamp` | Metric event age (vNext only) |
106
- | `observability` | `logs` | `timestamp` | Log event age (vNext only) |
107
- | `observability` | `scores` | `timestamp` | Score event age (vNext only) |
108
- | `observability` | `feedback` | `timestamp` | Feedback event age (vNext only) |
109
- | `scores` | `scorers` | `createdAt` | Score record age |
110
- | `workflows` | `workflowSnapshot` | `updatedAt` | Inactivity, suspended or long-running workflows survive |
111
- | `backgroundTasks` | `backgroundTasks` | `completedAt` | Time since completion, in-flight tasks (`NULL`) are never pruned |
112
- | `experiments` | `experiments` | `completedAt` | Time since completion, running experiments are never pruned |
113
- | `notifications` | `notifications` | `createdAt` | Notification age |
114
- | `harness` | `sessions` | `createdAt` | Session record age |
115
- | `schedules` | `triggers` | `actual_fire_at` | Fire-history age (epoch-ms column) |
98
+ | Domain | Table key | Anchor column | `maxAge` measures |
99
+ | ----------------- | ------------------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------- |
100
+ | `memory` | `threads` | `createdAt` | Thread age |
101
+ | `memory` | `messages` | `createdAt` | Message age |
102
+ | `memory` | `resources` | `createdAt` | Resource age |
103
+ | `memory` | `runFences` | `retiredAt` | Time since the durable agent execution holding the fence settled. Fences of running executions (`NULL`) are never pruned |
104
+ | `threadState` | `threadState` | `updatedAt` | Inactivity: state for still-active threads survives |
105
+ | `observability` | `spans` | `startedAt` | Span age |
106
+ | `observability` | `metrics` | `timestamp` | Metric event age (vNext only) |
107
+ | `observability` | `logs` | `timestamp` | Log event age (vNext only) |
108
+ | `observability` | `scores` | `timestamp` | Score event age (vNext only) |
109
+ | `observability` | `feedback` | `timestamp` | Feedback event age (vNext only) |
110
+ | `scores` | `scorers` | `createdAt` | Score record age |
111
+ | `workflows` | `workflowSnapshot` | `updatedAt` | Inactivity, suspended or long-running workflows survive |
112
+ | `workflows` | `runOwnership` | `updatedAt` | Inactivity. A running durable agent execution renews its claim every 10 seconds, so keep `maxAge` well above its 30-second lease |
113
+ | `backgroundTasks` | `backgroundTasks` | `completedAt` | Time since completion, in-flight tasks (`NULL`) are never pruned |
114
+ | `experiments` | `experiments` | `completedAt` | Time since completion, running experiments are never pruned |
115
+ | `notifications` | `notifications` | `createdAt` | Notification age |
116
+ | `harness` | `sessions` | `createdAt` | Session record age |
117
+ | `schedules` | `triggers` | `actual_fire_at` | Fire-history age (epoch-ms column) |
116
118
 
117
119
  > **Note:**
118
120
  >
119
121
  > - The memory `observational_memory` table has no timestamp anchor, so it can't be age-pruned and isn't a valid retention key.
120
122
  > - Experiments prune as whole units: an aged experiment's result rows are deleted together with it (results cascade with their parent), so a run is never left partially deleted. Retention doesn't have a separate `results` key.
123
+ > - `runOwnership` and `runFences` hold the run fencing records of durable agents, one small record per run in each. If the `runOwnership` `maxAge` is too short, a running execution can lose its run, but an execution that lost a run still can't write. A fence is retired only when its execution settles, so the fence of a run that crashed and was never recovered is never pruned.
121
124
  > - For `schedules`, the growth table is the fire history (`schedule_triggers`, one row per fire): schedule definitions are config and aren't pruned.
122
125
  > - On PostgreSQL, timestamp anchors use the timezone-aware mirror columns (for example `createdAtZ`, `completedAtZ`).
123
126
  > - DuckDB observability stores append-only events for all five signals. Its `spans` policy uses the event `timestamp` column rather than `startedAt`.
@@ -17,6 +17,7 @@ constructor({
17
17
  id?: string;
18
18
  servers: Record<string, MastraMCPServerDefinition>;
19
19
  timeout?: number;
20
+ clientInfo?: { name?: string; version?: string };
20
21
  }: MCPClientOptions)
21
22
  ```
22
23
 
@@ -28,6 +29,8 @@ constructor({
28
29
 
29
30
  **timeout** (`number`): Global timeout value in milliseconds for all servers unless overridden in individual server configs. (Default: `60000`)
30
31
 
32
+ **clientInfo** (`{ name?: string; version?: string }`): Client name and version every server receives on connect and with each request, so servers can attribute traffic to your application. Defaults to the server key as name and '1.0.0' as version. Individual server configs can override either field with their own clientInfo. Doesn't change tool name prefixes, which always use the server key.
33
+
31
34
  ### `MastraMCPServerDefinition`
32
35
 
33
36
  Each server in the `servers` map is configured using the `MastraMCPServerDefinition` type. The transport type is detected based on the provided parameters:
@@ -59,6 +62,8 @@ The client speaks the MCP `2026-07-28` revision. On connect it asks the server w
59
62
 
60
63
  **timeout** (`number`): Server-specific timeout in milliseconds. Falls back to the client-level timeout when omitted.
61
64
 
65
+ **clientInfo** (`{ name?: string; version?: string }`): Overrides the top-level clientInfo for this server. Fields you set replace the top-level values; fields you omit keep them.
66
+
62
67
  **capabilities** (`MCPClientCapabilities`): Client capabilities to advertise: elicitation and extensions. elicitation is only accepted together with an inputRequests handler and defaults to form support when a handler is configured. Roots and sampling are not supported.
63
68
 
64
69
  **inputRequests** (`MCPInputRequestHandler`): Answers input requests from this server. When a tool, resource or prompt call ends as input\_required, the handler is called with each embedded request and the client retries the call with the answers. Without a handler an input\_required result surfaces as an error. See Answering input requests below.
@@ -123,10 +123,21 @@ const result = await sandbox.executeCommand('cat', ['/workspace/state.json'])
123
123
 
124
124
  When `sandboxId` is set, `environmentId` isn't required because the sandbox already exists.
125
125
 
126
- Read the platform's id for the running sandbox from the `sandboxId` property after `start()` and persist it for the next reattach. The property is `undefined` until the sandbox has started in the current process. The option passed to the constructor is a hint for `start()`. Before `start()` runs, `getInfo()` answers from local state and doesn't ask the platform about the hint. If the platform no longer knows the id, `start()` falls through to a fresh provision keyed by the sandbox's logical `id`. That fallback needs `environmentId` (or `MASTRA_ENVIRONMENT_ID`), so pass it whenever a hint might be stale; without it, `start()` throws `environmentId is required`.
126
+ Read the platform's id for the running sandbox from the `sandboxId` property after `start()` and persist it for the next reattach. The property is `undefined` until the sandbox has started in the current process. The option passed to the constructor is a hint for `start()`. Before `start()` runs, `getInfo()` answers from local state and doesn't ask the platform about the hint. Under the default `reattach: 'best-effort'`, if the platform no longer knows the id, `start()` falls through to a fresh provision keyed by the sandbox's logical `id`. That fallback needs `environmentId` (or `MASTRA_ENVIRONMENT_ID`), so pass it whenever a hint might be stale; without it, `start()` throws `environmentId is required`.
127
127
 
128
128
  `start()` reports `{ outcome: 'connected' }` on reattach and `{ outcome: 'created' }` on a fresh provision (including a checkpoint-recovered boot, which is a new VM even when its filesystem was restored). See [`start()`](https://mastra.ai/reference/workspace/sandbox) for the shared contract.
129
129
 
130
+ When a fresh sandbox would silently lose state your app depends on, set `reattach: 'required'`:
131
+
132
+ ```typescript
133
+ const sandbox = new PlatformSandbox({
134
+ sandboxId: 'sbx_abc123',
135
+ reattach: 'required',
136
+ })
137
+ ```
138
+
139
+ With `reattach: 'required'`, a reattach target the platform reports as missing (404), gone (410), or destroyed rejects `start()` with a `SandboxError` whose `code` is `SANDBOX_REATTACH_FAILED`, and no sandbox is provisioned. The error's `details` include `provider`, `sandboxId`, `logicalId` (the sandbox's logical `id`), and `reason`. Other errors propagate unchanged. To start fresh, clear your persisted `sandboxId` and construct the sandbox without it. Clones inherit the `reattach` setting.
140
+
130
141
  ### Reusable templates
131
142
 
132
143
  Pass a reusable template builder to `PlatformSandbox`. A fresh sandbox start sends the serialized definition to Platform, which content-addresses it and starts or reuses the provider build. Sandbox creation never blocks on a build. When the exact template isn't built yet, Platform boots the sandbox on the best available fallback and rebuilds the requested template in the background. The fallback is a same-lineage stale template with matching resources when one exists, otherwise the provider base template:
@@ -315,6 +326,8 @@ console.log(result.exitCode)
315
326
 
316
327
  **sandboxId** (`string`): Existing sandbox ID to reattach to instead of creating a new sandbox. When set, environmentId is not required.
317
328
 
329
+ **reattach** (`'best-effort' | 'required'`): What start() does when sandboxId is set but the platform reports that sandbox as missing, gone, or destroyed. 'best-effort' provisions a fresh sandbox. 'required' throws a SandboxError with code SANDBOX\_REATTACH\_FAILED instead of provisioning. (Default: `'best-effort'`)
330
+
318
331
  **seedCheckpointName** (`string`): Boot-only fallback checkpoint used when the primary recovery checkpoint for id has no stored state. Later snapshots continue writing to the checkpoint for id.
319
332
 
320
333
  **template** (`SandboxTemplateBuilder | (() => SandboxTemplateBuilder | undefined | Promise<SandboxTemplateBuilder | undefined>)`): Reusable template builder or lazy resolver used during a fresh sandbox provision. Resolver and provider build failures fall back to the selected provider default.
@@ -351,7 +364,7 @@ console.log(result.exitCode)
351
364
 
352
365
  ## Methods
353
366
 
354
- **start** (`() => Promise<SandboxStartResult>`): Provision the remote sandbox, or reattach when sandboxId was passed to the constructor. Idempotent once the sandbox is running. A destroyed reattach target falls through to a fresh provision.
367
+ **start** (`() => Promise<SandboxStartResult>`): Provision the remote sandbox, or reattach when sandboxId was passed to the constructor. Idempotent once the sandbox is running. A destroyed reattach target falls through to a fresh provision under the default reattach: 'best-effort', and throws SANDBOX\_REATTACH\_FAILED under reattach: 'required'.
355
368
 
356
369
  **destroy** (`() => Promise<void>`): Tear down the remote sandbox and clear the cached exec lease. A subsequent start() provisions a fresh sandbox (or restores from checkpoint when a stable id is set).
357
370
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mcp-docs-server",
3
- "version": "1.3.6-alpha.9",
3
+ "version": "1.3.7-alpha.1",
4
4
  "description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,8 +26,8 @@
26
26
  "@mastra/mcp-legacy": "npm:@mastra/mcp@^1.18.0",
27
27
  "local-pkg": "^1.1.2",
28
28
  "zod": "^4.6.4",
29
- "@mastra/core": "1.76.0-alpha.4",
30
- "@mastra/mcp": "^2.2.1-alpha.0"
29
+ "@mastra/mcp": "^2.3.0",
30
+ "@mastra/core": "1.77.0-alpha.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@hono/node-server": "^2.0.0",
@@ -43,9 +43,9 @@
43
43
  "tsx": "^4.23.1",
44
44
  "typescript": "^7.0.2",
45
45
  "vitest": "4.1.11",
46
- "@internal/lint": "0.0.141",
47
- "@internal/types-builder": "0.0.116",
48
- "@mastra/core": "1.76.0-alpha.4"
46
+ "@internal/types-builder": "0.0.117",
47
+ "@internal/lint": "0.0.142",
48
+ "@mastra/core": "1.77.0-alpha.0"
49
49
  },
50
50
  "homepage": "https://mastra.ai",
51
51
  "repository": {