@mastra/mcp-docs-server 1.2.28-alpha.3 → 1.2.28-alpha.6

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 (48) hide show
  1. package/.docs/docs/agents/guardrails.md +1 -1
  2. package/.docs/docs/agents/human-in-the-loop.md +38 -1
  3. package/.docs/docs/observability/tracing/overview.md +19 -0
  4. package/.docs/docs/skills.md +17 -0
  5. package/.docs/docs/workflows/control-flow.md +41 -0
  6. package/.docs/integrations/deploy/inngest.md +19 -0
  7. package/.docs/models/gateways/merge-gateway.md +3 -1
  8. package/.docs/models/gateways/netlify.md +4 -1
  9. package/.docs/models/gateways/openrouter.md +7 -1
  10. package/.docs/models/gateways/vercel.md +7 -1
  11. package/.docs/models/index.md +1 -1
  12. package/.docs/models/providers/cline-pass.md +21 -18
  13. package/.docs/models/providers/crossmodel.md +4 -1
  14. package/.docs/models/providers/deepseek.md +4 -6
  15. package/.docs/models/providers/digitalocean.md +4 -1
  16. package/.docs/models/providers/edenai.md +4 -1
  17. package/.docs/models/providers/kenari.md +2 -1
  18. package/.docs/models/providers/kilo.md +17 -11
  19. package/.docs/models/providers/llmgateway-providers.md +4 -1
  20. package/.docs/models/providers/llmgateway.md +4 -1
  21. package/.docs/models/providers/nano-gpt.md +7 -1
  22. package/.docs/models/providers/ofox.md +5 -1
  23. package/.docs/models/providers/openai.md +3 -1
  24. package/.docs/models/providers/opencode.md +5 -1
  25. package/.docs/models/providers/pioneer.md +3 -1
  26. package/.docs/models/providers/requesty.md +7 -1
  27. package/.docs/models/providers/stepfun-ai-step-plan.md +3 -2
  28. package/.docs/models/providers/stepfun.md +2 -1
  29. package/.docs/models/providers/wandb.md +2 -1
  30. package/.docs/reference/agents/generate.md +2 -0
  31. package/.docs/reference/agents/network.md +2 -0
  32. package/.docs/reference/classifier/classifier.md +19 -0
  33. package/.docs/reference/index.md +2 -0
  34. package/.docs/reference/observability/tracing/interfaces.md +7 -0
  35. package/.docs/reference/observability/tracing/trace-query.md +26 -1
  36. package/.docs/reference/processors/classifier-processor.md +201 -0
  37. package/.docs/reference/streaming/agents/stream.md +2 -0
  38. package/.docs/reference/streaming/workflows/resumeStream.md +2 -0
  39. package/.docs/reference/streaming/workflows/stream.md +2 -0
  40. package/.docs/reference/workflows/dynamic-workflow-definition.md +32 -3
  41. package/.docs/reference/workflows/run-methods/restart.md +2 -0
  42. package/.docs/reference/workflows/run-methods/resume.md +2 -0
  43. package/.docs/reference/workflows/run-methods/start.md +2 -0
  44. package/.docs/reference/workflows/run-methods/startAsync.md +2 -0
  45. package/.docs/reference/workflows/run-methods/timeTravel.md +2 -0
  46. package/.docs/reference/workflows/step.md +42 -1
  47. package/.docs/reference/workflows/workflow-methods/classifier.md +89 -0
  48. package/package.json +3 -3
@@ -55,7 +55,7 @@ export const secureAgent = new Agent({
55
55
  })
56
56
  ```
57
57
 
58
- Model-backed guardrail processors default to `errorStrategy: 'warn'`, which logs internal model failures and continues with the processor's fallback. Use `errorStrategy: 'strict'` when unchecked content must not proceed if the guardrail model is unavailable or returns invalid output. Strict mode stops processing with a tripwire.
58
+ Model-backed guardrail processors other than `ClassifierProcessor` default to `errorStrategy: 'warn'`, which logs internal model failures and continues with the processor's fallback. Use `errorStrategy: 'strict'` when unchecked content must not proceed if the guardrail model is unavailable or returns invalid output. Strict mode stops processing with a tripwire.
59
59
 
60
60
  Visit [`PromptInjectionDetector()`](https://mastra.ai/reference/processors/prompt-injection-detector) reference for a full list of configuration options.
61
61
 
@@ -116,7 +116,44 @@ const stream = await agent.stream('Clean up old records', {
116
116
  })
117
117
  ```
118
118
 
119
- A tool's own `requireApproval` setting takes precedence over the function above. Its rule decides whether that tool needs approval. If the function throws, the call requires approval as a fail-safe.
119
+ The function can be asynchronous. For decisions that depend on the tool name and arguments, use a [classifier](https://mastra.ai/reference/classifier/classifier) to estimate whether the call needs human review:
120
+
121
+ ```typescript
122
+ import { Classifier } from '@mastra/core/classifier'
123
+ import { model } from '../models/evaluation-model'
124
+ import { agent } from './agent'
125
+
126
+ const approvalClassifier = new Classifier({
127
+ id: 'tool-approval-classifier',
128
+ model,
129
+ questions: {
130
+ requiresApproval: {
131
+ type: 'boolean',
132
+ instructions:
133
+ 'Does this tool call need human approval because it is destructive, irreversible, expensive, or handles sensitive data?',
134
+ },
135
+ },
136
+ })
137
+
138
+ const stream = await agent.stream('Clean up old records', {
139
+ requireToolApproval: async ({ toolName, args }) => {
140
+ const result = await approvalClassifier.evaluate({
141
+ state: {
142
+ toolName,
143
+ argumentNames: Object.keys(args),
144
+ },
145
+ })
146
+
147
+ return result.answers.requiresApproval.probability >= 0.7
148
+ },
149
+ })
150
+ ```
151
+
152
+ The example sends argument names rather than values because the classifier forwards its state to the configured evaluation model. If the decision requires argument values, redact sensitive data first or use an evaluation model and provider that meet the protected tool's data-handling requirements.
153
+
154
+ Returning `true` pauses the tool call for human approval. It doesn't approve or decline the call automatically. Choose a threshold that matches the risk of the tools available to the agent. If this `requireToolApproval` function throws, it defaults to requiring approval.
155
+
156
+ The runtime then combines that result with the tool's `requireApproval` setting. A boolean `true` requires approval, while `false` doesn't disable approval required by `requireToolApproval`. A tool-level `requireApproval` function is authoritative and replaces the combined result for that tool.
120
157
 
121
158
  > **Note:** Function-based `requireToolApproval` is only available on regular `stream()` / `generate()` calls. Durable agents and stored agents persist their options, and a function can't be serialized, so they accept only a boolean. If you pass a function in those contexts it falls back to requiring approval for every tool call.
122
159
 
@@ -289,6 +289,25 @@ const result = await agent.generate([{ role: 'user', content: 'Analyze this' }],
289
289
  - **Priority levels**: `"priority-high"`, `"priority-low"`
290
290
  - **Experiments**: `"experiment-v1"`, `"control-group"`, `"treatment-a"`
291
291
 
292
+ ### Naming a trace
293
+
294
+ Every run of the same agent or workflow gets the same root span name by default, for example `workflow run: 'skill-analyze'`. When one workflow runs over many subjects, set `rootSpanName` in `tracingOptions` to label each run. The name replaces the root span name in Studio's trace list and in exporters that display span names.
295
+
296
+ ```ts
297
+ const run = await mastra.getWorkflow('skillAnalyze').createRun()
298
+
299
+ await run.start({
300
+ inputData: { skillId: 'typescript' },
301
+ tracingOptions: {
302
+ rootSpanName: 'skill-analyze: typescript',
303
+ },
304
+ })
305
+ ```
306
+
307
+ The name applies to the root span only. Child spans keep their default names. Entity filters keep working because the workflow or agent id is stored separately as `entityId` and `entityName`.
308
+
309
+ OpenTelemetry-based exporters and the Langfuse exporter build their span and trace names from the entity id, so they're not affected. To name a Langfuse trace, set `metadata.traceName` as described in the [Langfuse integration](https://mastra.ai/integrations/observability/langfuse).
310
+
292
311
  ### Hiding sensitive input/output
293
312
 
294
313
  When processing sensitive data, you may want to prevent input and output values from being logged to your observability platforms. Use `hideInput` and `hideOutput` in `tracingOptions` to exclude this data from all spans in a trace:
@@ -193,6 +193,23 @@ for (const meta of allSkills) {
193
193
 
194
194
  Visit [`.getSkill()` reference](https://mastra.ai/reference/agents/getSkill) and [`.listSkills()` reference](https://mastra.ai/reference/agents/listSkills) for the full API.
195
195
 
196
+ ## Validating skills before saving
197
+
198
+ If your app writes `SKILL.md` files (from a tool, an upload, or a shell command), validate the content first with `validateSkillContent()`. It applies the same rules used when skills are loaded, including the check that `name` matches the directory name, and returns structured results instead of throwing:
199
+
200
+ ```typescript
201
+ import { validateSkillContent } from '@mastra/core/skills'
202
+
203
+ const result = validateSkillContent({ content: skillMarkdown, directoryName: 'code-review' })
204
+
205
+ if (!result.valid) {
206
+ throw new Error(`Invalid skill:\n${result.errors.join('\n')}`)
207
+ }
208
+ // result.warnings lists non-blocking issues, such as very long instructions
209
+ ```
210
+
211
+ To validate an already-parsed frontmatter object, use `validateSkillMetadata({ metadata, directoryName })`.
212
+
196
213
  ## Related
197
214
 
198
215
  - [Workspace skills](https://mastra.ai/docs/sandbox/skills)
@@ -249,6 +249,47 @@ export const testWorkflow = createWorkflow({
249
249
  .commit();
250
250
  ```
251
251
 
252
+ ### Route with a classifier
253
+
254
+ A configured classifier can produce typed answers before `.branch()`. Route on the answer field that matches each question type: `choice`, `score`, or `probability`.
255
+
256
+ ```typescript
257
+ import { Classifier } from '@mastra/core/classifier'
258
+ import { createWorkflow } from '@mastra/core/workflows'
259
+ import { z } from 'zod'
260
+
261
+ const router = new Classifier({
262
+ id: 'ticket-router',
263
+ model,
264
+ questions: {
265
+ route: {
266
+ type: 'choice',
267
+ criteria: {
268
+ billing: 'Billing, invoices, refunds, and payments',
269
+ support: 'Account access and product help',
270
+ other: 'Anything else',
271
+ },
272
+ },
273
+ },
274
+ })
275
+
276
+ export const ticketTriage = createWorkflow({
277
+ id: 'ticket-triage',
278
+ inputSchema: z.object({ message: z.string() }),
279
+ outputSchema: z.any(),
280
+ })
281
+ .map({ message: { initData: true, path: 'message' } })
282
+ .classifier(router)
283
+ .branch([
284
+ [async ({ inputData }) => inputData.answers.route.choice === 'billing', billingStep],
285
+ [async ({ inputData }) => inputData.answers.route.choice === 'support', supportStep],
286
+ [async ({ inputData }) => inputData.answers.route.choice === 'other', fallbackStep],
287
+ ])
288
+ .commit()
289
+ ```
290
+
291
+ The `choice` field retains the configured criteria-key union, so `inputData.answers.route.choice` is typed as `'billing' | 'support' | 'other'`. Score answers expose `score`. Boolean answers expose the `P(true)` value as `probability`. Apply an explicit threshold when routing.
292
+
252
293
  ### Output structure
253
294
 
254
295
  When using conditional branching, only one branch executes based on which condition evaluates to `true` first. The output structure is similar to `.parallel()`, where the result is keyed by the executed step's `id`.
@@ -628,6 +628,25 @@ const workflow = createWorkflow({
628
628
  })
629
629
  ```
630
630
 
631
+ ### Retries
632
+
633
+ Set `retries` to let a run survive a failed request to your app, such as a process restart, redeploy, or out-of-memory crash. Inngest calls the function again, skips the steps that already finished, and continues from the step that was interrupted:
634
+
635
+ ```ts
636
+ const workflow = createWorkflow({
637
+ id: 'long-running-workflow',
638
+ inputSchema: z.object({ jobId: z.string() }),
639
+ outputSchema: z.object({ done: z.boolean() }),
640
+ steps: [longRunningStep],
641
+ // Re-invoke up to 3 times after a failed request
642
+ retries: 3,
643
+ })
644
+ ```
645
+
646
+ `retries` defaults to `0`. Errors thrown by your step code are retried per step with `retryConfig` or the step's `retries` option, not at the function level. `createInngestAgent()` accepts the same `retries` option and applies it to every Inngest function the durable agent creates.
647
+
648
+ A nested workflow runs as its own Inngest function and uses its own `retries` setting. It doesn't inherit the parent's value, so set `retries` on each nested workflow that should recover from a failed request.
649
+
631
650
  ### Combining flow control options
632
651
 
633
652
  Multiple flow control options can be combined in a single workflow:
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Merge Gateway logo](https://models.dev/logos/merge-gateway.svg)Merge Gateway
6
6
 
7
- Merge Gateway aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 189 models through Mastra's model router.
7
+ Merge Gateway aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 191 models through Mastra's model router.
8
8
 
9
9
  Learn more in the [Merge Gateway documentation](https://docs.merge.dev/merge-gateway).
10
10
 
@@ -162,6 +162,8 @@ ANTHROPIC_API_KEY=ant-...
162
162
  | `openai/gpt-5.6-sol` |
163
163
  | `openai/gpt-5.6-terra` |
164
164
  | `openai/gpt-6-astra` |
165
+ | `openai/gpt-6-luna` |
166
+ | `openai/gpt-6-sol` |
165
167
  | `openai/gpt-oss-120b` |
166
168
  | `openai/gpt-oss-20b` |
167
169
  | `openai/gpt-oss-safeguard-120b` |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # Netlify
6
6
 
7
- Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access 264 models through Mastra's model router.
7
+ Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access 267 models through Mastra's model router.
8
8
 
9
9
  Learn more in the [Netlify documentation](https://docs.netlify.com/build/ai-gateway/overview/).
10
10
 
@@ -137,6 +137,7 @@ ANTHROPIC_API_KEY=ant-...
137
137
  | `openrouter/bytedance-seed/seed-2.0-mini` |
138
138
  | `openrouter/bytedance/ui-tars-1.5-7b` |
139
139
  | `openrouter/cognitivecomputations/dolphin-mistral-24b-venice-edition` |
140
+ | `openrouter/cohere/command-a-plus` |
140
141
  | `openrouter/deepseek/deepseek-chat` |
141
142
  | `openrouter/deepseek/deepseek-chat-v3-0324` |
142
143
  | `openrouter/deepseek/deepseek-chat-v3.1` |
@@ -288,6 +289,8 @@ ANTHROPIC_API_KEY=ant-...
288
289
  | `openrouter/x-ai/grok-build-0.1` |
289
290
  | `openrouter/xiaomi/mimo-v2.5` |
290
291
  | `openrouter/xiaomi/mimo-v2.5-pro` |
292
+ | `openrouter/xiaomi/mimo-v2.6-flash` |
293
+ | `openrouter/xiaomi/mimo-v2.6-pro` |
291
294
  | `openrouter/z-ai/glm-4.5-air` |
292
295
  | `openrouter/z-ai/glm-4.5v` |
293
296
  | `openrouter/z-ai/glm-4.6` |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![OpenRouter logo](https://models.dev/logos/openrouter.svg)OpenRouter
6
6
 
7
- OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 376 models through Mastra's model router.
7
+ OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 382 models through Mastra's model router.
8
8
 
9
9
  Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
10
10
 
@@ -92,6 +92,7 @@ ANTHROPIC_API_KEY=ant-...
92
92
  | `bytedance/ui-tars-1.5-7b` |
93
93
  | `cognitivecomputations/dolphin-mistral-24b-venice-edition` |
94
94
  | `cohere/command-a` |
95
+ | `cohere/command-a-plus` |
95
96
  | `cohere/command-r-08-2024` |
96
97
  | `cohere/command-r-plus-08-2024` |
97
98
  | `cohere/command-r7b-12-2024` |
@@ -272,6 +273,10 @@ ANTHROPIC_API_KEY=ant-...
272
273
  | `openai/gpt-5.6-terra-pro` |
273
274
  | `openai/gpt-6-astra` |
274
275
  | `openai/gpt-6-astra-pro` |
276
+ | `openai/gpt-6-luna` |
277
+ | `openai/gpt-6-luna-pro` |
278
+ | `openai/gpt-6-sol` |
279
+ | `openai/gpt-6-sol-pro` |
275
280
  | `openai/gpt-audio` |
276
281
  | `openai/gpt-audio-mini` |
277
282
  | `openai/gpt-chat-latest` |
@@ -354,6 +359,7 @@ ANTHROPIC_API_KEY=ant-...
354
359
  | `qwen/qwen3.8-27b:free` |
355
360
  | `qwen/qwen3.8-flash` |
356
361
  | `qwen/qwen3.8-max-0902` |
362
+ | `qwen/qwen3.8-omni-flash` |
357
363
  | `rekaai/reka-edge` |
358
364
  | `rekaai/reka-flash-3` |
359
365
  | `relace/relace-apply-3` |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Vercel logo](https://models.dev/logos/vercel.svg)Vercel
6
6
 
7
- Vercel aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 379 models through Mastra's model router.
7
+ Vercel aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 385 models through Mastra's model router.
8
8
 
9
9
  Learn more in the [Vercel documentation](https://ai-sdk.dev/providers/ai-sdk-providers).
10
10
 
@@ -99,6 +99,8 @@ ANTHROPIC_API_KEY=ant-...
99
99
  | `anthropic/claude-opus-4.8-fast` |
100
100
  | `anthropic/claude-opus-5` |
101
101
  | `anthropic/claude-opus-5-fast` |
102
+ | `anthropic/claude-opus-5.5` |
103
+ | `anthropic/claude-opus-5.5-fast` |
102
104
  | `anthropic/claude-sonnet-4` |
103
105
  | `anthropic/claude-sonnet-4.5` |
104
106
  | `anthropic/claude-sonnet-4.6` |
@@ -300,6 +302,10 @@ ANTHROPIC_API_KEY=ant-...
300
302
  | `openai/gpt-5.6-terra-fast` |
301
303
  | `openai/gpt-6-astra` |
302
304
  | `openai/gpt-6-astra-fast` |
305
+ | `openai/gpt-6-luna` |
306
+ | `openai/gpt-6-luna-fast` |
307
+ | `openai/gpt-6-sol` |
308
+ | `openai/gpt-6-sol-fast` |
303
309
  | `openai/gpt-image-1` |
304
310
  | `openai/gpt-image-1-mini` |
305
311
  | `openai/gpt-image-1.5` |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # Model Providers
6
6
 
7
- Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 7507 models from 210 providers through a single API.
7
+ Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 7576 models from 210 providers through a single API.
8
8
 
9
9
  ## Features
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![ClinePass logo](https://models.dev/logos/cline-pass.svg)ClinePass
6
6
 
7
- Access 15 ClinePass models through Mastra's model router. Authentication is handled automatically using the `CLINE_API_KEY` environment variable.
7
+ Access 18 ClinePass models through Mastra's model router. Authentication is handled automatically using the `CLINE_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [ClinePass documentation](https://docs.cline.bot/getting-started/clinepass).
10
10
 
@@ -36,23 +36,26 @@ for await (const chunk of stream) {
36
36
 
37
37
  ## Models
38
38
 
39
- | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
40
- | ------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
41
- | `cline-pass/cline-pass/deepseek-v4-flash` | 1.0M | | | | | | $0.14 | $0.28 |
42
- | `cline-pass/cline-pass/deepseek-v4-pro` | 1.0M | | | | | | $2 | $3 |
43
- | `cline-pass/cline-pass/deepseek-v4.1-flash` | 1.0M | | | | | | $0.15 | $0.60 |
44
- | `cline-pass/cline-pass/glm-5.2` | 1.0M | | | | | | $1 | $4 |
45
- | `cline-pass/cline-pass/glm-5.3` | 1.0M | | | | | | $1 | $4 |
46
- | `cline-pass/cline-pass/glm-5.3-flash` | 1.0M | | | | | | $0.15 | $0.50 |
47
- | `cline-pass/cline-pass/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
48
- | `cline-pass/cline-pass/kimi-k2.7-code` | 262K | | | | | | $0.95 | $4 |
49
- | `cline-pass/cline-pass/kimi-k3` | 1.0M | | | | | | $3 | $15 |
50
- | `cline-pass/cline-pass/mimo-v2.5` | 1.0M | | | | | | $0.14 | $0.28 |
51
- | `cline-pass/cline-pass/mimo-v2.5-pro` | 1.0M | | | | | | $2 | $3 |
52
- | `cline-pass/cline-pass/minimax-m3` | 1.0M | | | | | | $0.30 | $1 |
53
- | `cline-pass/cline-pass/qwen3.7-max` | 1.0M | | | | | | $3 | $8 |
54
- | `cline-pass/cline-pass/qwen3.7-plus` | 1.0M | | | | | | $0.40 | $2 |
55
- | `cline-pass/cline-pass/qwen3.8-max` | 1.0M | | | | | | $2 | $6 |
39
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
40
+ | -------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
41
+ | `cline-pass/cline-pass/deepseek-v4-flash` | 1.0M | | | | | | $0.14 | $0.28 |
42
+ | `cline-pass/cline-pass/deepseek-v4-pro` | 1.0M | | | | | | $2 | $3 |
43
+ | `cline-pass/cline-pass/deepseek-v4.1-flash` | 1.0M | | | | | | $0.15 | $0.60 |
44
+ | `cline-pass/cline-pass/glm-5.2` | 1.0M | | | | | | $1 | $4 |
45
+ | `cline-pass/cline-pass/glm-5.3` | 1.0M | | | | | | $1 | $4 |
46
+ | `cline-pass/cline-pass/glm-5.3-flash` | 1.0M | | | | | | $0.15 | $0.50 |
47
+ | `cline-pass/cline-pass/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
48
+ | `cline-pass/cline-pass/kimi-k2.7-code` | 262K | | | | | | $0.95 | $4 |
49
+ | `cline-pass/cline-pass/kimi-k3` | 1.0M | | | | | | $3 | $15 |
50
+ | `cline-pass/cline-pass/mimo-v2.5` | 1.0M | | | | | | $0.14 | $0.28 |
51
+ | `cline-pass/cline-pass/mimo-v2.5-pro` | 1.0M | | | | | | $2 | $3 |
52
+ | `cline-pass/cline-pass/mimo-v2.6-flash` | 1.0M | | | | | | $0.14 | $0.28 |
53
+ | `cline-pass/cline-pass/mimo-v2.6-pro` | 1.0M | | | | | | $0.43 | $0.87 |
54
+ | `cline-pass/cline-pass/minimax-m3` | 1.0M | | | | | | $0.30 | $1 |
55
+ | `cline-pass/cline-pass/muse-spark-1.3-contributor` | 1.0M | | | | | | — | — |
56
+ | `cline-pass/cline-pass/qwen3.7-max` | 1.0M | | | | | | $3 | $8 |
57
+ | `cline-pass/cline-pass/qwen3.7-plus` | 1.0M | | | | | | $0.40 | $2 |
58
+ | `cline-pass/cline-pass/qwen3.8-max` | 1.0M | | | | | | $2 | $6 |
56
59
 
57
60
  Model availability, capabilities, context windows, and pricing are sourced from [models.dev](https://models.dev) and may change.
58
61
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![CrossModel logo](https://models.dev/logos/crossmodel.svg)CrossModel
6
6
 
7
- Access 63 CrossModel models through Mastra's model router. Authentication is handled automatically using the `CROSSMODEL_API_KEY` environment variable.
7
+ Access 66 CrossModel models through Mastra's model router. Authentication is handled automatically using the `CROSSMODEL_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [CrossModel documentation](https://www.crossmodel.ai/docs).
10
10
 
@@ -44,6 +44,7 @@ for await (const chunk of stream) {
44
44
  | `crossmodel/anthropic/claude-opus-4-7` | 1.0M | | | | | | $5 | $25 |
45
45
  | `crossmodel/anthropic/claude-opus-4-8` | 1.0M | | | | | | $5 | $25 |
46
46
  | `crossmodel/anthropic/claude-opus-5` | 1.0M | | | | | | $5 | $25 |
47
+ | `crossmodel/anthropic/claude-opus-5-5` | 1.0M | | | | | | $4 | $20 |
47
48
  | `crossmodel/anthropic/claude-sonnet-4-6` | 1.0M | | | | | | $3 | $15 |
48
49
  | `crossmodel/anthropic/claude-sonnet-5` | 1.0M | | | | | | $2 | $10 |
49
50
  | `crossmodel/deepseek/deepseek-v4-flash` | 1.0M | | | | | | $0.27 | $1 |
@@ -75,6 +76,8 @@ for await (const chunk of stream) {
75
76
  | `crossmodel/openai/gpt-5.6-sol` | 1.1M | | | | | | $4 | $20 |
76
77
  | `crossmodel/openai/gpt-5.6-terra` | 1.1M | | | | | | $2 | $12 |
77
78
  | `crossmodel/openai/gpt-6-astra` | 1.1M | | | | | | $10 | $50 |
79
+ | `crossmodel/openai/gpt-6-luna` | 1.1M | | | | | | $0.10 | $0.50 |
80
+ | `crossmodel/openai/gpt-6-sol` | 1.1M | | | | | | $2 | $10 |
78
81
  | `crossmodel/qwen/qwen3.6-flash` | 1.0M | | | | | | $0.19 | $1 |
79
82
  | `crossmodel/qwen/qwen3.6-plus` | 1.0M | | | | | | $0.32 | $2 |
80
83
  | `crossmodel/qwen/qwen3.7-flash` | 1.0M | | | | | | $0.04 | $0.13 |
@@ -34,12 +34,10 @@ 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
- | `deepseek/deepseek-flash` | 1.0M | | | | | | $0.15 | $0.60 |
40
- | `deepseek/deepseek-v4-flash` | 1.0M | | | | | | $0.15 | $0.60 |
41
- | `deepseek/deepseek-v4-flash-vision-exp` | 1.0M | | | | | | $0.15 | $0.60 |
42
- | `deepseek/deepseek-v4-pro` | 1.0M | | | | | | $0.43 | $0.87 |
37
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
38
+ | -------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
39
+ | `deepseek/deepseek-flash` | 1.0M | | | | | | $0.15 | $0.60 |
40
+ | `deepseek/deepseek-v4-pro` | 1.0M | | | | | | $0.43 | $0.87 |
43
41
 
44
42
  Model availability, capabilities, context windows, and pricing are sourced from [models.dev](https://models.dev) and may change.
45
43
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![DigitalOcean logo](https://models.dev/logos/digitalocean.svg)DigitalOcean
6
6
 
7
- Access 97 DigitalOcean models through Mastra's model router. Authentication is handled automatically using the `DIGITALOCEAN_ACCESS_TOKEN` environment variable.
7
+ Access 100 DigitalOcean models through Mastra's model router. Authentication is handled automatically using the `DIGITALOCEAN_ACCESS_TOKEN` environment variable.
8
8
 
9
9
  Learn more in the [DigitalOcean documentation](https://docs.digitalocean.com/products/gradient-ai-platform/details/models/).
10
10
 
@@ -54,6 +54,7 @@ for await (const chunk of stream) {
54
54
  | `digitalocean/anthropic-claude-opus-4.7` | 200K | | | | | | $5 | $25 |
55
55
  | `digitalocean/anthropic-claude-opus-4.8` | 1.0M | | | | | | $5 | $25 |
56
56
  | `digitalocean/anthropic-claude-opus-5` | 1.0M | | | | | | $5 | $25 |
57
+ | `digitalocean/anthropic-claude-opus-5.5` | 1.0M | | | | | | $4 | $20 |
57
58
  | `digitalocean/anthropic-claude-sonnet-4` | 1.0M | | | | | | $3 | $15 |
58
59
  | `digitalocean/arcee-trinity-large-thinking` | 128K | | | | | | $0.25 | $0.90 |
59
60
  | `digitalocean/bge-m3` | 8K | | | | | | $0.02 | — |
@@ -114,6 +115,8 @@ for await (const chunk of stream) {
114
115
  | `digitalocean/openai-gpt-5.6-sol` | 1.1M | | | | | | $4 | $20 |
115
116
  | `digitalocean/openai-gpt-5.6-terra` | 1.1M | | | | | | $2 | $12 |
116
117
  | `digitalocean/openai-gpt-6-astra` | 1.1M | | | | | | $10 | $50 |
118
+ | `digitalocean/openai-gpt-6-luna` | 1.1M | | | | | | $0.10 | $0.50 |
119
+ | `digitalocean/openai-gpt-6-sol` | 1.1M | | | | | | $2 | $10 |
117
120
  | `digitalocean/openai-gpt-image-1` | — | | | | | | $5 | $40 |
118
121
  | `digitalocean/openai-gpt-image-1.5` | — | | | | | | $5 | $10 |
119
122
  | `digitalocean/openai-gpt-image-2` | — | | | | | | $8 | $30 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Eden AI logo](https://models.dev/logos/edenai.svg)Eden AI
6
6
 
7
- Access 280 Eden AI models through Mastra's model router. Authentication is handled automatically using the `EDENAI_API_KEY` environment variable.
7
+ Access 283 Eden AI models through Mastra's model router. Authentication is handled automatically using the `EDENAI_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [Eden AI documentation](https://docs.edenai.co).
10
10
 
@@ -71,6 +71,7 @@ for await (const chunk of stream) {
71
71
  | `edenai/anthropic/claude-opus-4-7` | 1.0M | | | | | | $5 | $25 |
72
72
  | `edenai/anthropic/claude-opus-4-8` | 1.0M | | | | | | $5 | $25 |
73
73
  | `edenai/anthropic/claude-opus-5` | 1.0M | | | | | | $5 | $25 |
74
+ | `edenai/anthropic/claude-opus-5-5` | 1.0M | | | | | | $4 | $20 |
74
75
  | `edenai/anthropic/claude-opus-latest` | 1.0M | | | | | | $5 | $25 |
75
76
  | `edenai/anthropic/claude-sonnet-4-6` | 1.0M | | | | | | $3 | $15 |
76
77
  | `edenai/anthropic/claude-sonnet-5` | 1.0M | | | | | | $2 | $10 |
@@ -220,6 +221,8 @@ for await (const chunk of stream) {
220
221
  | `edenai/openai/gpt-5.6-sol` | 1.1M | | | | | | $4 | $20 |
221
222
  | `edenai/openai/gpt-5.6-terra` | 1.1M | | | | | | $2 | $12 |
222
223
  | `edenai/openai/gpt-6-astra` | 1.1M | | | | | | $10 | $50 |
224
+ | `edenai/openai/gpt-6-luna` | 1.1M | | | | | | $0.10 | $0.50 |
225
+ | `edenai/openai/gpt-6-sol` | 1.1M | | | | | | $2 | $10 |
223
226
  | `edenai/openai/gpt-latest` | 1.1M | | | | | | $10 | $50 |
224
227
  | `edenai/openai/gpt-mini-latest` | 400K | | | | | | $0.75 | $5 |
225
228
  | `edenai/openai/gpt-pro-latest` | 1.1M | | | | | | $30 | $180 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Kenari logo](https://models.dev/logos/kenari.svg)Kenari
6
6
 
7
- Access 59 Kenari models through Mastra's model router. Authentication is handled automatically using the `KENARI_API_KEY` environment variable.
7
+ Access 60 Kenari models through Mastra's model router. Authentication is handled automatically using the `KENARI_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [Kenari documentation](https://kenari.id/docs).
10
10
 
@@ -44,6 +44,7 @@ for await (const chunk of stream) {
44
44
  | `kenari/claude-opus-5` | 1.0M | | | | | | — | — |
45
45
  | `kenari/claude-sonnet-4-6` | 1.0M | | | | | | — | — |
46
46
  | `kenari/claude-sonnet-5` | 1.0M | | | | | | — | — |
47
+ | `kenari/deepseek-v4-1-flash` | 1.0M | | | | | | — | — |
47
48
  | `kenari/deepseek-v4-flash` | 1.0M | | | | | | — | — |
48
49
  | `kenari/deepseek-v4-flash:free` | 1.0M | | | | | | — | — |
49
50
  | `kenari/deepseek-v4-pro` | 1.0M | | | | | | — | — |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Kilo Gateway logo](https://models.dev/logos/kilo.svg)Kilo Gateway
6
6
 
7
- Access 383 Kilo Gateway models through Mastra's model router. Authentication is handled automatically using the `KILO_API_KEY` environment variable.
7
+ Access 389 Kilo Gateway models through Mastra's model router. Authentication is handled automatically using the `KILO_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [Kilo Gateway documentation](https://kilo.ai).
10
10
 
@@ -42,23 +42,23 @@ for await (const chunk of stream) {
42
42
  | `kilo/~anthropic/claude-haiku-latest` | 200K | | | | | | $1 | $5 |
43
43
  | `kilo/~anthropic/claude-opus-latest` | 1.0M | | | | | | $4 | $20 |
44
44
  | `kilo/~anthropic/claude-sonnet-latest` | 1.0M | | | | | | $2 | $10 |
45
- | `kilo/~deepseek/deepseek-flash-latest` | 1.0M | | | | | | $0.12 | $0.48 |
46
- | `kilo/~deepseek/deepseek-pro-latest` | 1.0M | | | | | | $0.56 | $2 |
47
- | `kilo/~deepseek/deepseek-v4-flash-latest` | 1.0M | | | | | | $0.03 | $1 |
45
+ | `kilo/~deepseek/deepseek-flash-latest` | 1.0M | | | | | | $0.08 | $0.60 |
46
+ | `kilo/~deepseek/deepseek-pro-latest` | 1.0M | | | | | | $0.40 | $4 |
47
+ | `kilo/~deepseek/deepseek-v4-flash-latest` | 1.0M | | | | | | $0.03 | $0.80 |
48
48
  | `kilo/~google/gemini-flash-latest` | 1.0M | | | | | | $0.75 | $4 |
49
49
  | `kilo/~google/gemini-pro-latest` | 1.0M | | | | | | $2 | $12 |
50
- | `kilo/~moonshotai/kimi-latest` | 1.0M | | | | | | $2 | $8 |
50
+ | `kilo/~moonshotai/kimi-latest` | 1.0M | | | | | | $1 | $11 |
51
51
  | `kilo/~openai/gpt-astra-latest` | 1.1M | | | | | | $10 | $50 |
52
- | `kilo/~openai/gpt-luna-latest` | 1.1M | | | | | | $0.20 | $1 |
52
+ | `kilo/~openai/gpt-luna-latest` | 1.1M | | | | | | $0.10 | $0.50 |
53
53
  | `kilo/~openai/gpt-mini-latest` | 400K | | | | | | $0.75 | $5 |
54
54
  | `kilo/~openai/gpt-sol-latest` | 1.1M | | | | | | $2 | $10 |
55
55
  | `kilo/~openai/gpt-terra-latest` | 1.1M | | | | | | $2 | $12 |
56
56
  | `kilo/~x-ai/grok-latest` | 500K | | | | | | $2 | $5 |
57
57
  | `kilo/~z-ai/glm-flash-latest` | 1.0M | | | | | | $0.07 | $0.25 |
58
- | `kilo/~z-ai/glm-latest` | 1.0M | | | | | | $0.65 | $2 |
59
- | `kilo/aion-labs/aion-2.0` | 1.0M | | | | | | $0.80 | $2 |
60
- | `kilo/aion-labs/aion-3.0` | 1.0M | | | | | | $3 | $6 |
61
- | `kilo/aion-labs/aion-3.0-mini` | 1.0M | | | | | | $0.70 | $1 |
58
+ | `kilo/~z-ai/glm-latest` | 1.0M | | | | | | $0.56 | $3 |
59
+ | `kilo/aion-labs/aion-2.0` | 131K | | | | | | $0.80 | $2 |
60
+ | `kilo/aion-labs/aion-3.0` | 131K | | | | | | $3 | $6 |
61
+ | `kilo/aion-labs/aion-3.0-mini` | 131K | | | | | | $0.70 | $1 |
62
62
  | `kilo/aion-labs/aion-rp-llama-3.1-8b` | 33K | | | | | | $0.80 | $2 |
63
63
  | `kilo/amazon/nova-2-lite-v1` | 1.0M | | | | | | $0.30 | $3 |
64
64
  | `kilo/amazon/nova-lite-v1` | 300K | | | | | | $0.06 | $0.24 |
@@ -92,6 +92,7 @@ for await (const chunk of stream) {
92
92
  | `kilo/bytedance/ui-tars-1.5-7b` | 128K | | | | | | $0.10 | $0.20 |
93
93
  | `kilo/cognitivecomputations/dolphin-mistral-24b-venice-edition` | 128K | | | | | | $0.20 | $0.90 |
94
94
  | `kilo/cohere/command-a` | 256K | | | | | | $3 | $10 |
95
+ | `kilo/cohere/command-a-plus` | 192K | | | | | | $0.30 | $2 |
95
96
  | `kilo/cohere/command-r-08-2024` | 128K | | | | | | $0.15 | $0.60 |
96
97
  | `kilo/cohere/command-r-plus-08-2024` | 128K | | | | | | $3 | $10 |
97
98
  | `kilo/cohere/command-r7b-12-2024` | 128K | | | | | | $0.04 | $0.15 |
@@ -275,6 +276,10 @@ for await (const chunk of stream) {
275
276
  | `kilo/openai/gpt-5.6-terra-pro` | 1.1M | | | | | | $2 | $12 |
276
277
  | `kilo/openai/gpt-6-astra` | 1.1M | | | | | | $10 | $50 |
277
278
  | `kilo/openai/gpt-6-astra-pro` | 1.1M | | | | | | $10 | $50 |
279
+ | `kilo/openai/gpt-6-luna` | 1.1M | | | | | | $0.10 | $0.50 |
280
+ | `kilo/openai/gpt-6-luna-pro` | 1.1M | | | | | | $0.10 | $0.50 |
281
+ | `kilo/openai/gpt-6-sol` | 1.1M | | | | | | $2 | $10 |
282
+ | `kilo/openai/gpt-6-sol-pro` | 1.1M | | | | | | $2 | $10 |
278
283
  | `kilo/openai/gpt-audio` | 128K | | | | | | $3 | $10 |
279
284
  | `kilo/openai/gpt-audio-mini` | 128K | | | | | | $0.60 | $2 |
280
285
  | `kilo/openai/gpt-chat-latest` | 400K | | | | | | $5 | $30 |
@@ -356,6 +361,7 @@ for await (const chunk of stream) {
356
361
  | `kilo/qwen/qwen3.8-27b:free` | 262K | | | | | | — | — |
357
362
  | `kilo/qwen/qwen3.8-flash` | 1.0M | | | | | | $0.15 | $0.47 |
358
363
  | `kilo/qwen/qwen3.8-max-0902` | 1.0M | | | | | | $2 | $6 |
364
+ | `kilo/qwen/qwen3.8-omni-flash` | 1.0M | | | | | | $0.15 | $0.47 |
359
365
  | `kilo/rekaai/reka-edge` | 16K | | | | | | $0.10 | $0.10 |
360
366
  | `kilo/rekaai/reka-flash-3` | 66K | | | | | | $0.10 | $0.20 |
361
367
  | `kilo/relace/relace-apply-3` | 256K | | | | | | $0.85 | $1 |
@@ -379,7 +385,7 @@ for await (const chunk of stream) {
379
385
  | `kilo/tencent/hy-mt2-1.8b` | 8K | | | | | | $0.04 | $0.18 |
380
386
  | `kilo/tencent/hy-mt2-30b-a3b` | 8K | | | | | | $0.07 | $0.29 |
381
387
  | `kilo/tencent/hy-mt2-7b` | 8K | | | | | | $0.07 | $0.29 |
382
- | `kilo/tencent/hy3` | 262K | | | | | | $0.08 | $0.33 |
388
+ | `kilo/tencent/hy3` | 262K | | | | | | $0.13 | $0.53 |
383
389
  | `kilo/tencent/hy3-preview` | 262K | | | | | | $0.18 | $0.60 |
384
390
  | `kilo/tencent/hy4-preview` | 1.0M | | | | | | $0.83 | $3 |
385
391
  | `kilo/thedrummer/cydonia-24b-v4.1` | 131K | | | | | | $0.30 | $0.50 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![LLM Gateway logo](https://models.dev/logos/llmgateway-providers.svg)LLM Gateway
6
6
 
7
- Access 423 LLM Gateway models through Mastra's model router. Authentication is handled automatically using the `LLMGATEWAY_API_KEY` environment variable.
7
+ Access 426 LLM Gateway models through Mastra's model router. Authentication is handled automatically using the `LLMGATEWAY_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [LLM Gateway documentation](https://llmgateway.io/docs).
10
10
 
@@ -76,6 +76,7 @@ for await (const chunk of stream) {
76
76
  | `llmgateway-providers/anthropic/claude-opus-4-7` | 1.0M | | | | | | $5 | $25 |
77
77
  | `llmgateway-providers/anthropic/claude-opus-4-8` | 1.0M | | | | | | $5 | $25 |
78
78
  | `llmgateway-providers/anthropic/claude-opus-5` | 1.0M | | | | | | $5 | $25 |
79
+ | `llmgateway-providers/anthropic/claude-opus-5-5` | 1.0M | | | | | | $4 | $20 |
79
80
  | `llmgateway-providers/anthropic/claude-sonnet-4-5` | 200K | | | | | | $3 | $15 |
80
81
  | `llmgateway-providers/anthropic/claude-sonnet-4-5-20250929` | 200K | | | | | | $3 | $15 |
81
82
  | `llmgateway-providers/anthropic/claude-sonnet-4-6` | 1.0M | | | | | | $3 | $15 |
@@ -350,6 +351,8 @@ for await (const chunk of stream) {
350
351
  | `llmgateway-providers/openai/gpt-5.6-sol` | 1.1M | | | | | | $4 | $20 |
351
352
  | `llmgateway-providers/openai/gpt-5.6-terra` | 1.1M | | | | | | $2 | $12 |
352
353
  | `llmgateway-providers/openai/gpt-6-astra` | 1.1M | | | | | | $10 | $50 |
354
+ | `llmgateway-providers/openai/gpt-6-luna` | 1.1M | | | | | | $0.10 | $0.50 |
355
+ | `llmgateway-providers/openai/gpt-6-sol` | 1.1M | | | | | | $2 | $10 |
353
356
  | `llmgateway-providers/openai/o1` | 200K | | | | | | $15 | $60 |
354
357
  | `llmgateway-providers/openai/o3` | 200K | | | | | | $2 | $8 |
355
358
  | `llmgateway-providers/openai/o3-mini` | 200K | | | | | | $1 | $4 |