@mastra/mcp-docs-server 1.2.16 → 1.2.17-alpha.3

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/.docs/docs/agents/code-mode.md +2 -2
  2. package/.docs/docs/agents/skills.md +1 -1
  3. package/.docs/docs/agents/using-tools.md +1 -1
  4. package/.docs/docs/harness/agent-controller.md +1 -1
  5. package/.docs/docs/mcp/overview.md +4 -5
  6. package/.docs/docs/studio/overview.md +1 -1
  7. package/.docs/docs/workspace/filesystem.md +182 -153
  8. package/.docs/docs/workspace/lsp.md +4 -5
  9. package/.docs/docs/workspace/sandbox.md +234 -141
  10. package/.docs/docs/workspace/search.md +52 -4
  11. package/.docs/docs/workspace/skills.md +62 -33
  12. package/.docs/integrations/browsers/browser-viewer.md +2 -2
  13. package/.docs/integrations/file-storage/amazon-s3.md +1 -1
  14. package/.docs/integrations/file-storage/azure-blob.md +1 -1
  15. package/.docs/integrations/file-storage/google-cloud-storage.md +1 -1
  16. package/.docs/integrations/file-storage/mesa.md +1 -1
  17. package/.docs/integrations/file-storage/vercel-files.md +1 -1
  18. package/.docs/integrations/sandboxes/apple-container.md +1 -1
  19. package/.docs/integrations/sandboxes/daytona.md +1 -1
  20. package/.docs/integrations/sandboxes/docker.md +1 -1
  21. package/.docs/integrations/sandboxes/e2b.md +1 -1
  22. package/.docs/integrations/sandboxes/modal.md +1 -1
  23. package/.docs/models/environment-variables.md +1 -0
  24. package/.docs/models/gateways/vercel.md +3 -2
  25. package/.docs/models/index.md +1 -1
  26. package/.docs/models/providers/baseten.md +2 -1
  27. package/.docs/models/providers/crossmodel.md +2 -2
  28. package/.docs/models/providers/crusoe.md +80 -0
  29. package/.docs/models/providers/deepinfra.md +3 -1
  30. package/.docs/models/providers/fireworks-ai.md +26 -20
  31. package/.docs/models/providers/huggingface.md +5 -1
  32. package/.docs/models/providers/hyper.md +1 -1
  33. package/.docs/models/providers/kilo.md +4 -4
  34. package/.docs/models/providers/llmgateway.md +3 -2
  35. package/.docs/models/providers/merge-gateway.md +5 -2
  36. package/.docs/models/providers/nano-gpt.md +6 -6
  37. package/.docs/models/providers/ofox.md +5 -1
  38. package/.docs/models/providers/opencode-go.md +2 -1
  39. package/.docs/models/providers/opencode.md +3 -1
  40. package/.docs/models/providers/requesty.md +3 -1
  41. package/.docs/models/providers/zai-coding-plan.md +3 -2
  42. package/.docs/models/providers/zhipuai-coding-plan.md +2 -1
  43. package/.docs/models/providers.md +1 -0
  44. package/.docs/reference/agent-controller/agent-controller-class.md +26 -1
  45. package/.docs/reference/browser/browser-viewer.md +1 -1
  46. package/.docs/reference/configuration.md +1 -1
  47. package/.docs/reference/core/removeWorkspace.md +1 -1
  48. package/.docs/reference/file-based-agents/workspace.md +3 -3
  49. package/.docs/reference/observability/tracing/exporters/mastra-platform-exporter.md +2 -0
  50. package/.docs/reference/processors/skill-search-processor.md +1 -1
  51. package/.docs/reference/tools/create-code-mode.md +1 -1
  52. package/.docs/reference/tools/create-tool.md +11 -3
  53. package/.docs/reference/tools/mcp-server.md +4 -1
  54. package/.docs/reference/workspace/local-filesystem.md +1 -1
  55. package/.docs/reference/workspace/local-sandbox.md +1 -1
  56. package/.docs/reference/workspace/workspace-class.md +52 -15
  57. package/CHANGELOG.md +14 -0
  58. package/package.json +5 -5
  59. package/.docs/docs/workspace/overview.md +0 -416
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Merge Gateway logo](https://models.dev/logos/merge-gateway.svg)Merge Gateway
4
4
 
5
- Access 166 Merge Gateway models through Mastra's model router. Authentication is handled automatically using the `MERGE_GATEWAY_API_KEY` environment variable.
5
+ Access 169 Merge Gateway models through Mastra's model router. Authentication is handled automatically using the `MERGE_GATEWAY_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Merge Gateway documentation](https://docs.merge.dev/merge-gateway).
8
8
 
@@ -83,11 +83,13 @@ for await (const chunk of stream) {
83
83
  | `merge-gateway/google/gemini-3.5-flash` | 1.0M | | | | | | $2 | $9 |
84
84
  | `merge-gateway/google/gemini-3.5-flash-lite` | 1.0M | | | | | | $0.30 | $3 |
85
85
  | `merge-gateway/google/gemini-3.6-flash` | 1.0M | | | | | | $2 | $8 |
86
+ | `merge-gateway/google/gemini-3.7-flash` | 1.0M | | | | | | $0.75 | $4 |
86
87
  | `merge-gateway/google/gemini-embedding-001` | 2K | | | | | | $0.15 | — |
87
88
  | `merge-gateway/google/gemini-flash-latest` | 1.0M | | | | | | $2 | $9 |
88
89
  | `merge-gateway/google/gemini-flash-lite-latest` | 1.0M | | | | | | $0.25 | $2 |
89
90
  | `merge-gateway/google/gemma-4-26b-a4b-it` | 262K | | | | | | $0.13 | $0.40 |
90
91
  | `merge-gateway/google/gemma-4-31b-it` | 262K | | | | | | $0.14 | $0.40 |
92
+ | `merge-gateway/meta/llama-3.1-8b-instruct` | 128K | | | | | | $0.22 | $0.22 |
91
93
  | `merge-gateway/meta/llama-3.3-70b-instruct` | 131K | | | | | | $0.22 | $0.50 |
92
94
  | `merge-gateway/meta/muse-spark-1.1` | 1.0M | | | | | | $1 | $4 |
93
95
  | `merge-gateway/meta/muse-spark-1.2` | 1.0M | | | | | | $1 | $4 |
@@ -153,6 +155,7 @@ for await (const chunk of stream) {
153
155
  | `merge-gateway/qwen/qwen-plus` | 1.0M | | | | | | $0.12 | $0.29 |
154
156
  | `merge-gateway/qwen/qwen3-235b-a22b` | 131K | | | | | | $0.29 | $1 |
155
157
  | `merge-gateway/qwen/qwen3-235b-a22b-instruct-2507` | 131K | | | | | | $0.10 | $0.60 |
158
+ | `merge-gateway/qwen/qwen3-30b-a3b` | 131K | | | | | | $0.11 | $1 |
156
159
  | `merge-gateway/qwen/qwen3-32b` | 131K | | | | | | $0.15 | $0.60 |
157
160
  | `merge-gateway/qwen/qwen3-coder-480b-a35b-instruct` | 131K | | | | | | $0.22 | $2 |
158
161
  | `merge-gateway/qwen/qwen3-coder-flash` | 1.0M | | | | | | $0.14 | $0.57 |
@@ -165,7 +168,7 @@ for await (const chunk of stream) {
165
168
  | `merge-gateway/qwen/qwen3.5-122b-a10b` | 256K | | | | | | $0.12 | $0.92 |
166
169
  | `merge-gateway/qwen/qwen3.5-27b` | 256K | | | | | | $0.09 | $0.69 |
167
170
  | `merge-gateway/qwen/qwen3.5-35b-a3b` | 256K | | | | | | $0.06 | $0.46 |
168
- | `merge-gateway/qwen/qwen3.5-397b-a17b` | 256K | | | | | | $0.17 | $1 |
171
+ | `merge-gateway/qwen/qwen3.5-397b-a17b` | 131K | | | | | | $0.17 | $1 |
169
172
  | `merge-gateway/qwen/qwen3.5-9b` | 262K | | | | | | $0.09 | $0.13 |
170
173
  | `merge-gateway/qwen/qwen3.5-flash` | 1.0M | | | | | | $0.03 | $0.29 |
171
174
  | `merge-gateway/qwen/qwen3.5-plus` | 1.0M | | | | | | $0.12 | $0.69 |
@@ -38,7 +38,6 @@ for await (const chunk of stream) {
38
38
  | ---------------------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
39
39
  | `nano-gpt/abacusai/Dracarys-72B-Instruct` | 16K | | | | | | $0.49 | $0.49 |
40
40
  | `nano-gpt/aion-labs/aion-2.0` | 131K | | | | | | $0.80 | $2 |
41
- | `nano-gpt/aion-labs/aion-2.5` | 131K | | | | | | $1 | $3 |
42
41
  | `nano-gpt/aion-labs/aion-3.0` | 131K | | | | | | $3 | $6 |
43
42
  | `nano-gpt/aion-labs/aion-3.0-mini` | 131K | | | | | | $0.70 | $1 |
44
43
  | `nano-gpt/aion-labs/aion-rp-llama-3.1-8b` | 33K | | | | | | $0.80 | $2 |
@@ -145,7 +144,7 @@ for await (const chunk of stream) {
145
144
  | `nano-gpt/deepseek-reasoner` | 64K | | | | | | $0.40 | $2 |
146
145
  | `nano-gpt/deepseek-reasoner-cheaper` | 128K | | | | | | $0.40 | $2 |
147
146
  | `nano-gpt/deepseek-v3-0324` | 128K | | | | | | $0.20 | $0.77 |
148
- | `nano-gpt/deepseek/deepseek-latest` | 1.0M | | | | | | $0.43 | $0.87 |
147
+ | `nano-gpt/deepseek/deepseek-latest` | 1.0M | | | | | | $1 | $4 |
149
148
  | `nano-gpt/deepseek/deepseek-prover-v2-671b` | 160K | | | | | | $1 | $3 |
150
149
  | `nano-gpt/deepseek/deepseek-v3.2` | 163K | | | | | | $0.28 | $0.42 |
151
150
  | `nano-gpt/deepseek/deepseek-v3.2:thinking` | 163K | | | | | | $0.28 | $0.42 |
@@ -157,8 +156,8 @@ for await (const chunk of stream) {
157
156
  | `nano-gpt/deepseek/deepseek-v4-flash-latest` | 1.0M | | | | | | $0.14 | $0.28 |
158
157
  | `nano-gpt/deepseek/deepseek-v4-flash:thinking` | 1.0M | | | | | | $0.07 | $0.14 |
159
158
  | `nano-gpt/deepseek/deepseek-v4-pro` | 1.0M | | | | | | $1 | $2 |
160
- | `nano-gpt/deepseek/deepseek-v4-pro-0813` | 1.0M | | | | | | $0.43 | $0.87 |
161
- | `nano-gpt/deepseek/deepseek-v4-pro-0813:thinking` | 1.0M | | | | | | $0.43 | $0.87 |
159
+ | `nano-gpt/deepseek/deepseek-v4-pro-0813` | 1.0M | | | | | | $1 | $4 |
160
+ | `nano-gpt/deepseek/deepseek-v4-pro-0813:thinking` | 1.0M | | | | | | $1 | $4 |
162
161
  | `nano-gpt/deepseek/deepseek-v4-pro-cheaper` | 1.0M | | | | | | $0.43 | $0.87 |
163
162
  | `nano-gpt/deepseek/deepseek-v4-pro-cheaper:thinking` | 1.0M | | | | | | $0.43 | $0.87 |
164
163
  | `nano-gpt/deepseek/deepseek-v4-pro:thinking` | 1.0M | | | | | | $1 | $2 |
@@ -242,8 +241,9 @@ for await (const chunk of stream) {
242
241
  | `nano-gpt/google/gemini-3.5-flash` | 1.0M | | | | | | $2 | $9 |
243
242
  | `nano-gpt/google/gemini-3.5-flash-lite` | 1.0M | | | | | | $0.30 | $3 |
244
243
  | `nano-gpt/google/gemini-3.5-flash-thinking` | 1.0M | | | | | | $2 | $9 |
245
- | `nano-gpt/google/gemini-3.6-flash` | 1.0M | | | | | | $2 | $8 |
246
- | `nano-gpt/google/gemini-flash-latest` | 1.0M | | | | | | $2 | $8 |
244
+ | `nano-gpt/google/gemini-3.6-flash` | 1.0M | | | | | | $0.75 | $4 |
245
+ | `nano-gpt/google/gemini-3.7-flash` | 1.0M | | | | | | $0.38 | $2 |
246
+ | `nano-gpt/google/gemini-flash-latest` | 1.0M | | | | | | $0.75 | $4 |
247
247
  | `nano-gpt/google/gemini-flash-lite-latest` | 1.0M | | | | | | $0.30 | $3 |
248
248
  | `nano-gpt/google/gemini-pro-latest` | 1.0M | | | | | | $2 | $12 |
249
249
  | `nano-gpt/google/gemma-4-26b-a4b-it` | 262K | | | | | | $0.13 | $0.40 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Ofox logo](https://models.dev/logos/ofox.svg)Ofox
4
4
 
5
- Access 72 Ofox models through Mastra's model router. Authentication is handled automatically using the `OFOX_API_KEY` environment variable.
5
+ Access 76 Ofox models through Mastra's model router. Authentication is handled automatically using the `OFOX_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Ofox documentation](https://ofox.ai/docs).
8
8
 
@@ -75,9 +75,12 @@ for await (const chunk of stream) {
75
75
  | `ofox/google/gemini-3.1-flash-lite` | 1.0M | | | | | | $0.25 | $2 |
76
76
  | `ofox/google/gemini-3.1-pro-preview` | 1.0M | | | | | | $2 | $12 |
77
77
  | `ofox/google/gemini-3.5-flash` | 1.0M | | | | | | $2 | $9 |
78
+ | `ofox/google/gemini-3.5-flash-lite` | 1.0M | | | | | | $0.30 | $3 |
78
79
  | `ofox/google/gemini-3.6-flash` | 1.0M | | | | | | $2 | $8 |
80
+ | `ofox/minimax/minimax-m2.7` | 205K | | | | | | $0.30 | $1 |
79
81
  | `ofox/moonshotai/kimi-k2.5` | 262K | | | | | | $0.60 | $3 |
80
82
  | `ofox/moonshotai/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
83
+ | `ofox/moonshotai/kimi-k2.7-code` | 262K | | | | | | $0.95 | $4 |
81
84
  | `ofox/moonshotai/kimi-k2.7-code-highspeed` | 262K | | | | | | $2 | $8 |
82
85
  | `ofox/moonshotai/kimi-k3` | 1.0M | | | | | | $3 | $15 |
83
86
  | `ofox/openai/gpt-4.1` | 1.0M | | | | | | $2 | $8 |
@@ -93,6 +96,7 @@ for await (const chunk of stream) {
93
96
  | `ofox/openai/gpt-5.2-codex` | 400K | | | | | | $2 | $14 |
94
97
  | `ofox/openai/gpt-5.4-mini` | 400K | | | | | | $0.75 | $5 |
95
98
  | `ofox/openai/gpt-5.4-nano` | 400K | | | | | | $0.20 | $1 |
99
+ | `ofox/openai/gpt-5.4-pro` | 1.1M | | | | | | $30 | $180 |
96
100
  | `ofox/openai/gpt-5.5` | 1.1M | | | | | | $5 | $30 |
97
101
  | `ofox/openai/gpt-5.6-luna` | 1.1M | | | | | | $0.20 | $1 |
98
102
  | `ofox/openai/gpt-5.6-sol` | 1.1M | | | | | | $5 | $30 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![OpenCode Go logo](https://models.dev/logos/opencode-go.svg)OpenCode Go
4
4
 
5
- Access 24 OpenCode Go models through Mastra's model router. Authentication is handled automatically using the `OPENCODE_API_KEY` environment variable.
5
+ Access 25 OpenCode Go models through Mastra's model router. Authentication is handled automatically using the `OPENCODE_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [OpenCode Go documentation](https://opencode.ai/docs/zen).
8
8
 
@@ -40,6 +40,7 @@ for await (const chunk of stream) {
40
40
  | `opencode-go/deepseek-v4-pro` | 1.0M | | | | | | $0.43 | $0.87 |
41
41
  | `opencode-go/glm-5.1` | 203K | | | | | | $1 | $4 |
42
42
  | `opencode-go/glm-5.2` | 1.0M | | | | | | $1 | $4 |
43
+ | `opencode-go/glm-5.3` | 1.0M | | | | | | $1 | $4 |
43
44
  | `opencode-go/gpt-5.6-luna` | 1.1M | | | | | | $0.10 | $0.60 |
44
45
  | `opencode-go/grok-4.5` | 500K | | | | | | $2 | $6 |
45
46
  | `opencode-go/hy3` | 256K | | | | | | $0.14 | $0.58 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![OpenCode Zen logo](https://models.dev/logos/opencode.svg)OpenCode Zen
4
4
 
5
- Access 89 OpenCode Zen models through Mastra's model router. Authentication is handled automatically using the `OPENCODE_API_KEY` environment variable.
5
+ Access 91 OpenCode Zen models through Mastra's model router. Authentication is handled automatically using the `OPENCODE_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [OpenCode Zen documentation](https://opencode.ai/docs/zen).
8
8
 
@@ -56,6 +56,7 @@ for await (const chunk of stream) {
56
56
  | `opencode/gemini-3.5-flash` | 1.0M | | | | | | $2 | $9 |
57
57
  | `opencode/gemini-3.5-flash-lite` | 1.0M | | | | | | $0.30 | $3 |
58
58
  | `opencode/gemini-3.6-flash` | 1.0M | | | | | | $2 | $8 |
59
+ | `opencode/gemini-3.7-flash` | 1.0M | | | | | | $2 | $8 |
59
60
  | `opencode/glm-5` | 205K | | | | | | $1 | $3 |
60
61
  | `opencode/glm-5.1` | 205K | | | | | | $1 | $4 |
61
62
  | `opencode/glm-5.2` | 1.0M | | | | | | $1 | $4 |
@@ -92,6 +93,7 @@ for await (const chunk of stream) {
92
93
  | `opencode/minimax-m2.5` | 205K | | | | | | $0.30 | $1 |
93
94
  | `opencode/minimax-m2.7` | 205K | | | | | | $0.30 | $1 |
94
95
  | `opencode/minimax-m3` | 512K | | | | | | $0.30 | $1 |
96
+ | `opencode/muse-spark-1.2` | 1.0M | | | | | | $1 | $4 |
95
97
  | `opencode/nemotron-3-ultra-free` | 1.0M | | | | | | — | — |
96
98
  | `opencode/nemotron-3.5-lightning-free` | 262K | | | | | | — | — |
97
99
  | `opencode/qwen3.5-plus` | 262K | | | | | | $0.20 | $1 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Requesty logo](https://models.dev/logos/requesty.svg)Requesty
4
4
 
5
- Access 47 Requesty models through Mastra's model router. Authentication is handled automatically using the `REQUESTY_API_KEY` environment variable.
5
+ Access 49 Requesty models through Mastra's model router. Authentication is handled automatically using the `REQUESTY_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Requesty documentation](https://requesty.ai/solution/llm-routing/models).
8
8
 
@@ -64,6 +64,8 @@ for await (const chunk of stream) {
64
64
  | `requesty/gemini-3.5-flash-lite` | 1.0M | | | | | | $0.30 | $3 |
65
65
  | `requesty/gemini-3.5-flash@eu` | 1.0M | | | | | | $2 | $9 |
66
66
  | `requesty/gemini-3.6-flash` | 1.0M | | | | | | $2 | $7 |
67
+ | `requesty/gemini-3.7-flash` | 1.0M | | | | | | $0.75 | $4 |
68
+ | `requesty/gemini-3.7-flash@eu` | 1.0M | | | | | | $0.75 | $4 |
67
69
  | `requesty/glm-5.2` | 1.0M | | | | | | $1 | $4 |
68
70
  | `requesty/glm-5.2@eu` | 1.0M | | | | | | $1 | $4 |
69
71
  | `requesty/gpt-4.1-mini@eu` | 1.0M | | | | | | $0.44 | $2 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Z.AI Coding Plan logo](https://models.dev/logos/zai-coding-plan.svg)Z.AI Coding Plan
4
4
 
5
- Access 4 Z.AI Coding Plan models through Mastra's model router. Authentication is handled automatically using the `ZHIPU_API_KEY` environment variable.
5
+ Access 5 Z.AI Coding Plan models through Mastra's model router. Authentication is handled automatically using the `ZHIPU_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Z.AI Coding Plan documentation](https://docs.z.ai/devpack/overview).
8
8
 
@@ -40,6 +40,7 @@ for await (const chunk of stream) {
40
40
  | `zai-coding-plan/glm-5-turbo` | 200K | | | | | | — | — |
41
41
  | `zai-coding-plan/glm-5.2` | 1.0M | | | | | | — | — |
42
42
  | `zai-coding-plan/glm-5.2-highspeed` | 1.0M | | | | | | — | — |
43
+ | `zai-coding-plan/glm-5.3` | 1.0M | | | | | | — | — |
43
44
 
44
45
  ## Advanced configuration
45
46
 
@@ -69,7 +70,7 @@ const agent = new Agent({
69
70
  model: ({ requestContext }) => {
70
71
  const useAdvanced = requestContext.task === "complex";
71
72
  return useAdvanced
72
- ? "zai-coding-plan/glm-5.2-highspeed"
73
+ ? "zai-coding-plan/glm-5.3"
73
74
  : "zai-coding-plan/glm-4.7";
74
75
  }
75
76
  });
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Zhipu AI Coding Plan logo](https://models.dev/logos/zhipuai-coding-plan.svg)Zhipu AI Coding Plan
4
4
 
5
- Access 7 Zhipu AI Coding Plan models through Mastra's model router. Authentication is handled automatically using the `ZHIPU_API_KEY` environment variable.
5
+ Access 8 Zhipu AI Coding Plan models through Mastra's model router. Authentication is handled automatically using the `ZHIPU_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Zhipu AI Coding Plan documentation](https://docs.bigmodel.cn/cn/coding-plan/overview).
8
8
 
@@ -42,6 +42,7 @@ for await (const chunk of stream) {
42
42
  | `zhipuai-coding-plan/glm-5.1` | 200K | | | | | | — | — |
43
43
  | `zhipuai-coding-plan/glm-5.2` | 1.0M | | | | | | — | — |
44
44
  | `zhipuai-coding-plan/glm-5.2-highspeed` | 1.0M | | | | | | — | — |
45
+ | `zhipuai-coding-plan/glm-5.3` | 1.0M | | | | | | — | — |
45
46
  | `zhipuai-coding-plan/glm-5v-turbo` | 200K | | | | | | — | — |
46
47
 
47
48
  ## Advanced configuration
@@ -43,6 +43,7 @@ Direct access to individual AI model providers. Each provider offers unique mode
43
43
  - [Cortecs](https://mastra.ai/models/providers/cortecs)
44
44
  - [CrofAI](https://mastra.ai/models/providers/crof)
45
45
  - [CrossModel](https://mastra.ai/models/providers/crossmodel)
46
+ - [Crusoe](https://mastra.ai/models/providers/crusoe)
46
47
  - [D.Run (China)](https://mastra.ai/models/providers/drun)
47
48
  - [DaoXE](https://mastra.ai/models/providers/daoxe)
48
49
  - [Databricks](https://mastra.ai/models/providers/databricks)
@@ -196,6 +196,31 @@ const session = await controller.getSessionByResource('project-42', 'editor-wind
196
196
 
197
197
  Returns: `Promise<Session<TState> | undefined>`
198
198
 
199
+ #### `onSessionCreated(listener, options?)`
200
+
201
+ Subscribe to process-local notifications after `createSession()` materializes a new live session. Listener errors are isolated and don't prevent other listeners from running. Call the returned function to unsubscribe.
202
+
203
+ By default listeners are fire-and-forget. Pass `{ blocking: true }` to make `createSession()` await the listener before resolving the new session, so the host can prepare session state before the caller can start a run. Blocking listeners run sequentially in registration order, before fire-and-forget listeners are notified. A blocking listener must not call `createSession()` for the same `(resourceId, scope)` pair. That call would await its own hydration and deadlock.
204
+
205
+ ```typescript
206
+ const unsubscribe = controller.onSessionCreated(
207
+ async session => {
208
+ const settings = await loadSettings(session.identity.getResourceId())
209
+ if (settings) await session.state.set(settings)
210
+ },
211
+ { blocking: true },
212
+ )
213
+
214
+ // Default listeners stay fire-and-forget.
215
+ controller.onSessionCreated(session => {
216
+ console.log(`Created ${session.identity.getResourceId()}`)
217
+ })
218
+ ```
219
+
220
+ Listeners run once per newly materialized session, not for cached sessions returned by later `createSession()` calls. They run only in the current process and aren't persisted events.
221
+
222
+ Returns: `() => void`
223
+
199
224
  #### `onSessionDeleted(listener)`
200
225
 
201
226
  Subscribe to process-local notifications after `deleteSession()` tears down a live session. Listener errors are isolated and don't prevent other listeners from running. Call the returned function to unsubscribe.
@@ -472,5 +497,5 @@ await controller.stopIntervals()
472
497
  - [AgentController guide](https://mastra.ai/docs/harness/agent-controller)
473
498
  - [Session reference](https://mastra.ai/reference/agent-controller/session)
474
499
  - [Agents](https://mastra.ai/docs/agents/overview)
475
- - [Workspace](https://mastra.ai/docs/workspace/overview)
500
+ - [Sandbox](https://mastra.ai/docs/workspace/sandbox)
476
501
  - [Channels](https://mastra.ai/docs/capabilities/channels)
@@ -229,4 +229,4 @@ browse skills install
229
229
 
230
230
  - [BrowserViewer guide](https://mastra.ai/integrations/browsers/browser-viewer): Setup and usage walkthrough
231
231
  - [MastraBrowser](https://mastra.ai/reference/browser/mastra-browser): Base class API reference
232
- - [Workspace overview](https://mastra.ai/docs/workspace/overview): Workspace configuration
232
+ - [Sandbox](https://mastra.ai/docs/workspace/sandbox): Workspace configuration
@@ -483,7 +483,7 @@ export const mastra = new Mastra({
483
483
 
484
484
  A Mastra workspace gives agents a persistent environment for storing files and executing commands. Agents inherit the global workspace on the `Mastra` class unless they have their own workspace configured.
485
485
 
486
- See the [Workspace documentation](https://mastra.ai/docs/workspace/overview) for implementation details.
486
+ See the [Workspace documentation](https://mastra.ai/docs/workspace/sandbox) for implementation details.
487
487
 
488
488
  ```typescript
489
489
  import { Mastra } from '@mastra/core'
@@ -24,5 +24,5 @@ When `destroy` is `true` and `workspace.destroy()` throws, the call rejects with
24
24
 
25
25
  ## Related
26
26
 
27
- - [Workspace overview](https://mastra.ai/docs/workspace/overview)
27
+ - [Sandbox](https://mastra.ai/docs/workspace/sandbox)
28
28
  - [Workspace class](https://mastra.ai/reference/workspace/workspace-class)
@@ -4,9 +4,9 @@
4
4
 
5
5
  > **Beta:** Breaking changes may occur without a major version bump until the API is stable.
6
6
 
7
- A [workspace](https://mastra.ai/docs/workspace/overview) gives an agent filesystem access and command execution. File-based agents get a default workspace automatically when discovered through `mastra dev` or `mastra build`, so they can read and write files and run shell commands without extra configuration.
7
+ A [workspace](https://mastra.ai/docs/workspace/sandbox) assembles capabilities such as filesystem access and command execution. The configured backends determine which tools are available. File-based agents get a default workspace automatically when discovered through `mastra dev` or `mastra build`. This default includes filesystem access and command execution, so agents can read and write files and run shell commands without extra configuration.
8
8
 
9
- Use this page for the file-based convention. For workspace providers, tools, search, lifecycle, and sandbox details, see [Workspaces](https://mastra.ai/docs/workspace/overview).
9
+ Use this page for the file-based convention. For workspace providers, tools, search, lifecycle, and sandbox details, see [Sandbox](https://mastra.ai/docs/workspace/sandbox).
10
10
 
11
11
  ## Default workspace
12
12
 
@@ -65,7 +65,7 @@ Customize the workspace when the default local directory isn't enough. Common re
65
65
  - Add workspace search with BM25 or vector search.
66
66
  - Share one workspace across multiple agents.
67
67
 
68
- For provider patterns and runtime behavior, see the [workspace overview](https://mastra.ai/docs/workspace/overview), [sandbox guide](https://mastra.ai/docs/workspace/sandbox), and [workspace search](https://mastra.ai/docs/workspace/search).
68
+ For provider patterns and runtime behavior, see the [sandbox guide](https://mastra.ai/docs/workspace/sandbox) and [workspace search](https://mastra.ai/docs/workspace/search).
69
69
 
70
70
  ## Runtime boundary
71
71
 
@@ -189,6 +189,8 @@ When an organization has exhausted its observability quota, the Mastra platform
189
189
 
190
190
  The probe timer doesn't keep the Node.js process alive, so short-lived and serverless processes exit normally while paused.
191
191
 
192
+ Every request the exporter sends (batch uploads for all five signal types, plus the traces recovery probe) includes the `x-mastra-observability-capabilities: quota-pause-v1` header. This tells the platform that the client understands the quota-pause contract, so it can safely respond with `402` instead of silently dropping telemetry for older clients that would retry it.
193
+
192
194
  ### Endpoint routing
193
195
 
194
196
  - Base origins derive signal endpoints automatically
@@ -112,4 +112,4 @@ Reserve workspace file tools such as `mastra_workspace_read_file` for explicit f
112
112
 
113
113
  - [ToolSearchProcessor](https://mastra.ai/reference/processors/tool-search-processor)
114
114
  - [Processors](https://mastra.ai/docs/agents/processors)
115
- - [Workspace Skills](https://mastra.ai/docs/workspace/overview)
115
+ - [Workspace Skills](https://mastra.ai/docs/workspace/skills)
@@ -126,4 +126,4 @@ export const codeModeTool = createCodeModeTool({
126
126
 
127
127
  - [Code mode](https://mastra.ai/docs/agents/code-mode)
128
128
  - [createTool()](https://mastra.ai/reference/tools/create-tool)
129
- - [Workspace overview](https://mastra.ai/docs/workspace/overview)
129
+ - [Sandbox](https://mastra.ai/docs/workspace/sandbox)
@@ -89,7 +89,7 @@ The first `execute` parameter is the validated value from `inputSchema`. Destruc
89
89
 
90
90
  **onInputAvailable** (`function`): Optional callback invoked when the complete tool input is available and parsed. Signature: ({ input, ...options }: { input: TSchemaIn } & ToolCallOptions) => void | PromiseLike\<void>.
91
91
 
92
- **onOutput** (`function`): Optional callback invoked after the tool has successfully executed and returned output. Signature: ({ output, toolName, ...options }: { output: TSchemaOut; toolName: string } & Omit\<ToolCallOptions, 'messages'>) => void | PromiseLike\<void>.
92
+ **onOutput** (`function`): Optional callback invoked after a server-executed tool returns output or after a successful client-executed tool result arrives on a follow-up request. Error results don't invoke the hook. For client-executed results, TSchemaOut is a static type only: the server doesn't validate the result against outputSchema, so treat the output as untrusted. Signature: ({ output, toolName, ...options }: { output: TSchemaOut; toolName: string } & Omit\<ToolCallOptions, 'messages'>) => void | PromiseLike\<void>.
93
93
 
94
94
  Runtime-populated fields such as `mastra` and `mcpMetadata` appear in source types but are set by Mastra or MCP adapters. You don't need to configure them for ordinary `createTool()` usage.
95
95
 
@@ -440,7 +440,7 @@ export const tool = createTool({
440
440
 
441
441
  #### `onOutput`
442
442
 
443
- Called after the tool has successfully executed and returned output. Useful for logging results, triggering follow-up actions, or analytics.
443
+ Called after a server-executed tool returns output or after a successful client-executed tool result arrives on a follow-up request. Use it to log results or trigger follow-up actions.
444
444
 
445
445
  ```typescript
446
446
  export const tool = createTool({
@@ -459,9 +459,15 @@ export const tool = createTool({
459
459
  })
460
460
  ```
461
461
 
462
+ Client-executed tools don't define an `execute` function. The browser runs the tool and sends the result on a follow-up request. `onOutput` then runs on the server. Only a correlated successful result invokes the hook: error results, such as the AI SDK `error-text` and `error-json` output types, don't invoke `onOutput`.
463
+
464
+ For client-executed results, the follow-up request must include both the assistant tool call and the tool result, which `@mastra/client-js` sends automatically. A request that carries only the tool result doesn't fire the hook. In this case the callback receives `{ toolCallId, toolName, output, abortSignal }` only.
465
+
466
+ Delivery is at least once, so a retried request runs the hook again. Keep the hook idempotent and treat client output as untrusted data: the server doesn't validate the result against `outputSchema`, so the `output` type is a static type only.
467
+
462
468
  ### Hook execution order
463
469
 
464
- For a typical streaming tool call, the hooks are invoked in this order:
470
+ For a typical streaming tool call on a server-executed tool, the hooks are invoked in this order:
465
471
 
466
472
  1. **onInputStart**: Input streaming begins
467
473
  2. **onInputDelta**: Called multiple times as chunks arrive
@@ -469,6 +475,8 @@ For a typical streaming tool call, the hooks are invoked in this order:
469
475
  4. Tool's **execute** function runs
470
476
  5. **onOutput**: Tool has completed successfully
471
477
 
478
+ For a client-executed tool, steps 1-3 run while the model streams the tool call, the client runs the tool instead of a server-side `execute`, and `onOutput` runs on the follow-up request that carries a successful result.
479
+
472
480
  ### Hook parameters
473
481
 
474
482
  Hook callbacks receive these source-backed parameter shapes:
@@ -1637,6 +1637,9 @@ const calculatorTool = createTool({
1637
1637
  num2: z.number(),
1638
1638
  operation: z.enum(['add', 'subtract']),
1639
1639
  }),
1640
+ mcp: {
1641
+ _meta: { ui: { resourceUri: 'ui://calculator/main' } },
1642
+ },
1640
1643
  execute: async ({ num1, num2, operation }) => {
1641
1644
  const result = operation === 'add' ? num1 + num2 : num1 - num2
1642
1645
  return {
@@ -1660,7 +1663,7 @@ const server = new MCPServer({
1660
1663
  })
1661
1664
  ```
1662
1665
 
1663
- Link a tool to its app resource by setting `_meta.ui.resourceUri` on the tool to the matching `ui://` URI. The server auto-normalizes this metadata when registering tools. Visit [MCP Apps](https://mastra.ai/docs/mcp/overview) for the full app bridge API and usage patterns.
1666
+ Link a tool to its app resource by setting `mcp._meta.ui.resourceUri` in `createTool()` to the matching `ui://` URI. The server normalizes this metadata for older hosts when listing tools. Visit [MCP Apps](https://mastra.ai/docs/mcp/overview) for the full app bridge API and usage patterns.
1664
1667
 
1665
1668
  ## Related information
1666
1669
 
@@ -356,4 +356,4 @@ Set `WORKSPACE_PATH` in your environment to an absolute path like `/home/user/my
356
356
 
357
357
  - [WorkspaceFilesystem interface](https://mastra.ai/reference/workspace/filesystem)
358
358
  - [Workspace class](https://mastra.ai/reference/workspace/workspace-class)
359
- - [Workspace overview](https://mastra.ai/docs/workspace/overview)
359
+ - [Sandbox](https://mastra.ai/docs/workspace/sandbox)
@@ -223,4 +223,4 @@ This separation prevents sandboxed processes from reading or modifying their own
223
223
  - [SandboxProcessManager reference](https://mastra.ai/reference/workspace/process-manager)
224
224
  - [WorkspaceSandbox Interface](https://mastra.ai/reference/workspace/sandbox)
225
225
  - [Workspace Class](https://mastra.ai/reference/workspace/workspace-class)
226
- - [Workspace Overview](https://mastra.ai/docs/workspace/overview)
226
+ - [Sandbox](https://mastra.ai/docs/workspace/sandbox)
@@ -31,9 +31,9 @@ const workspace = new Workspace({
31
31
 
32
32
  **name** (`string`): Human-readable name (Default: `workspace-{id}`)
33
33
 
34
- **filesystem** (`WorkspaceFilesystem | WorkspaceFilesystemResolver`): Filesystem provider instance, or a resolver function that receives requestContext and returns a filesystem per request. See dynamic filesystem.
34
+ **filesystem** (`WorkspaceFilesystem | WorkspaceFilesystemResolver`): Filesystem provider instance, or a resolver function that receives requestContext and returns a filesystem per request. See multi-tenant filesystems.
35
35
 
36
- **sandbox** (`WorkspaceSandbox | WorkspaceSandboxResolver`): Sandbox provider instance, or a resolver function that receives requestContext and returns a sandbox per request. See dynamic sandbox.
36
+ **sandbox** (`WorkspaceSandbox | WorkspaceSandboxResolver`): Sandbox provider instance, or a resolver function that receives requestContext and returns a sandbox per request. See multi-tenant sandboxes.
37
37
 
38
38
  **instructions.dynamicSandbox** (`'placeholder' | 'resolve' | (({ requestContext }) => string)`): Controls how a resolver-backed sandbox contributes to workspace instructions. 'placeholder' (default) emits stable text without calling the resolver. 'resolve' calls the resolver and uses the sandbox's own instructions. A function returns custom text without resolving. Has no effect on a static sandbox. (Default: `'placeholder'`)
39
39
 
@@ -57,15 +57,9 @@ const workspace = new Workspace({
57
57
 
58
58
  **tools** (`WorkspaceToolsConfig`): Per-tool configuration for enabling tools and setting safety options
59
59
 
60
- **tools.enabled** (`boolean`): Whether the tool is available to agents
60
+ **tools.enabled** (`boolean | ((context: ToolConfigContext) => boolean | Promise<boolean>)`): Default availability for all workspace tools. Per-tool settings take precedence.
61
61
 
62
- **tools.requireApproval** (`boolean`): Whether the tool requires user approval before execution
63
-
64
- **tools.name** (`string`): Custom name to expose this tool as. Replaces the default mastra\_workspace\_\* name. The config key must still use the original WORKSPACE\_TOOLS constant.
65
-
66
- **tools.requireReadBeforeWrite** (`boolean`): For write tools: require reading the file first to prevent overwrites
67
-
68
- **tools.maxOutputTokens** (`number`): Maximum tokens for tool output. Output exceeding this limit is truncated using tiktoken.
62
+ **tools.requireApproval** (`boolean | ((context: ToolConfigWithArgsContext) => boolean | Promise<boolean>)`): Default approval policy for all workspace tools. Per-tool settings take precedence.
69
63
 
70
64
  **tools.writeLockTimeoutMs** (`number`): Maximum time in milliseconds a write tool waits to acquire the per-file write lock before failing. Raise this for slow or cold-starting filesystems (e.g. remote sandboxes).
71
65
 
@@ -73,6 +67,17 @@ const workspace = new Workspace({
73
67
 
74
68
  **operationTimeout** (`number`): Timeout for operations in milliseconds
75
69
 
70
+ For a resolver-backed sandbox, the default `'placeholder'` mode avoids provisioning a sandbox while workspace instructions are built. Set `instructions.dynamicSandbox` to `'resolve'` when the instructions must come from the resolved sandbox:
71
+
72
+ ```typescript
73
+ const workspace = new Workspace({
74
+ sandbox: ({ requestContext }) => resolveSandbox(requestContext),
75
+ instructions: { dynamicSandbox: 'resolve' },
76
+ })
77
+ ```
78
+
79
+ This calls the resolver while building instructions. To describe a request-specific environment without provisioning it, pass a function that returns instruction text from `requestContext` instead.
80
+
76
81
  ## Tool configuration
77
82
 
78
83
  The `tools` option accepts a `WorkspaceToolsConfig` object that controls which workspace tools are enabled and their safety settings.
@@ -97,12 +102,44 @@ const workspace = new Workspace({
97
102
  })
98
103
  ```
99
104
 
100
- The config object has two parts:
105
+ The config object has two types of settings:
106
+
107
+ - **Global settings**: `enabled` and `requireApproval` apply to all workspace tools unless overridden. `hooks` and `writeLockTimeoutMs` are global-only and can't be configured per tool.
108
+ - **Per-tool overrides**: Use `WORKSPACE_TOOLS` constants as keys to configure individual tools
109
+
110
+ Per-tool overrides accept the following options:
111
+
112
+ **enabled** (`boolean | ((context: ToolConfigContext) => boolean | Promise<boolean>)`): Whether the tool is available. Functions are evaluated when Mastra lists tools. (Default: `true`)
113
+
114
+ **requireApproval** (`boolean | ((context: ToolConfigWithArgsContext) => boolean | Promise<boolean>)`): Whether the tool requires approval. Functions are evaluated when the tool executes. (Default: `false`)
115
+
116
+ **name** (`string`): Name exposed to the model instead of the default mastra\_workspace\_\* name.
101
117
 
102
- - **Global defaults** (`enabled`, `requireApproval`): Apply to all tools unless overridden
103
- - **Per-tool overrides** - Use `WORKSPACE_TOOLS` constants as keys to configure individual tools
118
+ **requireReadBeforeWrite** (`boolean | ((context: ToolConfigWithArgsContext) => boolean | Promise<boolean>)`): For write tools, require the agent to read an existing file before changing it. (Default: `false`)
119
+
120
+ **maxOutputTokens** (`number`): Maximum output tokens for tools that support token-based truncation.
121
+
122
+ `ToolConfigContext` contains `{ requestContext, workspace }`. Execution-time policies use `ToolConfigWithArgsContext`, which also contains the tool's `args`.
123
+
124
+ ```typescript
125
+ import { Workspace, WORKSPACE_TOOLS } from '@mastra/core/workspace'
126
+
127
+ const workspace = new Workspace({
128
+ id: 'my-workspace',
129
+ tools: {
130
+ enabled: ({ requestContext }) => requestContext.get('workspace-tools') === true,
131
+ [WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE]: {
132
+ requireApproval: ({ args }) => (args.path as string).startsWith('/protected'),
133
+ requireReadBeforeWrite: true,
134
+ },
135
+ [WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND]: {
136
+ maxOutputTokens: 5000,
137
+ },
138
+ },
139
+ })
140
+ ```
104
141
 
105
- See [workspace overview](https://mastra.ai/docs/workspace/overview) for more examples.
142
+ See [Filesystem tools](https://mastra.ai/docs/workspace/filesystem), [Sandbox tools](https://mastra.ai/docs/workspace/sandbox), [LSP inspection](https://mastra.ai/docs/workspace/lsp), and [Search tools](https://mastra.ai/docs/workspace/search) for capability-specific configuration.
106
143
 
107
144
  ### Tool name remapping
108
145
 
@@ -469,7 +506,7 @@ The `execute_command` tool accepts a `backgroundProcesses` option for lifecycle
469
506
 
470
507
  **backgroundProcesses.abortSignal** (`AbortSignal | null | false`): Abort signal for background processes. undefined (default) uses the agent's signal. null or false disables abort — processes persist after agent shutdown.
471
508
 
472
- See [Background process callbacks](https://mastra.ai/docs/workspace/sandbox) for usage examples.
509
+ See [Background processes](https://mastra.ai/docs/workspace/sandbox) for callback examples.
473
510
 
474
511
  ### Search tools
475
512
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @mastra/mcp-docs-server
2
2
 
3
+ ## 1.2.17-alpha.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`15101bb`](https://github.com/mastra-ai/mastra/commit/15101bb53c0d934f31af6b8813b88191e382a5e5), [`c2c3deb`](https://github.com/mastra-ai/mastra/commit/c2c3debcf670c7082d0a5e553aa99818a864698c), [`33374ba`](https://github.com/mastra-ai/mastra/commit/33374ba359e4fb13eaa918ae925fe167a3c55414), [`c5f964d`](https://github.com/mastra-ai/mastra/commit/c5f964d3f77064e978f8066ec506eed77ba5c63c), [`f8f653f`](https://github.com/mastra-ai/mastra/commit/f8f653f10980d01a73706cc3c8689ca5e40ce808)]:
8
+ - @mastra/core@1.60.0-alpha.1
9
+
10
+ ## 1.2.17-alpha.0
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`587f6ef`](https://github.com/mastra-ai/mastra/commit/587f6efcfc25880b93760a8607d1cd381ec612fe)]:
15
+ - @mastra/core@1.59.1-alpha.0
16
+
3
17
  ## 1.2.16
4
18
 
5
19
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mcp-docs-server",
3
- "version": "1.2.16",
3
+ "version": "1.2.17-alpha.3",
4
4
  "description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,8 +28,8 @@
28
28
  "jsdom": "^26.1.0",
29
29
  "local-pkg": "^1.1.2",
30
30
  "zod": "^4.4.3",
31
- "@mastra/mcp": "^1.16.0",
32
- "@mastra/core": "1.59.0"
31
+ "@mastra/core": "1.60.0-alpha.1",
32
+ "@mastra/mcp": "^1.16.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@hono/node-server": "^2.0.0",
@@ -45,9 +45,9 @@
45
45
  "tsx": "^4.23.1",
46
46
  "typescript": "^6.0.3",
47
47
  "vitest": "4.1.10",
48
- "@internal/lint": "0.0.123",
49
48
  "@internal/types-builder": "0.0.98",
50
- "@mastra/core": "1.59.0"
49
+ "@mastra/core": "1.60.0-alpha.1",
50
+ "@internal/lint": "0.0.123"
51
51
  },
52
52
  "homepage": "https://mastra.ai",
53
53
  "repository": {