@mastra/mcp-docs-server 1.1.39 → 1.1.40-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 (42) hide show
  1. package/.docs/docs/agents/acp.md +53 -0
  2. package/.docs/docs/agents/guardrails.md +2 -2
  3. package/.docs/docs/agents/processors.md +2 -2
  4. package/.docs/docs/agents/signals.md +38 -0
  5. package/.docs/docs/evals/datasets/running-experiments.md +1 -1
  6. package/.docs/docs/evals/overview.md +2 -2
  7. package/.docs/docs/mcp/mcp-apps.md +3 -3
  8. package/.docs/docs/memory/multi-user-threads.md +1 -1
  9. package/.docs/docs/memory/observational-memory.md +2 -2
  10. package/.docs/docs/memory/storage.md +1 -1
  11. package/.docs/docs/rag/retrieval.md +4 -1
  12. package/.docs/docs/workspace/filesystem.md +1 -1
  13. package/.docs/models/gateways/openrouter.md +3 -2
  14. package/.docs/models/gateways/vercel.md +5 -2
  15. package/.docs/models/index.md +1 -1
  16. package/.docs/models/providers/alibaba.md +2 -1
  17. package/.docs/models/providers/cloudflare-workers-ai.md +33 -14
  18. package/.docs/models/providers/crof.md +91 -0
  19. package/.docs/models/providers/inceptron.md +74 -0
  20. package/.docs/models/providers/llmgateway.md +7 -3
  21. package/.docs/models/providers/opencode.md +2 -2
  22. package/.docs/models/providers/scaleway.md +2 -1
  23. package/.docs/models/providers/stepfun-ai.md +72 -0
  24. package/.docs/models/providers/xai.md +10 -18
  25. package/.docs/models/providers.md +3 -0
  26. package/.docs/reference/browser/stagehand-browser.md +1 -1
  27. package/.docs/reference/client-js/agents.md +31 -0
  28. package/.docs/reference/evals/noise-sensitivity.md +1 -1
  29. package/.docs/reference/harness/harness-class.md +6 -3
  30. package/.docs/reference/memory/observational-memory.md +1 -1
  31. package/.docs/reference/observability/tracing/exporters/sentry.md +1 -0
  32. package/.docs/reference/observability/tracing/interfaces.md +13 -0
  33. package/.docs/reference/processors/cost-guard-processor.md +1 -1
  34. package/.docs/reference/processors/processor-interface.md +1 -1
  35. package/.docs/reference/processors/regex-filter-processor.md +1 -1
  36. package/.docs/reference/processors/skill-search-processor.md +1 -1
  37. package/.docs/reference/server/nestjs-adapter.md +1 -1
  38. package/.docs/reference/storage/dsql.md +1 -1
  39. package/.docs/reference/storage/redis.md +1 -1
  40. package/.docs/reference/workspace/google-drive-filesystem.md +1 -1
  41. package/CHANGELOG.md +35 -0
  42. package/package.json +3 -3
@@ -142,6 +142,59 @@ If the ACP agent requests permission, the tool can suspend and resume through Ma
142
142
  | `persistSession` | `boolean` | Keep the ACP process alive after execution. Defaults to `true`. |
143
143
  | `onPermissionRequest` | `(request) => Promise<Response>` | Callback for ACP permission requests. Defaults to selecting the first option. |
144
144
  | `workspace` | `Workspace` | Workspace used for ACP file reads and writes. |
145
+ | `model` | `string` | Model ID to select after session creation via the ACP `session/set_model` method. |
146
+
147
+ ## Model selection
148
+
149
+ ACP agents may expose selectable models. Instead of setting an environment variable like `ANTHROPIC_MODEL`, you can pass a `model` ID directly in the configuration.
150
+
151
+ ### Discover available models
152
+
153
+ Call `getAvailableModels()` to see which models the ACP agent supports. This starts the agent process and returns the model list from the session:
154
+
155
+ ```typescript
156
+ import { AcpAgent } from '@mastra/acp'
157
+
158
+ const codeAgent = new AcpAgent({
159
+ id: 'code-agent',
160
+ description: 'An ACP-compatible coding agent',
161
+ command: 'claude',
162
+ args: ['--acp'],
163
+ })
164
+
165
+ const models = await codeAgent.getAvailableModels()
166
+ // [{ modelId: 'claude-sonnet-4-20250514', name: 'Claude Sonnet' }, ...]
167
+ ```
168
+
169
+ ### Set the model
170
+
171
+ Pass the `model` option to select a model at connection time:
172
+
173
+ ```typescript
174
+ import { AcpAgent } from '@mastra/acp'
175
+
176
+ export const codeAgent = new AcpAgent({
177
+ id: 'code-agent',
178
+ description: 'An ACP-compatible coding agent',
179
+ command: 'claude',
180
+ args: ['--acp'],
181
+ model: '__AI_SDK_ANTHROPIC_MODEL_SONNET__',
182
+ })
183
+ ```
184
+
185
+ You can also change the model at runtime with `setModel()`:
186
+
187
+ ```typescript
188
+ await codeAgent.setModel('__AI_SDK_ANTHROPIC_MODEL_SONNET__')
189
+ ```
190
+
191
+ If the ACP agent advertises available models and your model ID doesn't match any of them, Mastra throws an error listing the valid options:
192
+
193
+ ```text
194
+ Model "bad-model-id" is not available. Available models: claude-sonnet-4-20250514, claude-haiku-4-20250514
195
+ ```
196
+
197
+ If the agent doesn't advertise a model list, the value is passed through without validation.
145
198
 
146
199
  ## Session lifecycle
147
200
 
@@ -246,7 +246,7 @@ costGuard.onViolation = ({ processorId, message, detail }) => {
246
246
 
247
247
  // Log moderation violations
248
248
  const moderation = new ModerationProcessor({
249
- model: 'openai/gpt-5-nano',
249
+ model: '__OPENAI_MODEL_NANO__',
250
250
  strategy: 'block',
251
251
  })
252
252
 
@@ -360,7 +360,7 @@ See [workflows as processors](https://mastra.ai/docs/agents/processors) for more
360
360
  Guardrail processors don't need your primary model. Use a small, fast model for classification tasks:
361
361
 
362
362
  ```typescript
363
- const GUARDRAIL_MODEL = 'openai/gpt-5-nano'
363
+ const GUARDRAIL_MODEL = '__OPENAI_MODEL_NANO__'
364
364
 
365
365
  new ModerationProcessor({ model: GUARDRAIL_MODEL })
366
366
  new PIIDetector({ model: GUARDRAIL_MODEL })
@@ -97,9 +97,9 @@ const agent = new Agent({
97
97
  instructions: '...',
98
98
  inputProcessors: [
99
99
  new TokenLimiter(4000),
100
- new ModerationProcessor({ model: 'openai/gpt-4.1-nano' }),
100
+ new ModerationProcessor({ model: 'openai/gpt-5-nano' }),
101
101
  ],
102
- outputProcessors: [new ModerationProcessor({ model: 'openai/gpt-4.1-nano' })],
102
+ outputProcessors: [new ModerationProcessor({ model: 'openai/gpt-5-nano' })],
103
103
  errorProcessors: [new PrefillErrorHandler()],
104
104
  })
105
105
  ```
@@ -141,6 +141,44 @@ The model receives the custom signal as context like this:
141
141
 
142
142
  Use XML-safe signal type names and attribute names. Signal type names and attribute names can contain letters, numbers, underscores, periods, and hyphens. They must start with a letter or underscore.
143
143
 
144
+ ## Delivery attributes
145
+
146
+ Use `ifActive.attributes` and `ifIdle.attributes` to tag a signal with context that depends on whether the agent is active or idle at delivery time. Mastra resolves the correct branch when the signal is accepted.
147
+
148
+ ```typescript
149
+ agent.sendSignal(
150
+ {
151
+ type: 'user-message',
152
+ contents: 'Also cover the edge cases.',
153
+ attributes: { source: 'chat' },
154
+ },
155
+ {
156
+ resourceId: 'user_123',
157
+ threadId: 'thread_456',
158
+ ifActive: { attributes: { delivery: 'while-active' } },
159
+ ifIdle: { attributes: { delivery: 'message' } },
160
+ },
161
+ )
162
+ ```
163
+
164
+ When the agent is working, the model sees:
165
+
166
+ ```xml
167
+ <user-message source="chat" delivery="while-active">Also cover the edge cases.</user-message>
168
+ ```
169
+
170
+ When the agent is idle:
171
+
172
+ ```xml
173
+ <user-message source="chat" delivery="message">Also cover the edge cases.</user-message>
174
+ ```
175
+
176
+ Top-level `attributes` always apply. The selected branch's `attributes` are merged into them at delivery time. The `ifActive.attributes` branch merges when the signal is delivered to a running agent loop. The `ifIdle.attributes` branch merges when the signal wakes an idle thread. If the selected branch or its `attributes` field is `undefined`, no extra attributes are added.
177
+
178
+ Delivery attributes work with any signal type and can carry any key-value pairs. The `delivery` name shown above is not a special Mastra API field. It is a custom attribute name used for this example; you can use any attribute names that fit your application.
179
+
180
+ > **Note:** Visit [Agent.sendSignal() reference](https://mastra.ai/reference/agents/agent) for the full signal input and options types.
181
+
144
182
  ## Use the client SDK
145
183
 
146
184
  The JavaScript client exposes the same thread signal APIs. Use `subscribeToThread()` before `sendSignal()` so the client can render the stream that wakes from, or receives, the signal.
@@ -104,7 +104,7 @@ const summary = await dataset.startExperiment({
104
104
  ```typescript
105
105
  import { createAnswerRelevancyScorer } from '@mastra/evals/scorers/prebuilt'
106
106
 
107
- const relevancy = createAnswerRelevancyScorer({ model: 'openai/gpt-5-mini' })
107
+ const relevancy = createAnswerRelevancyScorer({ model: '__OPENAI_MODEL_MINI__' })
108
108
 
109
109
  const summary = await dataset.startExperiment({
110
110
  name: 'with-scorer-instances',
@@ -57,11 +57,11 @@ import { createAnswerRelevancyScorer, createToxicityScorer } from '@mastra/evals
57
57
  export const evaluatedAgent = new Agent({
58
58
  scorers: {
59
59
  relevancy: {
60
- scorer: createAnswerRelevancyScorer({ model: 'openai/gpt-5-mini' }),
60
+ scorer: createAnswerRelevancyScorer({ model: '__OPENAI_MODEL_MINI__' }),
61
61
  sampling: { type: 'ratio', rate: 0.5 },
62
62
  },
63
63
  safety: {
64
- scorer: createToxicityScorer({ model: 'openai/gpt-5-mini' }),
64
+ scorer: createToxicityScorer({ model: '__OPENAI_MODEL_MINI__' }),
65
65
  sampling: { type: 'ratio', rate: 1 },
66
66
  },
67
67
  },
@@ -93,7 +93,7 @@ export const myAgent = new Agent({
93
93
  id: 'my-agent',
94
94
  name: 'My Agent',
95
95
  instructions: 'You have access to interactive UI tools.',
96
- model: 'openai/gpt-5-mini',
96
+ model: '__OPENAI_MODEL_MINI__',
97
97
  tools: { calculatorTool },
98
98
  })
99
99
  ```
@@ -125,7 +125,7 @@ const mcpClient = new MCPClient({
125
125
  const myAgent = new Agent({
126
126
  id: 'my-agent',
127
127
  name: 'My Agent',
128
- model: 'openai/gpt-5-mini',
128
+ model: '__OPENAI_MODEL_MINI__',
129
129
  tools: await mcpClient.listTools(),
130
130
  })
131
131
 
@@ -270,7 +270,7 @@ const mcpClient = new MCPClient({
270
270
  const myAgent = new Agent({
271
271
  id: 'my-agent',
272
272
  name: 'My Agent',
273
- model: 'openai/gpt-5-mini',
273
+ model: '__OPENAI_MODEL_MINI__',
274
274
  tools: await mcpClient.listTools(),
275
275
  })
276
276
 
@@ -65,7 +65,7 @@ const memory = new Memory({
65
65
  export const collabAgent = new Agent({
66
66
  id: 'collab',
67
67
  name: 'CollabAgent',
68
- model: 'openai/gpt-5.4-mini',
68
+ model: '__OPENAI_MODEL_MINI__',
69
69
  memory,
70
70
  instructions: `
71
71
  You are a collaborative document assistant. Multiple users talk to you in the SAME thread.
@@ -316,7 +316,7 @@ const memory = new Memory({
316
316
  // Faster, cheaper models for smaller inputs; stronger models for larger contexts
317
317
  5_000: 'openrouter/mistralai/ministral-8b-2512',
318
318
  20_000: 'openrouter/mistralai/mistral-small-2603',
319
- 40_000: 'openai/gpt-5.4-mini',
319
+ 40_000: 'openai/gpt-5-mini',
320
320
  1_000_000: 'google/gemini-3.1-flash-lite-preview',
321
321
  },
322
322
  }),
@@ -324,7 +324,7 @@ const memory = new Memory({
324
324
  reflection: {
325
325
  model: new ModelByInputTokens({
326
326
  upTo: {
327
- 20_000: 'openai/gpt-5.4-mini',
327
+ 20_000: 'openai/gpt-5-mini',
328
328
  100_000: 'google/gemini-2.5-flash',
329
329
  },
330
330
  }),
@@ -179,7 +179,7 @@ export const agent = new Agent({
179
179
  memory: new Memory({
180
180
  options: {
181
181
  generateTitle: {
182
- model: 'openai/gpt-5-mini',
182
+ model: '__OPENAI_MODEL_MINI__',
183
183
  instructions: 'Generate a 1 word title',
184
184
  },
185
185
  },
@@ -472,7 +472,10 @@ const initialResults = await pgVector.query({
472
472
  })
473
473
 
474
474
  // Create a relevance scorer
475
- const relevanceProvider = new MastraAgentRelevanceScorer('relevance-scorer', 'openai/gpt-5.4')
475
+ const relevanceProvider = new MastraAgentRelevanceScorer(
476
+ 'relevance-scorer',
477
+ 'openai/gpt-5.4',
478
+ )
476
479
 
477
480
  // Re-rank the results
478
481
  const rerankedResults = await rerank({
@@ -115,7 +115,7 @@ const workspace = new Workspace({
115
115
 
116
116
  const agent = new Agent({
117
117
  id: 'multi-role-agent',
118
- model: 'openai/gpt-4o',
118
+ model: 'openai/gpt-5.4',
119
119
  workspace,
120
120
  })
121
121
  ```
@@ -1,6 +1,6 @@
1
1
  # ![OpenRouter logo](https://models.dev/logos/openrouter.svg)OpenRouter
2
2
 
3
- OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 357 models through Mastra's model router.
3
+ OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 358 models through Mastra's model router.
4
4
 
5
5
  Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
6
6
 
@@ -72,7 +72,6 @@ ANTHROPIC_API_KEY=ant-...
72
72
  | `arcee-ai/coder-large` |
73
73
  | `arcee-ai/maestro-reasoning` |
74
74
  | `arcee-ai/spotlight` |
75
- | `arcee-ai/trinity-large-preview` |
76
75
  | `arcee-ai/trinity-large-thinking` |
77
76
  | `arcee-ai/trinity-large-thinking:free` |
78
77
  | `arcee-ai/trinity-mini` |
@@ -350,6 +349,7 @@ ANTHROPIC_API_KEY=ant-...
350
349
  | `qwen/qwen3.6-flash` |
351
350
  | `qwen/qwen3.6-max-preview` |
352
351
  | `qwen/qwen3.6-plus` |
352
+ | `qwen/qwen3.7-max` |
353
353
  | `rekaai/reka-edge` |
354
354
  | `rekaai/reka-flash-3` |
355
355
  | `relace/relace-apply-3` |
@@ -373,6 +373,7 @@ ANTHROPIC_API_KEY=ant-...
373
373
  | `x-ai/grok-4.20` |
374
374
  | `x-ai/grok-4.20-multi-agent` |
375
375
  | `x-ai/grok-4.3` |
376
+ | `x-ai/grok-build-0.1` |
376
377
  | `xiaomi/mimo-v2-flash` |
377
378
  | `xiaomi/mimo-v2-omni` |
378
379
  | `xiaomi/mimo-v2-pro` |
@@ -1,6 +1,6 @@
1
1
  # ![Vercel logo](https://models.dev/logos/vercel.svg)Vercel
2
2
 
3
- Vercel aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 240 models through Mastra's model router.
3
+ Vercel aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 243 models through Mastra's model router.
4
4
 
5
5
  Learn more in the [Vercel documentation](https://ai-sdk.dev/providers/ai-sdk-providers).
6
6
 
@@ -59,6 +59,7 @@ ANTHROPIC_API_KEY=ant-...
59
59
  | `alibaba/qwen3.5-plus` |
60
60
  | `alibaba/qwen3.6-27b` |
61
61
  | `alibaba/qwen3.6-plus` |
62
+ | `alibaba/qwen3.7-max` |
62
63
  | `amazon/nova-2-lite` |
63
64
  | `amazon/nova-lite` |
64
65
  | `amazon/nova-micro` |
@@ -116,6 +117,7 @@ ANTHROPIC_API_KEY=ant-...
116
117
  | `google/gemini-3.1-flash-lite` |
117
118
  | `google/gemini-3.1-flash-lite-preview` |
118
119
  | `google/gemini-3.1-pro-preview` |
120
+ | `google/gemini-3.5-flash` |
119
121
  | `google/gemini-embedding-001` |
120
122
  | `google/gemini-embedding-2` |
121
123
  | `google/gemma-4-26b-a4b-it` |
@@ -163,6 +165,7 @@ ANTHROPIC_API_KEY=ant-...
163
165
  | `mistral/mistral-embed` |
164
166
  | `mistral/mistral-large-3` |
165
167
  | `mistral/mistral-medium` |
168
+ | `mistral/mistral-medium-3.5` |
166
169
  | `mistral/mistral-nemo` |
167
170
  | `mistral/mistral-small` |
168
171
  | `mistral/mixtral-8x22b-instruct` |
@@ -244,7 +247,6 @@ ANTHROPIC_API_KEY=ant-...
244
247
  | `voyage/voyage-code-3` |
245
248
  | `voyage/voyage-finance-2` |
246
249
  | `voyage/voyage-law-2` |
247
- | `xai/grok-2-vision` |
248
250
  | `xai/grok-4-fast-reasoning` |
249
251
  | `xai/grok-4.1-fast-non-reasoning` |
250
252
  | `xai/grok-4.1-fast-reasoning` |
@@ -255,6 +257,7 @@ ANTHROPIC_API_KEY=ant-...
255
257
  | `xai/grok-4.20-reasoning` |
256
258
  | `xai/grok-4.20-reasoning-beta` |
257
259
  | `xai/grok-4.3` |
260
+ | `xai/grok-build-0.1` |
258
261
  | `xai/grok-imagine-image` |
259
262
  | `xai/grok-imagine-image-pro` |
260
263
  | `xiaomi/mimo-v2-flash` |
@@ -1,6 +1,6 @@
1
1
  # Model Providers
2
2
 
3
- Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 4195 models from 121 providers through a single API.
3
+ Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 4243 models from 124 providers through a single API.
4
4
 
5
5
  ## Features
6
6
 
@@ -1,6 +1,6 @@
1
1
  # ![Alibaba logo](https://models.dev/logos/alibaba.svg)Alibaba
2
2
 
3
- Access 48 Alibaba models through Mastra's model router. Authentication is handled automatically using the `DASHSCOPE_API_KEY` environment variable.
3
+ Access 49 Alibaba models through Mastra's model router. Authentication is handled automatically using the `DASHSCOPE_API_KEY` environment variable.
4
4
 
5
5
  Learn more in the [Alibaba documentation](https://www.alibabacloud.com/help/en/model-studio/models).
6
6
 
@@ -81,6 +81,7 @@ for await (const chunk of stream) {
81
81
  | `alibaba/qwen3.6-35b-a3b` | 262K | | | | | | $0.25 | $1 |
82
82
  | `alibaba/qwen3.6-max-preview` | 262K | | | | | | $1 | $8 |
83
83
  | `alibaba/qwen3.6-plus` | 1.0M | | | | | | $0.50 | $3 |
84
+ | `alibaba/qwen3.7-max` | 1.0M | | | | | | $3 | $8 |
84
85
  | `alibaba/qwq-plus` | 131K | | | | | | $0.80 | $2 |
85
86
 
86
87
  ## Advanced configuration
@@ -1,6 +1,6 @@
1
1
  # ![Cloudflare Workers AI logo](https://models.dev/logos/cloudflare-workers-ai.svg)Cloudflare Workers AI
2
2
 
3
- Access 8 Cloudflare Workers AI models through Mastra's model router. Authentication is handled automatically using the `CLOUDFLARE_API_KEY` environment variable. Configure `CLOUDFLARE_ACCOUNT_ID` as well.
3
+ Access 27 Cloudflare Workers AI models through Mastra's model router. Authentication is handled automatically using the `CLOUDFLARE_API_KEY` environment variable. Configure `CLOUDFLARE_ACCOUNT_ID` as well.
4
4
 
5
5
  Learn more in the [Cloudflare Workers AI documentation](https://developers.cloudflare.com/workers-ai/models/).
6
6
 
@@ -16,7 +16,7 @@ const agent = new Agent({
16
16
  id: "my-agent",
17
17
  name: "My Agent",
18
18
  instructions: "You are a helpful assistant",
19
- model: "cloudflare-workers-ai/@cf/google/gemma-4-26b-a4b-it"
19
+ model: "cloudflare-workers-ai/@cf/aisingapore/gemma-sea-lion-v4-27b-it"
20
20
  });
21
21
 
22
22
  // Generate a response
@@ -33,16 +33,35 @@ for await (const chunk of stream) {
33
33
 
34
34
  ## Models
35
35
 
36
- | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
37
- | --------------------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
38
- | `cloudflare-workers-ai/@cf/google/gemma-4-26b-a4b-it` | 256K | | | | | | $0.10 | $0.30 |
39
- | `cloudflare-workers-ai/@cf/meta/llama-4-scout-17b-16e-instruct` | 128K | | | | | | $0.27 | $0.85 |
40
- | `cloudflare-workers-ai/@cf/moonshotai/kimi-k2.5` | 256K | | | | | | $0.60 | $3 |
41
- | `cloudflare-workers-ai/@cf/moonshotai/kimi-k2.6` | 256K | | | | | | $0.95 | $4 |
42
- | `cloudflare-workers-ai/@cf/nvidia/nemotron-3-120b-a12b` | 256K | | | | | | $0.50 | $2 |
43
- | `cloudflare-workers-ai/@cf/openai/gpt-oss-120b` | 128K | | | | | | $0.35 | $0.75 |
44
- | `cloudflare-workers-ai/@cf/openai/gpt-oss-20b` | 128K | | | | | | $0.20 | $0.30 |
45
- | `cloudflare-workers-ai/@cf/zai-org/glm-4.7-flash` | 131K | | | | | | $0.06 | $0.40 |
36
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
37
+ | -------------------------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
38
+ | `cloudflare-workers-ai/@cf/aisingapore/gemma-sea-lion-v4-27b-it` | 128K | | | | | | $0.35 | $0.56 |
39
+ | `cloudflare-workers-ai/@cf/deepseek-ai/deepseek-r1-distill-qwen-32b` | 80K | | | | | | $0.50 | $5 |
40
+ | `cloudflare-workers-ai/@cf/google/gemma-3-12b-it` | 80K | | | | | | $0.34 | $0.56 |
41
+ | `cloudflare-workers-ai/@cf/google/gemma-4-26b-a4b-it` | 256K | | | | | | $0.10 | $0.30 |
42
+ | `cloudflare-workers-ai/@cf/ibm-granite/granite-4.0-h-micro` | 131K | | | | | | $0.02 | $0.11 |
43
+ | `cloudflare-workers-ai/@cf/meta/llama-2-7b-chat-fp16` | 4K | | | | | | $0.56 | $7 |
44
+ | `cloudflare-workers-ai/@cf/meta/llama-3-8b-instruct` | 8K | | | | | | $0.28 | $0.83 |
45
+ | `cloudflare-workers-ai/@cf/meta/llama-3-8b-instruct-awq` | 8K | | | | | | $0.12 | $0.27 |
46
+ | `cloudflare-workers-ai/@cf/meta/llama-3.1-8b-instruct-awq` | 8K | | | | | | $0.12 | $0.27 |
47
+ | `cloudflare-workers-ai/@cf/meta/llama-3.1-8b-instruct-fp8` | 32K | | | | | | $0.15 | $0.29 |
48
+ | `cloudflare-workers-ai/@cf/meta/llama-3.2-11b-vision-instruct` | 128K | | | | | | $0.05 | $0.68 |
49
+ | `cloudflare-workers-ai/@cf/meta/llama-3.2-1b-instruct` | 60K | | | | | | $0.03 | $0.20 |
50
+ | `cloudflare-workers-ai/@cf/meta/llama-3.2-3b-instruct` | 80K | | | | | | $0.05 | $0.34 |
51
+ | `cloudflare-workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast` | 24K | | | | | | $0.29 | $2 |
52
+ | `cloudflare-workers-ai/@cf/meta/llama-4-scout-17b-16e-instruct` | 131K | | | | | | $0.27 | $0.85 |
53
+ | `cloudflare-workers-ai/@cf/meta/llama-guard-3-8b` | 131K | | | | | | $0.48 | $0.03 |
54
+ | `cloudflare-workers-ai/@cf/mistral/mistral-7b-instruct-v0.1` | 3K | | | | | | $0.11 | $0.19 |
55
+ | `cloudflare-workers-ai/@cf/mistralai/mistral-small-3.1-24b-instruct` | 128K | | | | | | $0.35 | $0.56 |
56
+ | `cloudflare-workers-ai/@cf/moonshotai/kimi-k2.5` | 256K | | | | | | $0.60 | $3 |
57
+ | `cloudflare-workers-ai/@cf/moonshotai/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
58
+ | `cloudflare-workers-ai/@cf/nvidia/nemotron-3-120b-a12b` | 256K | | | | | | $0.50 | $2 |
59
+ | `cloudflare-workers-ai/@cf/openai/gpt-oss-120b` | 128K | | | | | | $0.35 | $0.75 |
60
+ | `cloudflare-workers-ai/@cf/openai/gpt-oss-20b` | 128K | | | | | | $0.20 | $0.30 |
61
+ | `cloudflare-workers-ai/@cf/qwen/qwen2.5-coder-32b-instruct` | 33K | | | | | | $0.66 | $1 |
62
+ | `cloudflare-workers-ai/@cf/qwen/qwen3-30b-a3b-fp8` | 33K | | | | | | $0.05 | $0.34 |
63
+ | `cloudflare-workers-ai/@cf/qwen/qwq-32b` | 24K | | | | | | $0.66 | $1 |
64
+ | `cloudflare-workers-ai/@cf/zai-org/glm-4.7-flash` | 131K | | | | | | $0.06 | $0.40 |
46
65
 
47
66
  ## Advanced configuration
48
67
 
@@ -54,7 +73,7 @@ const agent = new Agent({
54
73
  name: "custom-agent",
55
74
  model: {
56
75
  url: "https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1",
57
- id: "cloudflare-workers-ai/@cf/google/gemma-4-26b-a4b-it",
76
+ id: "cloudflare-workers-ai/@cf/aisingapore/gemma-sea-lion-v4-27b-it",
58
77
  apiKey: process.env.CLOUDFLARE_API_KEY,
59
78
  headers: {
60
79
  "X-Custom-Header": "value"
@@ -73,7 +92,7 @@ const agent = new Agent({
73
92
  const useAdvanced = requestContext.task === "complex";
74
93
  return useAdvanced
75
94
  ? "cloudflare-workers-ai/@cf/zai-org/glm-4.7-flash"
76
- : "cloudflare-workers-ai/@cf/google/gemma-4-26b-a4b-it";
95
+ : "cloudflare-workers-ai/@cf/aisingapore/gemma-sea-lion-v4-27b-it";
77
96
  }
78
97
  });
79
98
  ```
@@ -0,0 +1,91 @@
1
+ # ![CrofAI logo](https://models.dev/logos/crof.svg)CrofAI
2
+
3
+ Access 21 CrofAI models through Mastra's model router. Authentication is handled automatically using the `CROF_API_KEY` environment variable.
4
+
5
+ Learn more in the [CrofAI documentation](https://crof.ai/docs).
6
+
7
+ ```bash
8
+ CROF_API_KEY=your-api-key
9
+ ```
10
+
11
+ ```typescript
12
+ import { Agent } from "@mastra/core/agent";
13
+
14
+ const agent = new Agent({
15
+ id: "my-agent",
16
+ name: "My Agent",
17
+ instructions: "You are a helpful assistant",
18
+ model: "crof/deepseek-v3.2"
19
+ });
20
+
21
+ // Generate a response
22
+ const response = await agent.generate("Hello!");
23
+
24
+ // Stream a response
25
+ const stream = await agent.stream("Tell me a story");
26
+ for await (const chunk of stream) {
27
+ console.log(chunk);
28
+ }
29
+ ```
30
+
31
+ > **Info:** Mastra uses the OpenAI-compatible `/chat/completions` endpoint. Some provider-specific features may not be available. Check the [CrofAI documentation](https://crof.ai/docs) for details.
32
+
33
+ ## Models
34
+
35
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
36
+ | -------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
37
+ | `crof/deepseek-v3.2` | 164K | | | | | | $0.28 | $0.38 |
38
+ | `crof/deepseek-v4-flash` | 1.0M | | | | | | $0.12 | $0.21 |
39
+ | `crof/deepseek-v4-pro` | 1.0M | | | | | | $0.40 | $0.85 |
40
+ | `crof/deepseek-v4-pro-precision` | 1.0M | | | | | | $1 | $3 |
41
+ | `crof/gemma-4-31b-it` | 262K | | | | | | $0.10 | $0.30 |
42
+ | `crof/glm-4.7` | 203K | | | | | | $0.25 | $1 |
43
+ | `crof/glm-4.7-flash` | 200K | | | | | | $0.04 | $0.30 |
44
+ | `crof/glm-5` | 203K | | | | | | $0.48 | $2 |
45
+ | `crof/glm-5.1` | 203K | | | | | | $0.45 | $2 |
46
+ | `crof/glm-5.1-precision` | 203K | | | | | | $0.75 | $3 |
47
+ | `crof/greg` | 229K | | | | | | $0.10 | $0.20 |
48
+ | `crof/kimi-k2.5` | 262K | | | | | | $0.35 | $2 |
49
+ | `crof/kimi-k2.5-lightning` | 131K | | | | | | $1 | $3 |
50
+ | `crof/kimi-k2.6` | 262K | | | | | | $0.50 | $2 |
51
+ | `crof/kimi-k2.6-precision` | 262K | | | | | | $0.55 | $3 |
52
+ | `crof/mimo-v2.5-pro` | 1.0M | | | | | | $0.50 | $2 |
53
+ | `crof/mimo-v2.5-pro-precision` | 1.0M | | | | | | $0.80 | $3 |
54
+ | `crof/minimax-m2.5` | 205K | | | | | | $0.11 | $0.95 |
55
+ | `crof/qwen3.5-397b-a17b` | 262K | | | | | | $0.35 | $2 |
56
+ | `crof/qwen3.5-9b` | 262K | | | | | | $0.04 | $0.15 |
57
+ | `crof/qwen3.6-27b` | 262K | | | | | | $0.20 | $2 |
58
+
59
+ ## Advanced configuration
60
+
61
+ ### Custom headers
62
+
63
+ ```typescript
64
+ const agent = new Agent({
65
+ id: "custom-agent",
66
+ name: "custom-agent",
67
+ model: {
68
+ url: "https://crof.ai/v1",
69
+ id: "crof/deepseek-v3.2",
70
+ apiKey: process.env.CROF_API_KEY,
71
+ headers: {
72
+ "X-Custom-Header": "value"
73
+ }
74
+ }
75
+ });
76
+ ```
77
+
78
+ ### Dynamic model selection
79
+
80
+ ```typescript
81
+ const agent = new Agent({
82
+ id: "dynamic-agent",
83
+ name: "Dynamic Agent",
84
+ model: ({ requestContext }) => {
85
+ const useAdvanced = requestContext.task === "complex";
86
+ return useAdvanced
87
+ ? "crof/qwen3.6-27b"
88
+ : "crof/deepseek-v3.2";
89
+ }
90
+ });
91
+ ```
@@ -0,0 +1,74 @@
1
+ # ![Inceptron logo](https://models.dev/logos/inceptron.svg)Inceptron
2
+
3
+ Access 4 Inceptron models through Mastra's model router. Authentication is handled automatically using the `INCEPTRON_API_KEY` environment variable.
4
+
5
+ Learn more in the [Inceptron documentation](https://docs.inceptron.io).
6
+
7
+ ```bash
8
+ INCEPTRON_API_KEY=your-api-key
9
+ ```
10
+
11
+ ```typescript
12
+ import { Agent } from "@mastra/core/agent";
13
+
14
+ const agent = new Agent({
15
+ id: "my-agent",
16
+ name: "My Agent",
17
+ instructions: "You are a helpful assistant",
18
+ model: "inceptron/MiniMaxAI/MiniMax-M2.5"
19
+ });
20
+
21
+ // Generate a response
22
+ const response = await agent.generate("Hello!");
23
+
24
+ // Stream a response
25
+ const stream = await agent.stream("Tell me a story");
26
+ for await (const chunk of stream) {
27
+ console.log(chunk);
28
+ }
29
+ ```
30
+
31
+ > **Info:** Mastra uses the OpenAI-compatible `/chat/completions` endpoint. Some provider-specific features may not be available. Check the [Inceptron documentation](https://docs.inceptron.io) for details.
32
+
33
+ ## Models
34
+
35
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
36
+ | --------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
37
+ | `inceptron/MiniMaxAI/MiniMax-M2.5` | 197K | | | | | | $0.24 | $0.90 |
38
+ | `inceptron/moonshotai/Kimi-K2.6` | 262K | | | | | | $0.78 | $4 |
39
+ | `inceptron/nvidia/llama-3.3-70b-instruct-fp8` | 131K | | | | | | $0.12 | $0.38 |
40
+ | `inceptron/zai-org/GLM-5.1-FP8` | 203K | | | | | | $1 | $4 |
41
+
42
+ ## Advanced configuration
43
+
44
+ ### Custom headers
45
+
46
+ ```typescript
47
+ const agent = new Agent({
48
+ id: "custom-agent",
49
+ name: "custom-agent",
50
+ model: {
51
+ url: "https://api.inceptron.io/v1",
52
+ id: "inceptron/MiniMaxAI/MiniMax-M2.5",
53
+ apiKey: process.env.INCEPTRON_API_KEY,
54
+ headers: {
55
+ "X-Custom-Header": "value"
56
+ }
57
+ }
58
+ });
59
+ ```
60
+
61
+ ### Dynamic model selection
62
+
63
+ ```typescript
64
+ const agent = new Agent({
65
+ id: "dynamic-agent",
66
+ name: "Dynamic Agent",
67
+ model: ({ requestContext }) => {
68
+ const useAdvanced = requestContext.task === "complex";
69
+ return useAdvanced
70
+ ? "inceptron/zai-org/GLM-5.1-FP8"
71
+ : "inceptron/MiniMaxAI/MiniMax-M2.5";
72
+ }
73
+ });
74
+ ```
@@ -1,6 +1,6 @@
1
1
  # ![LLM Gateway logo](https://models.dev/logos/llmgateway.svg)LLM Gateway
2
2
 
3
- Access 183 LLM Gateway models through Mastra's model router. Authentication is handled automatically using the `LLMGATEWAY_API_KEY` environment variable.
3
+ Access 187 LLM Gateway models through Mastra's model router. Authentication is handled automatically using the `LLMGATEWAY_API_KEY` environment variable.
4
4
 
5
5
  Learn more in the [LLM Gateway documentation](https://llmgateway.io/docs).
6
6
 
@@ -68,6 +68,7 @@ for await (const chunk of stream) {
68
68
  | `llmgateway/gemini-3.1-flash-lite` | 1.0M | | | | | | $0.25 | $2 |
69
69
  | `llmgateway/gemini-3.1-flash-lite-preview` | 1.0M | | | | | | $0.25 | $2 |
70
70
  | `llmgateway/gemini-3.1-pro-preview` | 1.0M | | | | | | $2 | $12 |
71
+ | `llmgateway/gemini-3.5-flash` | 1.0M | | | | | | $2 | $9 |
71
72
  | `llmgateway/gemini-pro-latest` | 1.0M | | | | | | $2 | $12 |
72
73
  | `llmgateway/gemma-2-27b-it-together` | 8K | | | | | | $0.08 | $0.08 |
73
74
  | `llmgateway/gemma-3-1b-it` | 1.0M | | | | | | $0.08 | $0.30 |
@@ -122,8 +123,10 @@ for await (const chunk of stream) {
122
123
  | `llmgateway/gpt-oss-20b` | 131K | | | | | | $0.10 | $0.50 |
123
124
  | `llmgateway/grok-4-0709` | 256K | | | | | | $3 | $15 |
124
125
  | `llmgateway/grok-4-1-fast-reasoning` | 2.0M | | | | | | $0.20 | $0.50 |
125
- | `llmgateway/grok-4-20-beta-0309-non-reasoning` | 2.0M | | | | | | $2 | $6 |
126
- | `llmgateway/grok-4-20-beta-0309-reasoning` | 2.0M | | | | | | $2 | $6 |
126
+ | `llmgateway/grok-4-20-beta-0309-non-reasoning` | 2.0M | | | | | | $1 | $3 |
127
+ | `llmgateway/grok-4-20-beta-0309-reasoning` | 2.0M | | | | | | $1 | $3 |
128
+ | `llmgateway/grok-4-20-non-reasoning` | 2.0M | | | | | | $1 | $3 |
129
+ | `llmgateway/grok-4-20-reasoning` | 2.0M | | | | | | $1 | $3 |
127
130
  | `llmgateway/grok-4-3` | 1.0M | | | | | | $1 | $3 |
128
131
  | `llmgateway/grok-4-fast-reasoning` | 2.0M | | | | | | $0.20 | $0.50 |
129
132
  | `llmgateway/hermes-2-pro-llama-3-8b` | 8K | | | | | | $0.14 | $0.14 |
@@ -209,6 +212,7 @@ for await (const chunk of stream) {
209
212
  | `llmgateway/qwen3.6-max-preview` | 262K | | | | | | $1 | $8 |
210
213
  | `llmgateway/qwen3.6-plus` | 1.0M | | | | | | $0.50 | $3 |
211
214
  | `llmgateway/qwen35-397b-a17b` | 262K | | | | | | $0.60 | $4 |
215
+ | `llmgateway/qwen37-max` | 1.0M | | | | | | $3 | $8 |
212
216
  | `llmgateway/qwq-plus` | 131K | | | | | | $0.80 | $2 |
213
217
  | `llmgateway/seed-1-6-250615` | 256K | | | | | | $0.25 | $2 |
214
218
  | `llmgateway/seed-1-6-250915` | 256K | | | | | | $0.25 | $2 |
@@ -66,6 +66,7 @@ for await (const chunk of stream) {
66
66
  | `opencode/gpt-5.4-pro` | 1.1M | | | | | | $30 | $180 |
67
67
  | `opencode/gpt-5.5` | 1.1M | | | | | | $5 | $30 |
68
68
  | `opencode/gpt-5.5-pro` | 1.1M | | | | | | $30 | $180 |
69
+ | `opencode/grok-build-0.1` | 256K | | | | | | $1 | $2 |
69
70
  | `opencode/kimi-k2.5` | 262K | | | | | | $0.60 | $3 |
70
71
  | `opencode/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
71
72
  | `opencode/minimax-m2.5` | 205K | | | | | | $0.30 | $1 |
@@ -73,7 +74,6 @@ for await (const chunk of stream) {
73
74
  | `opencode/nemotron-3-super-free` | 205K | | | | | | — | — |
74
75
  | `opencode/qwen3.5-plus` | 262K | | | | | | $0.20 | $1 |
75
76
  | `opencode/qwen3.6-plus` | 262K | | | | | | $0.50 | $3 |
76
- | `opencode/qwen3.6-plus-free` | 262K | | | | | | — | — |
77
77
 
78
78
  ## Advanced configuration
79
79
 
@@ -103,7 +103,7 @@ const agent = new Agent({
103
103
  model: ({ requestContext }) => {
104
104
  const useAdvanced = requestContext.task === "complex";
105
105
  return useAdvanced
106
- ? "opencode/qwen3.6-plus-free"
106
+ ? "opencode/qwen3.6-plus"
107
107
  : "opencode/big-pickle";
108
108
  }
109
109
  });
@@ -1,6 +1,6 @@
1
1
  # ![Scaleway logo](https://models.dev/logos/scaleway.svg)Scaleway
2
2
 
3
- Access 16 Scaleway models through Mastra's model router. Authentication is handled automatically using the `SCALEWAY_API_KEY` environment variable.
3
+ Access 17 Scaleway models through Mastra's model router. Authentication is handled automatically using the `SCALEWAY_API_KEY` environment variable.
4
4
 
5
5
  Learn more in the [Scaleway documentation](https://www.scaleway.com/en/docs/generative-apis/).
6
6
 
@@ -41,6 +41,7 @@ for await (const chunk of stream) {
41
41
  | `scaleway/gpt-oss-120b` | 128K | | | | | | $0.15 | $0.60 |
42
42
  | `scaleway/llama-3.1-8b-instruct` | 128K | | | | | | $0.20 | $0.20 |
43
43
  | `scaleway/llama-3.3-70b-instruct` | 100K | | | | | | $0.90 | $0.90 |
44
+ | `scaleway/mistral-medium-3.5-128b` | 256K | | | | | | $2 | $8 |
44
45
  | `scaleway/mistral-nemo-instruct-2407` | 128K | | | | | | $0.20 | $0.20 |
45
46
  | `scaleway/mistral-small-3.2-24b-instruct-2506` | 128K | | | | | | $0.15 | $0.35 |
46
47
  | `scaleway/pixtral-12b-2409` | 128K | | | | | | $0.20 | $0.20 |
@@ -0,0 +1,72 @@
1
+ # ![StepFun logo](https://models.dev/logos/stepfun-ai.svg)StepFun
2
+
3
+ Access 2 StepFun models through Mastra's model router. Authentication is handled automatically using the `STEPFUN_API_KEY` environment variable.
4
+
5
+ Learn more in the [StepFun documentation](https://platform.stepfun.ai/docs/en/step-plan/integrations/open-code).
6
+
7
+ ```bash
8
+ STEPFUN_API_KEY=your-api-key
9
+ ```
10
+
11
+ ```typescript
12
+ import { Agent } from "@mastra/core/agent";
13
+
14
+ const agent = new Agent({
15
+ id: "my-agent",
16
+ name: "My Agent",
17
+ instructions: "You are a helpful assistant",
18
+ model: "stepfun-ai/step-3.5-flash"
19
+ });
20
+
21
+ // Generate a response
22
+ const response = await agent.generate("Hello!");
23
+
24
+ // Stream a response
25
+ const stream = await agent.stream("Tell me a story");
26
+ for await (const chunk of stream) {
27
+ console.log(chunk);
28
+ }
29
+ ```
30
+
31
+ > **Info:** Mastra uses the OpenAI-compatible `/chat/completions` endpoint. Some provider-specific features may not be available. Check the [StepFun documentation](https://platform.stepfun.ai/docs/en/step-plan/integrations/open-code) for details.
32
+
33
+ ## Models
34
+
35
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
36
+ | -------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
37
+ | `stepfun-ai/step-3.5-flash` | 256K | | | | | | $0.10 | $0.29 |
38
+ | `stepfun-ai/step-3.5-flash-2603` | 256K | | | | | | $0.10 | $0.30 |
39
+
40
+ ## Advanced configuration
41
+
42
+ ### Custom headers
43
+
44
+ ```typescript
45
+ const agent = new Agent({
46
+ id: "custom-agent",
47
+ name: "custom-agent",
48
+ model: {
49
+ url: "https://api.stepfun.ai/step_plan/v1",
50
+ id: "stepfun-ai/step-3.5-flash",
51
+ apiKey: process.env.STEPFUN_API_KEY,
52
+ headers: {
53
+ "X-Custom-Header": "value"
54
+ }
55
+ }
56
+ });
57
+ ```
58
+
59
+ ### Dynamic model selection
60
+
61
+ ```typescript
62
+ const agent = new Agent({
63
+ id: "dynamic-agent",
64
+ name: "Dynamic Agent",
65
+ model: ({ requestContext }) => {
66
+ const useAdvanced = requestContext.task === "complex";
67
+ return useAdvanced
68
+ ? "stepfun-ai/step-3.5-flash-2603"
69
+ : "stepfun-ai/step-3.5-flash";
70
+ }
71
+ });
72
+ ```
@@ -1,6 +1,6 @@
1
1
  # ![xAI logo](https://models.dev/logos/xai.svg)xAI
2
2
 
3
- Access 16 xAI models through Mastra's model router. Authentication is handled automatically using the `XAI_API_KEY` environment variable.
3
+ Access 8 xAI models through Mastra's model router. Authentication is handled automatically using the `XAI_API_KEY` environment variable.
4
4
 
5
5
  Learn more in the [xAI documentation](https://docs.x.ai/docs/models).
6
6
 
@@ -15,7 +15,7 @@ const agent = new Agent({
15
15
  id: "my-agent",
16
16
  name: "My Agent",
17
17
  instructions: "You are a helpful assistant",
18
- model: "xai/grok-2"
18
+ model: "xai/grok-4.20-0309-non-reasoning"
19
19
  });
20
20
 
21
21
  // Generate a response
@@ -32,22 +32,14 @@ for await (const chunk of stream) {
32
32
 
33
33
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
34
34
  | ---------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
35
- | `xai/grok-2` | 131K | | | | | | $2 | $10 |
36
- | `xai/grok-2-1212` | 131K | | | | | | $2 | $10 |
37
- | `xai/grok-2-latest` | 131K | | | | | | $2 | $10 |
38
- | `xai/grok-2-vision` | 8K | | | | | | $2 | $10 |
39
- | `xai/grok-2-vision-1212` | 8K | | | | | | $2 | $10 |
40
- | `xai/grok-2-vision-latest` | 8K | | | | | | $2 | $10 |
41
- | `xai/grok-4.20-0309-non-reasoning` | 2.0M | | | | | | $2 | $6 |
42
- | `xai/grok-4.20-0309-reasoning` | 2.0M | | | | | | $2 | $6 |
43
- | `xai/grok-4.20-multi-agent-0309` | 2.0M | | | | | | $2 | $6 |
35
+ | `xai/grok-4.20-0309-non-reasoning` | 2.0M | | | | | | $1 | $3 |
36
+ | `xai/grok-4.20-0309-reasoning` | 2.0M | | | | | | $1 | $3 |
37
+ | `xai/grok-4.20-multi-agent-0309` | 2.0M | | | | | | $1 | $3 |
44
38
  | `xai/grok-4.3` | 1.0M | | | | | | $1 | $3 |
45
- | `xai/grok-beta` | 131K | | | | | | $5 | $15 |
46
39
  | `xai/grok-build-0.1` | 256K | | | | | | $1 | $2 |
47
- | `xai/grok-imagine-image` | 1K | | | | | | — | — |
48
- | `xai/grok-imagine-image-quality` | 1K | | | | | | — | — |
40
+ | `xai/grok-imagine-image` | 8K | | | | | | — | — |
41
+ | `xai/grok-imagine-image-quality` | 8K | | | | | | — | — |
49
42
  | `xai/grok-imagine-video` | 1K | | | | | | — | — |
50
- | `xai/grok-vision-beta` | 8K | | | | | | $5 | $15 |
51
43
 
52
44
  ## Advanced configuration
53
45
 
@@ -58,7 +50,7 @@ const agent = new Agent({
58
50
  id: "custom-agent",
59
51
  name: "custom-agent",
60
52
  model: {
61
- id: "xai/grok-2",
53
+ id: "xai/grok-4.20-0309-non-reasoning",
62
54
  apiKey: process.env.XAI_API_KEY,
63
55
  headers: {
64
56
  "X-Custom-Header": "value"
@@ -76,8 +68,8 @@ const agent = new Agent({
76
68
  model: ({ requestContext }) => {
77
69
  const useAdvanced = requestContext.task === "complex";
78
70
  return useAdvanced
79
- ? "xai/grok-vision-beta"
80
- : "xai/grok-2";
71
+ ? "xai/grok-imagine-video"
72
+ : "xai/grok-4.20-0309-non-reasoning";
81
73
  }
82
74
  });
83
75
  ```
@@ -29,6 +29,7 @@ Direct access to individual AI model providers. Each provider offers unique mode
29
29
  - [CloudFerro Sherlock](https://mastra.ai/models/providers/cloudferro-sherlock)
30
30
  - [Cloudflare Workers AI](https://mastra.ai/models/providers/cloudflare-workers-ai)
31
31
  - [Cortecs](https://mastra.ai/models/providers/cortecs)
32
+ - [CrofAI](https://mastra.ai/models/providers/crof)
32
33
  - [D.Run (China)](https://mastra.ai/models/providers/drun)
33
34
  - [Databricks](https://mastra.ai/models/providers/databricks)
34
35
  - [Deep Infra](https://mastra.ai/models/providers/deepinfra)
@@ -47,6 +48,7 @@ Direct access to individual AI model providers. Each provider offers unique mode
47
48
  - [Hugging Face](https://mastra.ai/models/providers/huggingface)
48
49
  - [iFlow](https://mastra.ai/models/providers/iflowcn)
49
50
  - [Inception](https://mastra.ai/models/providers/inception)
51
+ - [Inceptron](https://mastra.ai/models/providers/inceptron)
50
52
  - [Inference](https://mastra.ai/models/providers/inference)
51
53
  - [IO.NET](https://mastra.ai/models/providers/io-net)
52
54
  - [Jiekou.AI](https://mastra.ai/models/providers/jiekou)
@@ -96,6 +98,7 @@ Direct access to individual AI model providers. Each provider offers unique mode
96
98
  - [SiliconFlow (China)](https://mastra.ai/models/providers/siliconflow-cn)
97
99
  - [STACKIT](https://mastra.ai/models/providers/stackit)
98
100
  - [StepFun](https://mastra.ai/models/providers/stepfun)
101
+ - [StepFun](https://mastra.ai/models/providers/stepfun-ai)
99
102
  - [submodel](https://mastra.ai/models/providers/submodel)
100
103
  - [Synthetic](https://mastra.ai/models/providers/synthetic)
101
104
  - [Tencent Coding Plan (China)](https://mastra.ai/models/providers/tencent-coding-plan)
@@ -39,7 +39,7 @@ Use stagehand_extract to get data from pages.`,
39
39
 
40
40
  **projectId** (`string`): Browserbase project ID. Required when env is 'BROWSERBASE'.
41
41
 
42
- **model** (`string | ModelConfiguration`): Model configuration for AI operations. Can be a string like 'openai/gpt-5.4' or an object with modelName, apiKey, and baseURL. (Default: `'openai/gpt-5.4'`)
42
+ **model** (`string | ModelConfiguration`): Model configuration for AI operations. Can be a string like '\_\_GATEWAY\_OPENAI\_MODEL\_\_' or an object with modelName, apiKey, and baseURL. (Default: `'openai/gpt-5.4'`)
43
43
 
44
44
  **selfHeal** (`boolean`): Enable self-healing selectors. When enabled, Stagehand uses AI to find elements even when initial selectors fail. (Default: `true`)
45
45
 
@@ -464,6 +464,37 @@ response.processDataStream({
464
464
  })
465
465
  ```
466
466
 
467
+ ### Tracing client tools
468
+
469
+ When `@mastra/observability` is installed and configured on the server, a client-side tool records a `CLIENT_TOOL_CALL` span as a child of the current `AGENT_RUN` span. The server creates that span when the model emits the client tool call, injects a W3C trace carrier into the outgoing tool-call chunk, and ends the span once the tool arguments are available. Without server-side observability configured, client tool tracing is a no-op.
470
+
471
+ The client SDK also measures the wall-clock duration of each client tool's `execute` function and ships it back to the server, where it's emitted as a `mastra_tool_duration_ms` metric with `toolType: "client"`.
472
+
473
+ For richer telemetry from inside your tool's `execute` function, use the `observe` helper on the execution context to add child spans and structured logs:
474
+
475
+ ```typescript
476
+ import { createTool } from '@mastra/client-js'
477
+ import { z } from 'zod'
478
+
479
+ const fetchUserTool = createTool({
480
+ id: 'fetchUser',
481
+ description: 'Fetches the current user profile',
482
+ inputSchema: z.object({ userId: z.string() }),
483
+ execute: async ({ userId }, { observe }) => {
484
+ observe.log('info', 'fetching user', { userId })
485
+ const user = await observe.span('http GET /users', async () => {
486
+ const res = await fetch(`/api/users/${userId}`)
487
+ return res.json()
488
+ })
489
+ return user
490
+ },
491
+ })
492
+ ```
493
+
494
+ `observe` is always available — when no tracing context is active (e.g. running outside a traced agent), `span` runs the function directly and `log` is a no-op. No null-checking needed.
495
+
496
+ The SDK serializes everything the collector buffered as OTLP/JSON and ships it back in the next request body. The server's `@mastra/observability` package validates that the spans belong to the correct trace (preventing cross-trace injection) and forwards each span/log into the same observability bus that server-side telemetry uses. Your existing exporters pick them up automatically after observability is configured.
497
+
467
498
  ## Stored agents
468
499
 
469
500
  Stored agents are agent configurations stored in a database that can be created, updated, and deleted at runtime. They reference primitives (tools, workflows, other agents, scorers) by key, which are resolved from the Mastra registry when the agent is instantiated. Memory is configured inline as a `SerializedMemoryConfig` object with options such as `lastMessages` and `semanticRecall`.
@@ -547,7 +547,7 @@ import { createNoiseSensitivityScorerLLM } from '@mastra/evals'
547
547
  async function compareModelRobustness() {
548
548
  const models = [
549
549
  { name: 'GPT-5.4', model: 'openai/gpt-5.4' },
550
- { name: 'GPT-5.4-mini', model: 'openai/gpt-5.4-mini' },
550
+ { name: 'GPT-5.4-mini', model: 'openai/gpt-5-mini' },
551
551
  { name: 'Claude', model: 'anthropic/claude-opus-4-6' },
552
552
  ]
553
553
 
@@ -656,7 +656,7 @@ const modelId = harness.getReflectorModelId()
656
656
  Switch the observer model. Persists the setting to thread metadata and emits an `om_model_changed` event.
657
657
 
658
658
  ```typescript
659
- await harness.switchObserverModel({ modelId: 'anthropic/claude-haiku-3.5' })
659
+ await harness.switchObserverModel({ modelId: 'anthropic/claude-haiku-4-5' })
660
660
  ```
661
661
 
662
662
  #### `switchReflectorModel({ modelId })`
@@ -664,7 +664,7 @@ await harness.switchObserverModel({ modelId: 'anthropic/claude-haiku-3.5' })
664
664
  Switch the reflector model. Persists the setting to thread metadata and emits an `om_model_changed` event.
665
665
 
666
666
  ```typescript
667
- await harness.switchReflectorModel({ modelId: 'anthropic/claude-haiku-3.5' })
667
+ await harness.switchReflectorModel({ modelId: 'anthropic/claude-haiku-4-5' })
668
668
  ```
669
669
 
670
670
  #### `getObservationThreshold()`
@@ -702,7 +702,10 @@ Set the subagent model ID. Pass an `agentType` to set a per-type override, or om
702
702
  await harness.setSubagentModelId({ modelId: 'anthropic/claude-sonnet-4-6' })
703
703
 
704
704
  // Set per-type model
705
- await harness.setSubagentModelId({ modelId: 'anthropic/claude-haiku-3.5', agentType: 'explore' })
705
+ await harness.setSubagentModelId({
706
+ modelId: 'anthropic/claude-haiku-4-5',
707
+ agentType: 'explore',
708
+ })
706
709
  ```
707
710
 
708
711
  ### Forked subagents
@@ -674,7 +674,7 @@ import { ModelByInputTokens } from '@mastra/memory'
674
674
  const selector = new ModelByInputTokens({
675
675
  upTo: {
676
676
  10_000: 'google/gemini-2.5-flash', // Fast for small inputs
677
- 40_000: 'openai/gpt-5.4-mini', // Stronger for medium inputs
677
+ 40_000: 'openai/gpt-5-mini', // Stronger for medium inputs
678
678
  1_000_000: 'openai/gpt-5.4', // Most capable for large inputs
679
679
  },
680
680
  })
@@ -146,6 +146,7 @@ The exporter sets these standard OpenTelemetry attributes:
146
146
 
147
147
  - `sentry.origin`: `auto.ai.mastra` (identifies spans from Mastra)
148
148
  - `ai.span.type`: Mastra span type
149
+ - `gen_ai.conversation.id`: Chat thread identifier, set from `metadata.threadId` to group spans in Sentry's Conversations view
149
150
 
150
151
  **MODEL\_GENERATION spans:**
151
152
 
@@ -43,6 +43,7 @@ interface SpanTypeMap {
43
43
  MODEL_STEP: ModelStepAttributes
44
44
  MODEL_CHUNK: ModelChunkAttributes
45
45
  TOOL_CALL: ToolCallAttributes
46
+ CLIENT_TOOL_CALL: ClientToolCallAttributes
46
47
  MCP_TOOL_CALL: MCPToolCallAttributes
47
48
  PROCESSOR_RUN: ProcessorRunAttributes
48
49
  WORKFLOW_STEP: WorkflowStepAttributes
@@ -255,6 +256,18 @@ enum SpanType {
255
256
  /** Function/tool execution with inputs, outputs, errors */
256
257
  TOOL_CALL = 'tool_call',
257
258
 
259
+ /**
260
+ * Client-side tool execution marker. The server creates this span
261
+ * when the model emits a client tool call, injects its W3C carrier
262
+ * into the outgoing tool-call chunk, then ends the span once tool
263
+ * args are available. Child spans/logs from the client SDK flow back
264
+ * as OTLP/JSON via the ClientObservabilityProxy interface in
265
+ * @mastra/observability and parent themselves under this span.
266
+ * See the "Client tools" section in the @mastra/client-js reference
267
+ * for the full flow.
268
+ */
269
+ CLIENT_TOOL_CALL = 'client_tool_call',
270
+
258
271
  /** Workflow run - root span for workflow processes */
259
272
  WORKFLOW_RUN = 'workflow_run',
260
273
 
@@ -56,7 +56,7 @@ costGuard.onViolation = ({ detail }) => {
56
56
 
57
57
  const agent = new Agent({
58
58
  name: 'my-agent',
59
- model: 'openai/gpt-5-nano',
59
+ model: '__OPENAI_MODEL_NANO__',
60
60
  processors: {
61
61
  input: [costGuard],
62
62
  },
@@ -318,7 +318,7 @@ processInputStep?<TTripwireMetadata = unknown>(
318
318
 
319
319
  The object form can return any combination of these properties:
320
320
 
321
- **model** (`LanguageModelV2 | string`): Change the model for this step. Can be a model instance or router ID like 'openai/gpt-5.4'.
321
+ **model** (`LanguageModelV2 | string`): Change the model for this step. Can be a model instance or router ID like '\_\_GATEWAY\_OPENAI\_MODEL\_\_'.
322
322
 
323
323
  **toolChoice** (`ToolChoice`): Change tool selection behavior for this step.
324
324
 
@@ -49,7 +49,7 @@ import { RegexFilterProcessor } from '@mastra/core/processors'
49
49
 
50
50
  const agent = new Agent({
51
51
  name: 'my-agent',
52
- model: 'openai/gpt-5-nano',
52
+ model: '__OPENAI_MODEL_NANO__',
53
53
  processors: {
54
54
  input: [
55
55
  new RegexFilterProcessor({
@@ -74,7 +74,7 @@ const agent = new Agent({
74
74
  name: 'skill-agent',
75
75
  instructions:
76
76
  'You are a helpful assistant. Use search_skills to find relevant skills, then load_skill to load their instructions.',
77
- model: 'openai/gpt-4o',
77
+ model: 'openai/gpt-5.4',
78
78
  workspace,
79
79
  inputProcessors: [skillSearch],
80
80
  })
@@ -114,7 +114,7 @@ import { Mastra } from '@mastra/core/mastra'
114
114
  greeter: {
115
115
  name: 'greeter',
116
116
  description: 'Greets the user',
117
- model: config.get('MASTRA_MODEL', 'openai/gpt-4o-mini'),
117
+ model: config.get('MASTRA_MODEL', '__OPENAI_MODEL_MINI__'),
118
118
  },
119
119
  },
120
120
  }),
@@ -241,7 +241,7 @@ export const dsqlAgent = new Agent({
241
241
  name: 'DSQL Agent',
242
242
  instructions:
243
243
  'You are an AI agent with the ability to automatically recall memories from previous interactions.',
244
- model: 'openai/gpt-5.1',
244
+ model: 'openai/gpt-5.4',
245
245
  memory: new Memory({
246
246
  storage: new DSQLStore({
247
247
  id: 'dsql-agent-storage',
@@ -181,7 +181,7 @@ export const redisAgent = new Agent({
181
181
  name: 'Redis Agent',
182
182
  instructions:
183
183
  'You are an AI agent with the ability to automatically recall memories from previous interactions.',
184
- model: 'openai/gpt-4o',
184
+ model: 'openai/gpt-5.4',
185
185
  memory: new Memory({
186
186
  storage: new RedisStore({
187
187
  id: 'redis-agent-storage',
@@ -49,7 +49,7 @@ const workspace = new Workspace({
49
49
  const agent = new Agent({
50
50
  id: 'drive-agent',
51
51
  name: 'Drive Agent',
52
- model: 'openai/gpt-4o-mini',
52
+ model: '__OPENAI_MODEL_MINI__',
53
53
  workspace,
54
54
  })
55
55
  ```
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # @mastra/mcp-docs-server
2
2
 
3
+ ## 1.1.40-alpha.8
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`b7286f4`](https://github.com/mastra-ai/mastra/commit/b7286f4308267f5fd70e6bfee10dba9472640906), [`a481027`](https://github.com/mastra-ai/mastra/commit/a481027b549ba1018414990c8f045eaee7b9f413), [`801baa0`](https://github.com/mastra-ai/mastra/commit/801baa07cccdbaec1d00942a92bdc831111744a2), [`b3c3b18`](https://github.com/mastra-ai/mastra/commit/b3c3b189121489a3a51a8fd8204b569be9a89fe5)]:
8
+ - @mastra/core@1.37.0-alpha.4
9
+
10
+ ## 1.1.40-alpha.6
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`ac442a4`](https://github.com/mastra-ai/mastra/commit/ac442a42fda0354ac2bcea772bf6691cb3e9dbb3), [`1e5c067`](https://github.com/mastra-ai/mastra/commit/1e5c067d2e20a781af670578180d1ee249806d41), [`008baaf`](https://github.com/mastra-ai/mastra/commit/008baafd8d851f831407045aebead5a2e3342eff), [`8116436`](https://github.com/mastra-ai/mastra/commit/81164363eb225d774e41ff27da6a5ea611406688), [`c27c4b9`](https://github.com/mastra-ai/mastra/commit/c27c4b9f137df5414fca4e45896aceccff6b0ed5), [`08b3b59`](https://github.com/mastra-ai/mastra/commit/08b3b590dd960dee6c9a6e39272f8927d803db6e)]:
15
+ - @mastra/core@1.37.0-alpha.3
16
+
17
+ ## 1.1.40-alpha.4
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [[`df1947a`](https://github.com/mastra-ai/mastra/commit/df1947affa40f742067542251fac7ca759492ef4), [`ee59b74`](https://github.com/mastra-ai/mastra/commit/ee59b743ce73ad11784b4d9c6fbba8568edee1c8), [`a97b1a0`](https://github.com/mastra-ai/mastra/commit/a97b1a0abaed83946c3519d1e0f680d0815b8a67)]:
22
+ - @mastra/core@1.37.0-alpha.2
23
+
24
+ ## 1.1.40-alpha.2
25
+
26
+ ### Patch Changes
27
+
28
+ - Updated dependencies [[`2f5f58a`](https://github.com/mastra-ai/mastra/commit/2f5f58a9a8bb13bcdc6789db221eef7c9bf1ff02)]:
29
+ - @mastra/core@1.37.0-alpha.1
30
+
31
+ ## 1.1.40-alpha.0
32
+
33
+ ### Patch Changes
34
+
35
+ - Updated dependencies [[`cfa2e3a`](https://github.com/mastra-ai/mastra/commit/cfa2e3a5292322f48bb28b4d257d631da7f9d3cc)]:
36
+ - @mastra/core@1.36.1-alpha.0
37
+
3
38
  ## 1.1.39
4
39
 
5
40
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mcp-docs-server",
3
- "version": "1.1.39",
3
+ "version": "1.1.40-alpha.10",
4
4
  "description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -29,7 +29,7 @@
29
29
  "jsdom": "^26.1.0",
30
30
  "local-pkg": "^1.1.2",
31
31
  "zod": "^4.3.6",
32
- "@mastra/core": "1.36.0",
32
+ "@mastra/core": "1.37.0-alpha.4",
33
33
  "@mastra/mcp": "^1.8.0"
34
34
  },
35
35
  "devDependencies": {
@@ -48,7 +48,7 @@
48
48
  "vitest": "4.1.5",
49
49
  "@internal/lint": "0.0.97",
50
50
  "@internal/types-builder": "0.0.72",
51
- "@mastra/core": "1.36.0"
51
+ "@mastra/core": "1.37.0-alpha.4"
52
52
  },
53
53
  "homepage": "https://mastra.ai",
54
54
  "repository": {