@mastra/mcp-docs-server 1.2.14 → 1.2.15-alpha.10

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 (97) hide show
  1. package/.docs/docs/agents/a2a.md +75 -2
  2. package/.docs/docs/agents/processors.md +2 -0
  3. package/.docs/docs/agents/skills.md +15 -1
  4. package/.docs/docs/capabilities/channels/overview.md +19 -0
  5. package/.docs/docs/capabilities/subagents.md +23 -5
  6. package/.docs/docs/connections/overview.md +94 -0
  7. package/.docs/docs/datasets/running-experiments.md +18 -0
  8. package/.docs/docs/evals/overview.md +16 -4
  9. package/.docs/docs/harness/agent-controller.md +6 -0
  10. package/.docs/docs/harness/overview.md +26 -0
  11. package/.docs/docs/index.md +1 -1
  12. package/.docs/docs/mcp/overview.md +10 -0
  13. package/.docs/docs/memory/multi-user-threads.md +1 -1
  14. package/.docs/docs/memory/observational-memory.md +1 -1
  15. package/.docs/docs/memory/semantic-recall.md +2 -1
  16. package/.docs/docs/memory/working-memory.md +1 -0
  17. package/.docs/docs/observability/feedback.md +16 -0
  18. package/.docs/docs/observability/integrations/exporters/mastra-storage.md +1 -0
  19. package/.docs/docs/server/auth.md +2 -0
  20. package/.docs/docs/server/mastra-client.md +11 -11
  21. package/.docs/docs/storage/overview.md +1 -0
  22. package/.docs/docs/workflows/agents-and-tools.md +2 -2
  23. package/.docs/docs/workflows/{stored-workflows.md → dynamic-workflows.md} +23 -23
  24. package/.docs/docs/workflows/snapshots.md +3 -1
  25. package/.docs/guides/build-your-ui/ai-sdk-ui.md +25 -14
  26. package/.docs/guides/getting-started/quickstart.md +1 -1
  27. package/.docs/guides/rag/overview.md +1 -1
  28. package/.docs/guides/rag/retrieval.md +17 -0
  29. package/.docs/guides/rag/vector-databases.md +41 -0
  30. package/.docs/guides/voice/realtime-voice.md +28 -2
  31. package/.docs/models/gateways/neon.md +20 -14
  32. package/.docs/models/gateways/netlify.md +1 -2
  33. package/.docs/models/gateways/openrouter.md +4 -2
  34. package/.docs/models/gateways/vercel.md +10 -3
  35. package/.docs/models/index.md +1 -1
  36. package/.docs/models/providers/anthropic.md +2 -2
  37. package/.docs/models/providers/cortecs.md +2 -1
  38. package/.docs/models/providers/deepinfra.md +6 -3
  39. package/.docs/models/providers/digitalocean.md +6 -5
  40. package/.docs/models/providers/empiriolabs.md +6 -4
  41. package/.docs/models/providers/friendli.md +8 -9
  42. package/.docs/models/providers/huggingface.md +4 -1
  43. package/.docs/models/providers/hyper.md +5 -6
  44. package/.docs/models/providers/kilo.md +11 -9
  45. package/.docs/models/providers/llmgateway.md +3 -3
  46. package/.docs/models/providers/meta.md +7 -5
  47. package/.docs/models/providers/minimax.md +25 -23
  48. package/.docs/models/providers/nano-gpt.md +7 -4
  49. package/.docs/models/providers/neuralwatt.md +2 -1
  50. package/.docs/models/providers/ofox.md +74 -16
  51. package/.docs/models/providers/openai.md +28 -26
  52. package/.docs/models/providers/opencode-go.md +1 -1
  53. package/.docs/models/providers/opencode.md +2 -3
  54. package/.docs/models/providers/perplexity-agent.md +24 -24
  55. package/.docs/models/providers/pioneer.md +27 -1
  56. package/.docs/models/providers/regolo-ai.md +25 -20
  57. package/.docs/models/providers/upstage.md +3 -2
  58. package/.docs/models/providers/vivgrid.md +4 -2
  59. package/.docs/models/providers/wandb.md +1 -1
  60. package/.docs/reference/agents/channels.md +22 -1
  61. package/.docs/reference/agents/generate.md +1 -1
  62. package/.docs/reference/ai-sdk/chat-route.md +2 -0
  63. package/.docs/reference/browser/agent-browser.md +1 -1
  64. package/.docs/reference/browser/mastra-browser.md +1 -1
  65. package/.docs/reference/browser/stagehand-browser.md +1 -1
  66. package/.docs/reference/channels/slack-provider.md +2 -0
  67. package/.docs/reference/client-js/observability.md +22 -0
  68. package/.docs/reference/client-js/workflows.md +32 -19
  69. package/.docs/reference/configuration.md +26 -1
  70. package/.docs/reference/core/{addStoredWorkflow.md → addDynamicWorkflow.md} +10 -10
  71. package/.docs/reference/core/{addStoredWorkflows.md → addDynamicWorkflows.md} +9 -9
  72. package/.docs/reference/editor/tool-provider.md +26 -1
  73. package/.docs/reference/file-based-agents/config.md +22 -21
  74. package/.docs/reference/file-based-agents/instructions.md +42 -17
  75. package/.docs/reference/file-based-agents/schedules.md +232 -0
  76. package/.docs/reference/index.md +7 -3
  77. package/.docs/reference/observability/metrics/automatic-metrics.md +10 -8
  78. package/.docs/reference/rag/metadata-filters.md +13 -4
  79. package/.docs/reference/server/register-api-route.md +2 -0
  80. package/.docs/reference/server/routes.md +38 -24
  81. package/.docs/reference/storage/composite.md +58 -0
  82. package/.docs/reference/storage/oracledb.md +239 -0
  83. package/.docs/reference/storage/overview.md +9 -9
  84. package/.docs/reference/storage/retention.md +1 -1
  85. package/.docs/reference/streaming/agents/stream.md +1 -1
  86. package/.docs/reference/tools/bedrock-kb-tool.md +117 -0
  87. package/.docs/reference/tools/mcp-client.md +54 -0
  88. package/.docs/reference/vectors/oracledb.md +347 -0
  89. package/.docs/reference/voice/google.md +19 -3
  90. package/.docs/reference/workflows/{stored-workflow-definition.md → dynamic-workflow-definition.md} +7 -7
  91. package/.docs/reference/workflows/step.md +40 -0
  92. package/.docs/reference/workflows/workflow-methods/agent.md +3 -3
  93. package/.docs/reference/workflows/workflow-methods/tool.md +3 -3
  94. package/.docs/reference/workspace/daytona-sandbox.md +21 -0
  95. package/.docs/reference/workspace/workspace-class.md +2 -0
  96. package/CHANGELOG.md +51 -0
  97. package/package.json +6 -6
@@ -11,22 +11,22 @@ OPENAI_API_KEY=your-api-key
11
11
  ```
12
12
 
13
13
  ```typescript
14
- import { Agent } from '@mastra/core/agent'
14
+ import { Agent } from "@mastra/core/agent";
15
15
 
16
16
  const agent = new Agent({
17
- id: 'my-agent',
18
- name: 'My Agent',
19
- instructions: 'You are a helpful assistant',
20
- model: 'openai/chatgpt-image-latest',
21
- })
17
+ id: "my-agent",
18
+ name: "My Agent",
19
+ instructions: "You are a helpful assistant",
20
+ model: "openai/chatgpt-image-latest"
21
+ });
22
22
 
23
23
  // Generate a response
24
- const response = await agent.generate('Hello!')
24
+ const response = await agent.generate("Hello!");
25
25
 
26
26
  // Stream a response
27
- const stream = await agent.stream('Tell me a story')
27
+ const stream = await agent.stream("Tell me a story");
28
28
  for await (const chunk of stream) {
29
- console.log(chunk)
29
+ console.log(chunk);
30
30
  }
31
31
  ```
32
32
 
@@ -78,29 +78,31 @@ for await (const chunk of stream) {
78
78
 
79
79
  ```typescript
80
80
  const agent = new Agent({
81
- id: 'custom-agent',
82
- name: 'custom-agent',
81
+ id: "custom-agent",
82
+ name: "custom-agent",
83
83
  model: {
84
- id: 'openai/chatgpt-image-latest',
84
+ id: "openai/chatgpt-image-latest",
85
85
  apiKey: process.env.OPENAI_API_KEY,
86
86
  headers: {
87
- 'X-Custom-Header': 'value',
88
- },
89
- },
90
- })
87
+ "X-Custom-Header": "value"
88
+ }
89
+ }
90
+ });
91
91
  ```
92
92
 
93
93
  ### Dynamic model selection
94
94
 
95
95
  ```typescript
96
96
  const agent = new Agent({
97
- id: 'dynamic-agent',
98
- name: 'Dynamic Agent',
97
+ id: "dynamic-agent",
98
+ name: "Dynamic Agent",
99
99
  model: ({ requestContext }) => {
100
- const useAdvanced = requestContext.task === 'complex'
101
- return useAdvanced ? 'openai/text-embedding-ada-002' : 'openai/chatgpt-image-latest'
102
- },
103
- })
100
+ const useAdvanced = requestContext.task === "complex";
101
+ return useAdvanced
102
+ ? "openai/text-embedding-ada-002"
103
+ : "openai/chatgpt-image-latest";
104
+ }
105
+ });
104
106
  ```
105
107
 
106
108
  ## Provider Options
@@ -108,13 +110,13 @@ const agent = new Agent({
108
110
  OpenAI supports the following provider-specific options via the `providerOptions` parameter:
109
111
 
110
112
  ```typescript
111
- const response = await agent.generate('Hello!', {
113
+ const response = await agent.generate("Hello!", {
112
114
  providerOptions: {
113
115
  openai: {
114
116
  // See available options in the table below
115
- },
116
- },
117
- })
117
+ }
118
+ }
119
+ });
118
120
  ```
119
121
 
120
122
  ### Available Options
@@ -36,7 +36,7 @@ for await (const chunk of stream) {
36
36
 
37
37
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
38
38
  | ------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
39
- | `opencode-go/deepseek-v4-flash` | 1.0M | | | | | | $0.14 | $0.28 |
39
+ | `opencode-go/deepseek-v4-flash` | 1.0M | | | | | | $0.07 | $0.14 |
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 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![OpenCode Zen logo](https://models.dev/logos/opencode.svg)OpenCode Zen
4
4
 
5
- Access 86 OpenCode Zen models through Mastra's model router. Authentication is handled automatically using the `OPENCODE_API_KEY` environment variable.
5
+ Access 87 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
 
@@ -39,7 +39,6 @@ for await (const chunk of stream) {
39
39
  | `opencode/big-pickle` | 200K | | | | | | — | — |
40
40
  | `opencode/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
41
41
  | `opencode/claude-haiku-4-5` | 200K | | | | | | $1 | $5 |
42
- | `opencode/claude-opus-4-1` | 200K | | | | | | $15 | $75 |
43
42
  | `opencode/claude-opus-4-5` | 200K | | | | | | $5 | $25 |
44
43
  | `opencode/claude-opus-4-6` | 1.0M | | | | | | $5 | $25 |
45
44
  | `opencode/claude-opus-4-7` | 1.0M | | | | | | $5 | $25 |
@@ -87,7 +86,7 @@ for await (const chunk of stream) {
87
86
  | `opencode/kimi-k2.7-code` | 262K | | | | | | $0.95 | $4 |
88
87
  | `opencode/kimi-k3` | 1.0M | | | | | | $3 | $15 |
89
88
  | `opencode/laguna-s-2.1-free` | 256K | | | | | | — | — |
90
- | `opencode/ling-3.0-flash-free` | 262K | | | | | | — | — |
89
+ | `opencode/ling-3.0-tiny-free` | 262K | | | | | | — | — |
91
90
  | `opencode/longcat-2.0-free` | 1.0M | | | | | | — | — |
92
91
  | `opencode/mimo-v2.5-free` | 200K | | | | | | — | — |
93
92
  | `opencode/minimax-m2.5` | 205K | | | | | | $0.30 | $1 |
@@ -11,22 +11,22 @@ PERPLEXITY_API_KEY=your-api-key
11
11
  ```
12
12
 
13
13
  ```typescript
14
- import { Agent } from '@mastra/core/agent'
14
+ import { Agent } from "@mastra/core/agent";
15
15
 
16
16
  const agent = new Agent({
17
- id: 'my-agent',
18
- name: 'My Agent',
19
- instructions: 'You are a helpful assistant',
20
- model: 'perplexity-agent/anthropic/claude-haiku-4-5',
21
- })
17
+ id: "my-agent",
18
+ name: "My Agent",
19
+ instructions: "You are a helpful assistant",
20
+ model: "perplexity-agent/anthropic/claude-haiku-4-5"
21
+ });
22
22
 
23
23
  // Generate a response
24
- const response = await agent.generate('Hello!')
24
+ const response = await agent.generate("Hello!");
25
25
 
26
26
  // Stream a response
27
- const stream = await agent.stream('Tell me a story')
27
+ const stream = await agent.stream("Tell me a story");
28
28
  for await (const chunk of stream) {
29
- console.log(chunk)
29
+ console.log(chunk);
30
30
  }
31
31
  ```
32
32
 
@@ -63,32 +63,32 @@ for await (const chunk of stream) {
63
63
 
64
64
  ```typescript
65
65
  const agent = new Agent({
66
- id: 'custom-agent',
67
- name: 'custom-agent',
66
+ id: "custom-agent",
67
+ name: "custom-agent",
68
68
  model: {
69
- url: 'https://api.perplexity.ai/v1',
70
- id: 'perplexity-agent/anthropic/claude-haiku-4-5',
69
+ url: "https://api.perplexity.ai/v1",
70
+ id: "perplexity-agent/anthropic/claude-haiku-4-5",
71
71
  apiKey: process.env.PERPLEXITY_API_KEY,
72
72
  headers: {
73
- 'X-Custom-Header': 'value',
74
- },
75
- },
76
- })
73
+ "X-Custom-Header": "value"
74
+ }
75
+ }
76
+ });
77
77
  ```
78
78
 
79
79
  ### Dynamic model selection
80
80
 
81
81
  ```typescript
82
82
  const agent = new Agent({
83
- id: 'dynamic-agent',
84
- name: 'Dynamic Agent',
83
+ id: "dynamic-agent",
84
+ name: "Dynamic Agent",
85
85
  model: ({ requestContext }) => {
86
- const useAdvanced = requestContext.task === 'complex'
86
+ const useAdvanced = requestContext.task === "complex";
87
87
  return useAdvanced
88
- ? 'perplexity-agent/xai/grok-4-1-fast-non-reasoning'
89
- : 'perplexity-agent/anthropic/claude-haiku-4-5'
90
- },
91
- })
88
+ ? "perplexity-agent/xai/grok-4-1-fast-non-reasoning"
89
+ : "perplexity-agent/anthropic/claude-haiku-4-5";
90
+ }
91
+ });
92
92
  ```
93
93
 
94
94
  ## Direct provider installation
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Pioneer logo](https://models.dev/logos/pioneer.svg)Pioneer
4
4
 
5
- Access 76 Pioneer models through Mastra's model router. Authentication is handled automatically using the `PIONEER_API_KEY` environment variable.
5
+ Access 102 Pioneer models through Mastra's model router. Authentication is handled automatically using the `PIONEER_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Pioneer documentation](https://agent.pioneer.ai/llms.txt).
8
8
 
@@ -36,16 +36,23 @@ for await (const chunk of stream) {
36
36
 
37
37
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
38
38
  | ------------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
39
+ | `pioneer/claude-3-7-sonnet-latest` | 1.0M | | | | | | $3 | $15 |
40
+ | `pioneer/claude-fable-5` | 1.0M | | | | | | $11 | $55 |
39
41
  | `pioneer/claude-haiku-4-5` | 200K | | | | | | $1 | $5 |
40
42
  | `pioneer/claude-opus-4-1` | 200K | | | | | | $15 | $75 |
41
43
  | `pioneer/claude-opus-4-5` | 200K | | | | | | $5 | $25 |
42
44
  | `pioneer/claude-opus-4-6` | 1.0M | | | | | | $5 | $25 |
43
45
  | `pioneer/claude-opus-4-7` | 1.0M | | | | | | $5 | $25 |
44
46
  | `pioneer/claude-opus-4-8` | 1.0M | | | | | | $5 | $25 |
47
+ | `pioneer/claude-opus-5` | 1.0M | | | | | | $5 | $25 |
45
48
  | `pioneer/claude-sonnet-4-5` | 1.0M | | | | | | $3 | $15 |
46
49
  | `pioneer/claude-sonnet-4-6` | 1.0M | | | | | | $3 | $15 |
50
+ | `pioneer/claude-sonnet-5` | 1.0M | | | | | | $2 | $10 |
51
+ | `pioneer/deepseek-ai/DeepSeek-V3` | 164K | | | | | | $0.27 | $1 |
52
+ | `pioneer/deepseek-ai/DeepSeek-V3.1` | 164K | | | | | | $0.56 | $2 |
47
53
  | `pioneer/deepseek-ai/DeepSeek-V4-Flash` | 1.0M | | | | | | $0.10 | $0.20 |
48
54
  | `pioneer/deepseek-ai/DeepSeek-V4-Pro` | 1.0M | | | | | | $0.43 | $0.87 |
55
+ | `pioneer/devstral-2` | 256K | | | | | | $0.40 | $2 |
49
56
  | `pioneer/fastino/gliguard-LLMGuardrails-300M` | 8K | | | | | | $0.15 | $0.15 |
50
57
  | `pioneer/fastino/gliner2-base-v1` | 8K | | | | | | $0.15 | $0.15 |
51
58
  | `pioneer/fastino/gliner2-large-v1` | 8K | | | | | | $0.15 | $0.15 |
@@ -53,8 +60,11 @@ for await (const chunk of stream) {
53
60
  | `pioneer/fastino/gliner2-multi-v1` | 8K | | | | | | $0.15 | $0.15 |
54
61
  | `pioneer/fastino/gliner2-privacy-filter-PII-multi` | 8K | | | | | | $0.15 | $0.15 |
55
62
  | `pioneer/gemini-3-flash` | 1.0M | | | | | | $0.50 | $3 |
63
+ | `pioneer/gemini-3.1-flash-lite` | 1.0M | | | | | | $0.25 | $2 |
56
64
  | `pioneer/gemini-3.1-pro` | 1.0M | | | | | | $2 | $12 |
57
65
  | `pioneer/gemini-3.5-flash` | 1.0M | | | | | | $2 | $9 |
66
+ | `pioneer/gemini-3.5-flash-lite` | 1.0M | | | | | | $0.30 | $3 |
67
+ | `pioneer/gemini-3.6-flash` | 1.0M | | | | | | $2 | $8 |
58
68
  | `pioneer/google/diffusiongemma-26B-A4B-it` | 262K | | | | | | $0.50 | $0.50 |
59
69
  | `pioneer/google/gemma-3-4b-pt` | 33K | | | | | | $0.15 | $0.15 |
60
70
  | `pioneer/google/gemma-4-12B-it` | 33K | | | | | | $0.25 | $0.25 |
@@ -74,27 +84,43 @@ for await (const chunk of stream) {
74
84
  | `pioneer/gpt-5.4-mini` | 400K | | | | | | $0.75 | $5 |
75
85
  | `pioneer/gpt-5.4-nano` | 1.0M | | | | | | $0.20 | $1 |
76
86
  | `pioneer/gpt-5.5` | 1.1M | | | | | | $5 | $30 |
87
+ | `pioneer/gpt-5.6-luna` | 1.1M | | | | | | $1 | $6 |
88
+ | `pioneer/gpt-5.6-sol` | 1.1M | | | | | | $5 | $30 |
89
+ | `pioneer/gpt-5.6-terra` | 1.1M | | | | | | $3 | $15 |
90
+ | `pioneer/grok-4.5` | 500K | | | | | | $2 | $6 |
77
91
  | `pioneer/HuggingFaceTB/SmolLM3-3B-Base` | 33K | | | | | | $0.15 | $0.15 |
78
92
  | `pioneer/LiquidAI/LFM2-24B-A2B` | 33K | | | | | | $0.03 | $0.12 |
79
93
  | `pioneer/meta-llama/Llama-3.1-8B-Instruct` | 131K | | | | | | $0.20 | $0.20 |
94
+ | `pioneer/meta-llama/Llama-3.2-1B` | 131K | | | | | | $0.10 | $0.10 |
80
95
  | `pioneer/meta-llama/Llama-3.2-1B-Instruct` | 131K | | | | | | $0.10 | $0.20 |
96
+ | `pioneer/meta-llama/Llama-3.2-3B` | 131K | | | | | | $0.10 | $0.10 |
81
97
  | `pioneer/meta-llama/Llama-3.2-3B-Instruct` | 131K | | | | | | $0.10 | $0.34 |
82
98
  | `pioneer/meta-llama/Llama-3.3-70B-Instruct` | 131K | | | | | | $0.90 | $0.90 |
99
+ | `pioneer/meta/muse-spark-1.1` | 1.0M | | | | | | $1 | $4 |
83
100
  | `pioneer/MiniMaxAI/MiniMax-M2.7` | 205K | | | | | | $0.28 | $1 |
84
101
  | `pioneer/MiniMaxAI/MiniMax-M3` | 1.0M | | | | | | $0.30 | $1 |
102
+ | `pioneer/mistral-large-3` | 256K | | | | | | $0.50 | $2 |
85
103
  | `pioneer/mistral-medium-3.5` | 262K | | | | | | $2 | $8 |
104
+ | `pioneer/mistralai/Codestral-22B-v0.1` | 128K | | | | | | $0.30 | $0.90 |
105
+ | `pioneer/mistralai/Magistral-Small-2506` | 128K | | | | | | $0.50 | $2 |
106
+ | `pioneer/mistralai/Ministral-8B-Instruct-2410` | 128K | | | | | | $0.15 | $0.15 |
86
107
  | `pioneer/mistralai/Mistral-7B-Instruct-v0.3` | 33K | | | | | | $0.20 | $0.20 |
87
108
  | `pioneer/mistralai/Mistral-Nemo-Instruct-2407` | 131K | | | | | | $0.02 | $0.03 |
88
109
  | `pioneer/mistralai/Mistral-Small-4-119B-2603` | 262K | | | | | | $0.15 | $0.60 |
110
+ | `pioneer/mistralai/Pixtral-12B-2409` | 128K | | | | | | $0.15 | $0.15 |
89
111
  | `pioneer/moonshotai/Kimi-K2.6` | 262K | | | | | | $0.95 | $4 |
90
112
  | `pioneer/moonshotai/Kimi-K2.7-Code` | 262K | | | | | | $0.95 | $4 |
113
+ | `pioneer/moonshotai/Kimi-K3` | 1.0M | | | | | | $3 | $15 |
91
114
  | `pioneer/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16` | 262K | | | | | | $0.05 | $0.20 |
92
115
  | `pioneer/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8` | 1.0M | | | | | | $0.09 | $0.45 |
93
116
  | `pioneer/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16` | 1.0M | | | | | | $0.50 | $3 |
94
117
  | `pioneer/openai/gpt-oss-120b` | 131K | | | | | | $0.15 | $0.60 |
95
118
  | `pioneer/openai/gpt-oss-20b` | 131K | | | | | | $0.07 | $0.30 |
96
119
  | `pioneer/pioneer/auto` | 1.0M | | | | | | — | — |
120
+ | `pioneer/poolside/laguna-s-2.1` | 1.0M | | | | | | $0.10 | $0.20 |
121
+ | `pioneer/Qwen/Qwen2.5-Coder-0.5B` | 33K | | | | | | $0.10 | $0.10 |
97
122
  | `pioneer/Qwen/Qwen3-1.7B-Base` | 33K | | | | | | $0.10 | $0.10 |
123
+ | `pioneer/Qwen/Qwen3-235B-A22B-Instruct-2507` | 262K | | | | | | $1 | $1 |
98
124
  | `pioneer/Qwen/Qwen3-32B` | 131K | | | | | | $0.90 | $0.90 |
99
125
  | `pioneer/Qwen/Qwen3-4B-Base` | 33K | | | | | | $0.15 | $0.15 |
100
126
  | `pioneer/Qwen/Qwen3-4B-Instruct-2507` | 262K | | | | | | $0.20 | $0.20 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Regolo AI logo](https://models.dev/logos/regolo-ai.svg)Regolo AI
4
4
 
5
- Access 13 Regolo AI models through Mastra's model router. Authentication is handled automatically using the `REGOLO_API_KEY` environment variable.
5
+ Access 18 Regolo AI models through Mastra's model router. Authentication is handled automatically using the `REGOLO_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Regolo AI documentation](https://docs.regolo.ai/).
8
8
 
@@ -17,7 +17,7 @@ const agent = new Agent({
17
17
  id: "my-agent",
18
18
  name: "My Agent",
19
19
  instructions: "You are a helpful assistant",
20
- model: "regolo-ai/gpt-oss-120b"
20
+ model: "regolo-ai/apertus-70b"
21
21
  });
22
22
 
23
23
  // Generate a response
@@ -34,21 +34,26 @@ for await (const chunk of stream) {
34
34
 
35
35
  ## Models
36
36
 
37
- | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
38
- | ---------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
39
- | `regolo-ai/gpt-oss-120b` | 128K | | | | | | $1 | $4 |
40
- | `regolo-ai/gpt-oss-20b` | 128K | | | | | | $0.40 | $2 |
41
- | `regolo-ai/llama-3.1-8b-instruct` | 120K | | | | | | $0.05 | $0.25 |
42
- | `regolo-ai/llama-3.3-70b-instruct` | 128K | | | | | | $0.60 | $3 |
43
- | `regolo-ai/minimax-m2.5` | 190K | | | | | | $0.80 | $4 |
44
- | `regolo-ai/mistral-small-4-119b` | 256K | | | | | | $0.75 | $3 |
45
- | `regolo-ai/mistral-small3.2` | 120K | | | | | | $0.50 | $2 |
46
- | `regolo-ai/qwen-image` | 8K | | | | | | $0.50 | $2 |
47
- | `regolo-ai/qwen3-coder-next` | 262K | | | | | | $0.30 | $1 |
48
- | `regolo-ai/qwen3-embedding-8b` | 33K | | | | | | $0.10 | $0.10 |
49
- | `regolo-ai/qwen3-reranker-4b` | 33K | | | | | | $0.12 | $0.12 |
50
- | `regolo-ai/qwen3.5-122b` | 262K | | | | | | $0.90 | $4 |
51
- | `regolo-ai/qwen3.5-9b` | 262K | | | | | | $0.15 | $0.60 |
37
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
38
+ | ----------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
39
+ | `regolo-ai/apertus-70b` | 30K | | | | | | $0.46 | $2 |
40
+ | `regolo-ai/brick-complexity-pro` | 100K | | | | | | $0.12 | $0.46 |
41
+ | `regolo-ai/brick-v1-beta` | 100K | | | | | | | |
42
+ | `regolo-ai/deepseek-ocr-2` | 4K | | | | | | | |
43
+ | `regolo-ai/faster-whisper-large-v3` | 448 | | | | | | | |
44
+ | `regolo-ai/gemma4-31b` | 100K | | | | | | $0.46 | $2 |
45
+ | `regolo-ai/glm5.2` | 96K | | | | | | $2 | $6 |
46
+ | `regolo-ai/gpt-oss-120b` | 128K | | | | | | $1 | $4 |
47
+ | `regolo-ai/gpt-oss-20b` | 128K | | | | | | $0.40 | $2 |
48
+ | `regolo-ai/llama-3.3-70b-instruct` | 128K | | | | | | $0.60 | $3 |
49
+ | `regolo-ai/mistral-small-4-119b` | 256K | | | | | | $0.75 | $3 |
50
+ | `regolo-ai/qwen-image` | 8K | | | | | | $0.50 | $2 |
51
+ | `regolo-ai/qwen3-coder-next` | 262K | | | | | | $0.30 | $1 |
52
+ | `regolo-ai/qwen3-embedding-8b` | 33K | | | | | | $0.10 | $0.10 |
53
+ | `regolo-ai/qwen3-reranker-4b` | 33K | | | | | | $0.12 | $0.12 |
54
+ | `regolo-ai/qwen3.5-122b` | 262K | | | | | | $0.90 | $4 |
55
+ | `regolo-ai/qwen3.5-9b` | 262K | | | | | | $0.15 | $0.60 |
56
+ | `regolo-ai/qwen3.6-27b` | 120K | | | | | | $0.58 | $2 |
52
57
 
53
58
  ## Advanced configuration
54
59
 
@@ -60,7 +65,7 @@ const agent = new Agent({
60
65
  name: "custom-agent",
61
66
  model: {
62
67
  url: "https://api.regolo.ai/v1",
63
- id: "regolo-ai/gpt-oss-120b",
68
+ id: "regolo-ai/apertus-70b",
64
69
  apiKey: process.env.REGOLO_API_KEY,
65
70
  headers: {
66
71
  "X-Custom-Header": "value"
@@ -78,8 +83,8 @@ const agent = new Agent({
78
83
  model: ({ requestContext }) => {
79
84
  const useAdvanced = requestContext.task === "complex";
80
85
  return useAdvanced
81
- ? "regolo-ai/qwen3.5-9b"
82
- : "regolo-ai/gpt-oss-120b";
86
+ ? "regolo-ai/qwen3.6-27b"
87
+ : "regolo-ai/apertus-70b";
83
88
  }
84
89
  });
85
90
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Upstage logo](https://models.dev/logos/upstage.svg)Upstage
4
4
 
5
- Access 3 Upstage models through Mastra's model router. Authentication is handled automatically using the `UPSTAGE_API_KEY` environment variable.
5
+ Access 4 Upstage models through Mastra's model router. Authentication is handled automatically using the `UPSTAGE_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Upstage documentation](https://developers.upstage.ai).
8
8
 
@@ -39,6 +39,7 @@ for await (const chunk of stream) {
39
39
  | `upstage/solar-mini` | 33K | | | | | | $0.15 | $0.15 |
40
40
  | `upstage/solar-pro2` | 66K | | | | | | $0.25 | $0.25 |
41
41
  | `upstage/solar-pro3` | 131K | | | | | | $0.25 | $0.25 |
42
+ | `upstage/solar-pro4` | 524K | | | | | | $0.30 | $1 |
42
43
 
43
44
  ## Advanced configuration
44
45
 
@@ -68,7 +69,7 @@ const agent = new Agent({
68
69
  model: ({ requestContext }) => {
69
70
  const useAdvanced = requestContext.task === "complex";
70
71
  return useAdvanced
71
- ? "upstage/solar-pro3"
72
+ ? "upstage/solar-pro4"
72
73
  : "upstage/solar-mini";
73
74
  }
74
75
  });
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Vivgrid logo](https://models.dev/logos/vivgrid.svg)Vivgrid
4
4
 
5
- Access 17 Vivgrid models through Mastra's model router. Authentication is handled automatically using the `VIVGRID_API_KEY` environment variable.
5
+ Access 19 Vivgrid models through Mastra's model router. Authentication is handled automatically using the `VIVGRID_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Vivgrid documentation](https://docs.vivgrid.com/models).
8
8
 
@@ -37,6 +37,7 @@ for await (const chunk of stream) {
37
37
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
38
38
  | --------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
39
39
  | `vivgrid/deepseek-v3.2` | 128K | | | | | | $0.28 | $0.42 |
40
+ | `vivgrid/deepseek-v4-flash` | 1.0M | | | | | | $0.15 | $0.30 |
40
41
  | `vivgrid/deepseek-v4-pro` | 1.0M | | | | | | $0.43 | $0.87 |
41
42
  | `vivgrid/gemini-3.1-flash-lite-preview` | 1.0M | | | | | | $0.25 | $2 |
42
43
  | `vivgrid/gemini-3.1-pro-preview` | 1.0M | | | | | | $2 | $12 |
@@ -53,6 +54,7 @@ for await (const chunk of stream) {
53
54
  | `vivgrid/gpt-5.6-luna` | 1.1M | | | | | | $1 | $6 |
54
55
  | `vivgrid/gpt-5.6-sol` | 1.1M | | | | | | $5 | $30 |
55
56
  | `vivgrid/gpt-5.6-terra` | 1.1M | | | | | | $3 | $15 |
57
+ | `vivgrid/kimi-k3` | 1.0M | | | | | | $3 | $15 |
56
58
 
57
59
  ## Advanced configuration
58
60
 
@@ -82,7 +84,7 @@ const agent = new Agent({
82
84
  model: ({ requestContext }) => {
83
85
  const useAdvanced = requestContext.task === "complex";
84
86
  return useAdvanced
85
- ? "vivgrid/gpt-5.6-terra"
87
+ ? "vivgrid/kimi-k3"
86
88
  : "vivgrid/deepseek-v3.2";
87
89
  }
88
90
  });
@@ -39,7 +39,7 @@ for await (const chunk of stream) {
39
39
  | `wandb/deepseek-ai/DeepSeek-V3.1` | 161K | | | | | | $0.55 | $2 |
40
40
  | `wandb/deepseek-ai/DeepSeek-V4-Flash` | 1.0M | | | | | | $0.14 | $0.28 |
41
41
  | `wandb/deepseek-ai/DeepSeek-V4-Flash-0731` | 262K | | | | | | $0.13 | $0.28 |
42
- | `wandb/deepseek-ai/DeepSeek-V4-Pro` | 1.0M | | | | | | $2 | $3 |
42
+ | `wandb/deepseek-ai/DeepSeek-V4-Pro` | 1.0M | | | | | | $1 | $3 |
43
43
  | `wandb/google/gemma-4-31B-it` | 262K | | | | | | $0.10 | $0.34 |
44
44
  | `wandb/ibm-granite/granite-4.1-8b` | 131K | | | | | | $0.05 | $0.10 |
45
45
  | `wandb/JetBrains/Mellum2-12B-A2.5B-Instruct` | 131K | | | | | | $0.05 | $0.10 |
@@ -102,7 +102,9 @@ const agent = new Agent({
102
102
 
103
103
  **streaming** (`boolean | { updateIntervalMs?: number }`): Stream agent text deltas to the channel as the agent generates them instead of buffering and posting once per step. Requires the underlying adapter to support post-and-edit streaming. Slack defaults to true; other adapters default to false. (Default: `false (true for Slack)`)
104
104
 
105
- **toolDisplay** (`'cards' | 'text' | 'timeline' | 'grouped' | 'hidden' | ToolDisplayFn`): How tool calls are rendered in the channel. "cards" posts per-tool running/result cards as rich Block Kit. "text" posts the same lifecycle as plain text (no Block Kit). "timeline" and "grouped" stream tool state as inline task\_update chunks (requires streaming: true; Slack only today other adapters may render a placeholder). "hidden" executes tools silently. Pass a function to render tool events yourself; return { kind: "post", message } for a discrete post/edit, { kind: "stream", chunk } to push into the active streaming widget, or undefined to skip rendering that event. Approve/deny prompts always render as a separate card regardless of mode. (Default: `'cards' ('grouped' for Slack)`)
105
+ **textFormat** (`'markdown' | 'plain'`): Dialect for the agent's final reply text. 'markdown' (the default) posts replies as markdown: adapters with native markdown rendering (Slack) render it directly, others convert it to their platform format. 'plain' posts replies as literal plain text, restoring the pre-markdown behavior for agents prompted to emit a platform dialect such as Slack mrkdwn. Applies to final reply text only; tool cards, error messages, and tripwire notices are unaffected. Native streaming is always markdown regardless of this setting. (Default: `'markdown'`)
106
+
107
+ **toolDisplay** (`'cards' | 'text' | 'timeline' | 'grouped' | 'hidden' | ToolDisplayFn`): How tool calls are rendered in the channel. "cards" posts per-tool running/result cards as rich Block Kit. "text" posts the same lifecycle as plain text (no Block Kit). "timeline" and "grouped" stream tool state as inline task\_update chunks (requires streaming: true; Slack only today — other adapters may render a placeholder). "hidden" executes tools silently. Pass a function to render tool events yourself; return { kind: "post", message } for a discrete post/edit, { kind: "stream", chunk } to push into the streaming widget, or undefined to skip rendering that event. Add openIfEmpty: false to a stream result when its chunk should only apply to an active streaming session. Approve/deny prompts always render as a separate card regardless of mode. (Default: `'cards' ('grouped' for Slack)`)
106
108
 
107
109
  **typingStatus** (`boolean | ((chunk: AgentChunkType, ctx: TypingStatusContext) => string | false | null | undefined | void)`): Control the platform typing indicator. true uses built-in defaults (is typing… on text, is calling {tool}… on tool-call, is waiting for approval… on tool-call-approval). false suppresses typing entirely — useful when a live streaming widget (e.g. toolDisplay: "grouped" in Slack) already conveys progress. Pass a function to set custom status copy per chunk; return a string to set the status, or false/null/undefined to leave it unchanged. Compose with defaultTypingStatus (exported from @mastra/core/channels) to fall back to defaults for chunks you don't handle. (Default: `true`)
108
110
 
@@ -116,6 +118,25 @@ const agent = new Agent({
116
118
 
117
119
  Pass a function to `toolDisplay` for fully custom rendering. The function receives a `ToolDisplayEvent` (`running` / `result` / `error` / `approval`) and a `ToolDisplayContext` (`{ mode, platform }`); return `{ kind: 'post', message }` for a discrete post/edit, `{ kind: 'stream', chunk }` to push into the active streaming widget, or `undefined` to skip rendering that event.
118
120
 
121
+ By default, a stream result opens a streaming session when none is active. Set `openIfEmpty: false` when the chunk only applies to an existing session. Mastra skips the chunk when no session is active. Static channels ignore this option and keep their existing plain-text fallback behavior.
122
+
123
+ ```typescript
124
+ toolDisplay: event => {
125
+ if (event.kind !== 'running') return undefined
126
+
127
+ return {
128
+ kind: 'stream',
129
+ chunk: {
130
+ type: 'task_update',
131
+ id: event.toolCallId,
132
+ title: event.displayName,
133
+ status: 'in_progress',
134
+ },
135
+ openIfEmpty: false,
136
+ }
137
+ }
138
+ ```
139
+
119
140
  Approve/deny prompts (`requireApproval`) always render as a separate card regardless of mode, because inline task entries can't carry interactive buttons.
120
141
 
121
142
  ```typescript
@@ -56,7 +56,7 @@ const result = await agent.generate('message for agent')
56
56
 
57
57
  **options.delegation** (`DelegationConfig`): Configuration for subagent delegation. Use this to control and monitor when the agent delegates tasks to other agents, including the ability to modify, reject delegations, and provide feedback to guide the supervisor.
58
58
 
59
- **options.delegation.onDelegationStart** (`(context: DelegationStartContext) => DelegationStartResult | void | Promise<DelegationStartResult | void>`): Called before delegating to a subagent. Use this to modify the delegation parameters or reject the delegation entirely.
59
+ **options.delegation.onDelegationStart** (`(context: DelegationStartContext) => DelegationStartResult | void | Promise<DelegationStartResult | void>`): Called before delegating to a subagent. Use this to modify the delegation parameters, reject the delegation entirely, or mutate context.requestContext to add entries to the subagent run's request context.
60
60
 
61
61
  **options.delegation.onDelegationComplete** (`(context: DelegationCompleteContext) => { feedback?: string } | void | Promise<{ feedback?: string } | void>`): Called after a subagent delegation completes. The context includes a bail() method to stop further execution, and you can return { feedback } to guide the supervisor's next action. Feedback is saved to supervisor memory as an assistant message.
62
62
 
@@ -69,6 +69,8 @@ export const mastra = new Mastra({
69
69
 
70
70
  **sendSources** (`boolean`): Whether to include source citations in the stream. (Default: `false`)
71
71
 
72
+ **heartbeatMs** (`number`): Interval in milliseconds for SSE heartbeats that keep connections active through infrastructure with idle timeouts.
73
+
72
74
  ## Additional configuration
73
75
 
74
76
  You can use [`prepareSendMessagesRequest`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat#transport.default-chat-transport.prepare-send-messages-request) to customize the request sent to the chat route, for example to pass additional configuration to the agent:
@@ -32,7 +32,7 @@ then interact with elements using their refs (e.g., @e5).`,
32
32
 
33
33
  **headless** (`boolean`): Whether to run the browser in headless mode (no visible UI). (Default: `true`)
34
34
 
35
- **viewport** (`{ width: number; height: number }`): Browser viewport dimensions. (Default: `{ width: 1280, height: 720 }`)
35
+ **viewport** (`{ width: number; height: number } | 'window'`): Browser viewport dimensions, or 'window' to match the real browser window instead of a fixed size. (Default: `{ width: 1280, height: 720 }`)
36
36
 
37
37
  **timeout** (`number`): Default timeout in milliseconds for browser operations. (Default: `30000`)
38
38
 
@@ -35,7 +35,7 @@ export const browserAgent = new Agent({
35
35
 
36
36
  **headless** (`boolean`): Whether to run the browser in headless mode (no visible UI). (Default: `true`)
37
37
 
38
- **viewport** (`{ width: number; height: number }`): Browser viewport dimensions. Controls the size of the browser window. (Default: `{ width: 1280, height: 720 }`)
38
+ **viewport** (`{ width: number; height: number } | 'window'`): Browser viewport dimensions. Controls the size of the browser window. Set to 'window' to match the real browser window instead of a fixed size, supported by the agent-browser provider and by Stagehand when connecting over CDP. (Default: `{ width: 1280, height: 720 }`)
39
39
 
40
40
  **timeout** (`number`): Default timeout in milliseconds. Each provider defines its own semantics and default. See the provider reference for details.
41
41
 
@@ -33,7 +33,7 @@ Use stagehand_extract to get data from pages.`,
33
33
 
34
34
  **headless** (`boolean`): Whether to run the browser in headless mode. (Default: `true`)
35
35
 
36
- **viewport** (`{ width: number; height: number }`): Browser viewport dimensions. (Default: `{ width: 1280, height: 720 }`)
36
+ **viewport** (`{ width: number; height: number } | 'window'`): Browser viewport dimensions. 'window' matches the real browser window and only applies when connecting over CDP; a locally launched browser falls back to the default size. (Default: `{ width: 1280, height: 720 }`)
37
37
 
38
38
  **env** (`'LOCAL' | 'BROWSERBASE'`): Environment to run the browser in. Use 'BROWSERBASE' for cloud execution. (Default: `'LOCAL'`)
39
39
 
@@ -53,6 +53,8 @@ await slack.configure({
53
53
 
54
54
  **streaming** (`StreamingConfig | false`): Stream agent text deltas to Slack as they're generated. Pass { updateIntervalMs } to customize the post-and-edit interval, or false to buffer text until step-finish. Disabling streaming restricts toolDisplay to static modes. (Default: `true`)
55
55
 
56
+ **textFormat** (`'markdown' | 'plain'`): Dialect for the agent's final reply text, forwarded to the Slack adapter. 'markdown' (the default) posts replies as markdown so Slack renders bold text, links, and tables natively. 'plain' posts literal plain text, the escape hatch for agents prompted to emit Slack mrkdwn. Applies to buffered replies (streaming: false) and the streaming fallback; native streaming is always markdown. (Default: `'markdown'`)
57
+
56
58
  **toolDisplay** (`ToolDisplay`): How tool calls are rendered in Slack: 'cards', 'text', 'timeline', 'grouped', 'hidden', or a function. 'hidden' suppresses tool call/result rendering entirely. 'timeline' and 'grouped' require streaming. With streaming: false, only static modes are available and the default is 'cards'. (Default: `'grouped'`)
57
59
 
58
60
  **typingStatus** (`boolean | TypingStatusFn`): Show a typing indicator while the agent works. Set false to disable, or pass a function to return custom status text per stream chunk (return undefined to fall back to the default for that chunk). (Default: `true`)
@@ -41,6 +41,28 @@ console.log(`Total pages: ${traces.pagination.totalPages}`)
41
41
  const completeTrace = await mastraClient.getTrace(traces.spans[0].traceId)
42
42
  ```
43
43
 
44
+ ## Listing traces for a list view
45
+
46
+ `listTracesLight()` returns the same rows as a trace list, without the `input`, `output` and `attributes` payloads. Each row carries a short `inputPreview` string instead, so a list can render a preview column without transferring the whole prompt.
47
+
48
+ Prefer it whenever you are rendering many traces at once, and fetch the full record only when a row is opened:
49
+
50
+ ```typescript
51
+ const list = await mastraClient.listTracesLight({
52
+ pagination: { page: 0, perPage: 25 },
53
+ filters: { entityType: 'agent' },
54
+ })
55
+
56
+ for (const span of list.spans) {
57
+ console.log(span.name, span.inputPreview)
58
+ }
59
+
60
+ // Fetch the full payload only for the trace the user selects
61
+ const selected = await mastraClient.getTrace(list.spans[0].traceId)
62
+ ```
63
+
64
+ It accepts the same filtering, ordering and delta-polling arguments as `listTraces()`. Use `listTraces()` when you actually need the full span payloads.
65
+
44
66
  ## Scoring traces
45
67
 
46
68
  Score specific traces using registered scorers for evaluation: