@mastra/mcp-docs-server 1.2.15-alpha.3 → 1.2.15-alpha.7

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/a2a.md +39 -0
  2. package/.docs/docs/agents/skills.md +15 -1
  3. package/.docs/docs/capabilities/channels/overview.md +19 -0
  4. package/.docs/docs/evals/overview.md +16 -4
  5. package/.docs/docs/index.md +1 -1
  6. package/.docs/docs/observability/feedback.md +16 -0
  7. package/.docs/guides/getting-started/quickstart.md +1 -1
  8. package/.docs/guides/voice/realtime-voice.md +28 -2
  9. package/.docs/models/gateways/neon.md +4 -1
  10. package/.docs/models/gateways/netlify.md +1 -2
  11. package/.docs/models/gateways/openrouter.md +1 -1
  12. package/.docs/models/gateways/vercel.md +8 -2
  13. package/.docs/models/index.md +1 -1
  14. package/.docs/models/providers/cortecs.md +2 -1
  15. package/.docs/models/providers/deepinfra.md +2 -2
  16. package/.docs/models/providers/digitalocean.md +3 -2
  17. package/.docs/models/providers/empiriolabs.md +6 -4
  18. package/.docs/models/providers/hyper.md +4 -5
  19. package/.docs/models/providers/kilo.md +3 -3
  20. package/.docs/models/providers/llmgateway.md +2 -2
  21. package/.docs/models/providers/nano-gpt.md +3 -2
  22. package/.docs/models/providers/neuralwatt.md +2 -1
  23. package/.docs/models/providers/ofox.md +74 -16
  24. package/.docs/models/providers/opencode-go.md +1 -1
  25. package/.docs/models/providers/opencode.md +2 -2
  26. package/.docs/models/providers/vivgrid.md +4 -2
  27. package/.docs/models/providers/wandb.md +1 -1
  28. package/.docs/reference/agents/channels.md +22 -1
  29. package/.docs/reference/channels/slack-provider.md +2 -0
  30. package/.docs/reference/client-js/workflows.md +13 -0
  31. package/.docs/reference/configuration.md +25 -0
  32. package/.docs/reference/file-based-agents/config.md +22 -21
  33. package/.docs/reference/file-based-agents/instructions.md +42 -17
  34. package/.docs/reference/index.md +1 -0
  35. package/.docs/reference/observability/metrics/automatic-metrics.md +10 -8
  36. package/.docs/reference/server/routes.md +25 -11
  37. package/.docs/reference/storage/composite.md +58 -0
  38. package/.docs/reference/tools/bedrock-kb-tool.md +117 -0
  39. package/.docs/reference/voice/google.md +19 -3
  40. package/.docs/reference/workflows/step.md +40 -0
  41. package/CHANGELOG.md +22 -0
  42. package/package.json +4 -4
@@ -57,6 +57,18 @@ A2A represents work as messages and tasks. Messages carry text, file, or structu
57
57
 
58
58
  Tasks are stateful units of work with IDs and lifecycle states. Clients can follow long-running work and send follow-up turns. They can also cancel work or resubscribe after a disconnect.
59
59
 
60
+ ## Protocol versions
61
+
62
+ Mastra supports A2A Protocol v0.3 and v1.0 on the same agent card and execution URLs. The `A2A-Version` request header selects the wire protocol:
63
+
64
+ - Missing, empty, or `0.3`: Uses the existing v0.3 API.
65
+ - `1.0`: Uses the v1.0 API.
66
+ - Any other value: Returns a `VersionNotSupported` protocol error.
67
+
68
+ Existing `A2AAgent` and `MastraClient.getA2A()` integrations continue to use v0.3. Use `MastraClient.getA2AV1()` for v1.0 requests. The v1 client sends `A2A-Version: 1.0` automatically and adds the `tasks/list` operation.
69
+
70
+ Import v1.0 protocol types and codecs from `@mastra/core/a2a/v1`. The existing `@mastra/core/a2a/client` export remains on v0.3.
71
+
60
72
  ## Get started
61
73
 
62
74
  A2A has two common paths in Mastra:
@@ -155,6 +167,33 @@ for await (const event of updates) {
155
167
  }
156
168
  ```
157
169
 
170
+ ### Use the v1.0 client
171
+
172
+ Use `getA2AV1()` to opt into the A2A v1.0 wire protocol. The protocol package provides codecs for creating v1 request values from JSON-shaped input:
173
+
174
+ ```typescript
175
+ import { ListTasksRequest } from '@mastra/core/a2a/v1'
176
+ import { MastraClient } from '@mastra/client-js'
177
+
178
+ const client = new MastraClient({
179
+ baseUrl: 'https://agent.example.com',
180
+ })
181
+
182
+ const a2a = client.getA2AV1('weather-agent')
183
+ const response = await a2a.listTasks(
184
+ ListTasksRequest.fromJSON({
185
+ contextId: 'customer-support',
186
+ pageSize: 20,
187
+ }),
188
+ )
189
+
190
+ for (const task of response.tasks) {
191
+ console.log(task.id, task.status)
192
+ }
193
+ ```
194
+
195
+ The v1.0 client supports `getAgentCard()`, `sendMessage()`, `sendMessageStream()`, `getTask()`, `listTasks()`, `cancelTask()`, and `resubscribeTask()`.
196
+
158
197
  ## Configure subagent calls
159
198
 
160
199
  `A2AAgent` accepts request options for authenticated or constrained environments:
@@ -123,7 +123,21 @@ export const agent = new Agent({
123
123
  })
124
124
  ```
125
125
 
126
- The resolver function receives `{ requestContext }` and returns a `SkillInput[]` array or a `Promise<SkillInput[]>`.
126
+ The resolver function receives `{ requestContext, tracingContext }` and returns a `SkillInput[]` array or a `Promise<SkillInput[]>`.
127
+
128
+ The resolver runs once per `RequestContext`. During an agent execution it runs inside a `resolve-skills` span, and `tracingContext.currentSpan` lets you create child spans for your own work, the same way tools do. The resolver also runs on metadata reads such as `agent.listSkills()` and the server's agent endpoints, where no span exists and `tracingContext.currentSpan` is `undefined`, so keep it fast and guard any span usage:
129
+
130
+ ```typescript
131
+ skills: async ({ requestContext, tracingContext }) => {
132
+ const span = tracingContext?.currentSpan?.createChildSpan({
133
+ type: 'generic',
134
+ name: 'entitlements-lookup',
135
+ })
136
+ const skills = await fetchSkillsFor(requestContext.get('userId'))
137
+ span?.end()
138
+ return skills
139
+ }
140
+ ```
127
141
 
128
142
  See [Request Context](https://mastra.ai/docs/server/request-context) for more on using request context with agents and workflows.
129
143
 
@@ -153,6 +153,25 @@ When the agent calls this tool, users see a card with the tool name, arguments,
153
153
 
154
154
  Set `toolDisplay: 'text'` on an adapter to render tool calls as plain text instead of interactive cards. In `'hidden'` mode, `autoResumeSuspendedTools` can resume suspended tools when a later user message arrives on the same thread. This requires memory. Hidden mode only suppresses the approval buttons.
155
155
 
156
+ ## Reply formatting
157
+
158
+ Agent replies post as markdown by default. Platforms with native markdown rendering, such as Slack, render bold text, links, and tables directly. Other platforms convert the markdown to their own format. Agents write standard markdown and it renders correctly everywhere, matching how the same reply renders in Studio.
159
+
160
+ Set `textFormat: 'plain'` on an adapter to post replies as literal plain text instead:
161
+
162
+ ```typescript
163
+ channels: {
164
+ adapters: {
165
+ slack: {
166
+ adapter: createSlackAdapter(),
167
+ textFormat: 'plain',
168
+ },
169
+ },
170
+ },
171
+ ```
172
+
173
+ Use this escape hatch if your agent is prompted to emit a platform-specific dialect, such as Slack mrkdwn, instead of standard markdown. If you added such prompt instructions to work around markdown rendering literally, remove them instead. The default now renders standard markdown natively. `textFormat` affects final reply text only. Tool cards, error messages, and natively streamed text are unaffected.
174
+
156
175
  ## Multi-user awareness
157
176
 
158
177
  In group conversations, Mastra prefixes each message with the sender's name and platform ID so the agent can distinguish between speakers:
@@ -75,7 +75,7 @@ export const evaluatedAgent = new Agent({
75
75
 
76
76
  ### Adding scorers to workflow steps
77
77
 
78
- You can also add scorers to individual workflow steps to evaluate outputs at specific points in your process:
78
+ You can also add scorers to individual workflow steps to evaluate outputs at specific points in your process. Each scorer receives that step's own input and output, so you can measure quality at each step instead of only scoring the final answer:
79
79
 
80
80
  ```typescript
81
81
  import { createWorkflow, createStep } from "@mastra/core/workflows";
@@ -83,22 +83,34 @@ import { z } from "zod";
83
83
  import { customStepScorer } from "../scorers/custom-step-scorer";
84
84
 
85
85
  const contentStep = createStep({
86
+ id: "content-step",
87
+ inputSchema: z.object({ topic: z.string() }),
88
+ outputSchema: z.object({ content: z.string() }),
86
89
  scorers: {
87
90
  customStepScorer: {
88
91
  scorer: customStepScorer(),
89
92
  sampling: {
90
93
  type: "ratio",
91
94
  rate: 1, // Score every step execution
92
- }
93
- }
95
+ },
96
+ },
97
+ },
98
+ execute: async ({ inputData }) => {
99
+ return { content: await generateContent(inputData.topic) };
94
100
  },
95
101
  });
96
102
 
97
- export const contentWorkflow = createWorkflow({ ... })
103
+ export const contentWorkflow = createWorkflow({
104
+ id: "content-workflow",
105
+ inputSchema: z.object({ topic: z.string() }),
106
+ outputSchema: z.object({ content: z.string() }),
107
+ })
98
108
  .then(contentStep)
99
109
  .commit();
100
110
  ```
101
111
 
112
+ For the step-level `scorers` API, see the [Step class reference](https://mastra.ai/reference/workflows/step).
113
+
102
114
  ### How live evaluations work
103
115
 
104
116
  **Asynchronous execution**: Live evaluations run in the background without blocking your agent responses or workflow execution. This ensures your AI systems maintain their performance while still being monitored.
@@ -132,7 +132,7 @@ npm create mastra@latest
132
132
  **pnpm**:
133
133
 
134
134
  ```bash
135
- pnpm create mastra
135
+ pnpm create mastra@latest
136
136
  ```
137
137
 
138
138
  **Yarn**:
@@ -33,6 +33,22 @@ await mastra.observability.addFeedback({
33
33
  })
34
34
  ```
35
35
 
36
+ ## Find the trace for a message
37
+
38
+ Feedback is usually collected against a message a user has already read, so you need the `traceId` for that message. Assistant messages carry it in `content.metadata`, both in the stream result and when the message is recalled later from memory:
39
+
40
+ ```typescript
41
+ const agent = mastra.getAgent('weatherAgent')
42
+ const memory = await agent.getMemory()
43
+
44
+ const { messages } = await memory!.recall({ threadId, perPage: false })
45
+
46
+ const message = messages.find(m => m.id === messageId)
47
+ const traceId = message?.content.metadata?.traceId
48
+ ```
49
+
50
+ The value is the same trace the run reports as `traceId` on its result, so feedback collected at generation time and feedback collected later against a stored message anchor to the same trace. Messages produced while tracing is disabled have no `traceId`.
51
+
36
52
  ## Create feedback
37
53
 
38
54
  Every `createFeedback()` requires `feedbackType` and `value`. Add `traceId` or `spanId` when the feedback should be anchored to a trace or a specific span. Use `feedbackSource` as optional string metadata, such as `user`, `qa`, `studio`, or `system`.
@@ -27,7 +27,7 @@ npm create mastra@latest
27
27
  **pnpm**:
28
28
 
29
29
  ```bash
30
- pnpm create mastra
30
+ pnpm create mastra@latest
31
31
  ```
32
32
 
33
33
  **Yarn**:
@@ -378,12 +378,38 @@ Tracing is on by default. Pass `observability: false` to `createLiveKitWorker` t
378
378
 
379
379
  ## Deployment
380
380
 
381
- The worker is a separate process from your Mastra server. Deploy it as a long-running Node service with the production command:
381
+ The worker is a separate process from your Mastra server, so `mastra build` needs to emit it as its own entry. Add it to [`bundler.entries`](https://mastra.ai/reference/configuration):
382
+
383
+ ```typescript
384
+ import { Mastra } from '@mastra/core'
385
+
386
+ export const mastra = new Mastra({
387
+ bundler: {
388
+ entries: { 'voice-worker': './voice-worker.ts' },
389
+ // Keep LiveKit's native modules out of the bundle. `mastra build` only applies
390
+ // this default when you set no other bundler options, so set it explicitly here.
391
+ externals: true,
392
+ },
393
+ })
394
+ ```
395
+
396
+ `mastra build` now writes both processes into `.mastra/output`, sharing one `package.json` and one dependency install:
397
+
398
+ ```text
399
+ .mastra/output/
400
+ index.mjs # Mastra server
401
+ voice-worker.mjs # LiveKit worker
402
+ ```
403
+
404
+ Deploy that directory as a single artifact and start each process with its own command:
382
405
 
383
406
  ```bash
384
- node dist/voice-worker.js start
407
+ node .mastra/output/index.mjs # server
408
+ node .mastra/output/voice-worker.mjs start # worker
385
409
  ```
386
410
 
411
+ The worker needs the same environment variables as the server, plus `LIVEKIT_URL`, `LIVEKIT_API_KEY`, and `LIVEKIT_API_SECRET`.
412
+
387
413
  LiveKit's guidance on sizing, graceful shutdown, and hosting applies unchanged. See [Deploying agents](https://docs.livekit.io/agents/ops/deployment/). Workers connect outbound to LiveKit, so they don't need inbound ports.
388
414
 
389
415
  ## How it works
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Neon logo](https://models.dev/logos/neon.svg)Neon
4
4
 
5
- Neon aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 39 models through Mastra's model router.
5
+ Neon aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 42 models through Mastra's model router.
6
6
 
7
7
  Learn more in the [Neon documentation](https://neon.com/docs).
8
8
 
@@ -47,6 +47,8 @@ NEON_AI_GATEWAY_TOKEN=your-gateway-key
47
47
  | `gemini-3-1-flash-lite` |
48
48
  | `gemini-3-1-pro` |
49
49
  | `gemini-3-5-flash` |
50
+ | `gemini-3-5-flash-lite` |
51
+ | `gemini-3-6-flash` |
50
52
  | `gemini-3-flash` |
51
53
  | `gemma-3-12b` |
52
54
  | `glm-5-2` |
@@ -67,6 +69,7 @@ NEON_AI_GATEWAY_TOKEN=your-gateway-key
67
69
  | `gpt-oss-120b` |
68
70
  | `gpt-oss-20b` |
69
71
  | `inkling` |
72
+ | `kimi-k3` |
70
73
  | `llama-4-maverick` |
71
74
  | `meta-llama-3-1-8b-instruct` |
72
75
  | `meta-llama-3-3-70b-instruct` |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Netlify
4
4
 
5
- Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access 67 models through Mastra's model router.
5
+ Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access 66 models through Mastra's model router.
6
6
 
7
7
  Learn more in the [Netlify documentation](https://docs.netlify.com/build/ai-gateway/overview/).
8
8
 
@@ -84,7 +84,6 @@ ANTHROPIC_API_KEY=ant-...
84
84
  | `openai/gpt-5.2-2025-12-11` |
85
85
  | `openai/gpt-5.2-pro` |
86
86
  | `openai/gpt-5.2-pro-2025-12-11` |
87
- | `openai/gpt-5.3-chat-latest` |
88
87
  | `openai/gpt-5.3-codex` |
89
88
  | `openai/gpt-5.4` |
90
89
  | `openai/gpt-5.4-2026-03-05` |
@@ -140,7 +140,7 @@ ANTHROPIC_API_KEY=ant-...
140
140
  | `inclusionai/ling-2.6-1t` |
141
141
  | `inclusionai/ling-2.6-flash` |
142
142
  | `inclusionai/ling-3.0-flash` |
143
- | `inclusionai/ling-3.0-flash:free` |
143
+ | `inclusionai/ling-3.0-tiny:free` |
144
144
  | `inclusionai/ring-2.6-1t` |
145
145
  | `kwaipilot/kat-coder-air-v2.5` |
146
146
  | `kwaipilot/kat-coder-pro-v2` |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Vercel logo](https://models.dev/logos/vercel.svg)Vercel
4
4
 
5
- Vercel aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 316 models through Mastra's model router.
5
+ Vercel aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 322 models through Mastra's model router.
6
6
 
7
7
  Learn more in the [Vercel documentation](https://ai-sdk.dev/providers/ai-sdk-providers).
8
8
 
@@ -109,6 +109,7 @@ ANTHROPIC_API_KEY=ant-...
109
109
  | `bytedance/seed-1.8` |
110
110
  | `bytedance/seedance-2.0` |
111
111
  | `bytedance/seedance-2.0-fast` |
112
+ | `bytedance/seedance-2.5` |
112
113
  | `bytedance/seedance-v1.0-pro` |
113
114
  | `bytedance/seedance-v1.0-pro-fast` |
114
115
  | `bytedance/seedance-v1.5-pro` |
@@ -130,6 +131,10 @@ ANTHROPIC_API_KEY=ant-...
130
131
  | `deepseek/deepseek-v4-flash` |
131
132
  | `deepseek/deepseek-v4-flash-0731` |
132
133
  | `deepseek/deepseek-v4-pro` |
134
+ | `fish-audio/s1` |
135
+ | `fish-audio/s2-pro` |
136
+ | `fish-audio/s2.1-pro` |
137
+ | `fish-audio/transcribe-1` |
133
138
  | `google/gemini-2.5-flash` |
134
139
  | `google/gemini-2.5-flash-image` |
135
140
  | `google/gemini-2.5-flash-lite` |
@@ -161,7 +166,8 @@ ANTHROPIC_API_KEY=ant-...
161
166
  | `google/veo-3.1-lite-generate-001` |
162
167
  | `inception/mercury-2` |
163
168
  | `inception/mercury-coder-small` |
164
- | `inclusionai/ling-3.0-flash-free` |
169
+ | `inclusionai/ling-3.0-flash` |
170
+ | `inclusionai/ling-3.0-tiny-free` |
165
171
  | `interfaze/interfaze-beta` |
166
172
  | `klingai/kling-v2.5-turbo-i2v` |
167
173
  | `klingai/kling-v2.5-turbo-t2v` |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Model Providers
4
4
 
5
- Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 5378 models from 168 providers through a single API.
5
+ Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 5452 models from 168 providers through a single API.
6
6
 
7
7
  ## Features
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Cortecs logo](https://models.dev/logos/cortecs.svg)Cortecs
4
4
 
5
- Access 105 Cortecs models through Mastra's model router. Authentication is handled automatically using the `CORTECS_API_KEY` environment variable.
5
+ Access 106 Cortecs models through Mastra's model router. Authentication is handled automatically using the `CORTECS_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Cortecs documentation](https://cortecs.ai).
8
8
 
@@ -59,6 +59,7 @@ for await (const chunk of stream) {
59
59
  | `cortecs/gemini-2.5-pro` | 1.0M | | | | | | $1 | $10 |
60
60
  | `cortecs/gemini-3.1-flash-lite` | 1.0M | | | | | | $0.27 | $2 |
61
61
  | `cortecs/gemini-3.5-flash` | 1.0M | | | | | | $1 | $9 |
62
+ | `cortecs/gemini-3.5-flash-lite` | 1.0M | | | | | | $0.33 | $3 |
62
63
  | `cortecs/gemma-3-27b-it` | 131K | | | | | | $0.10 | $0.30 |
63
64
  | `cortecs/gemma-4-26b-a4b-it` | 262K | | | | | | $0.11 | $0.56 |
64
65
  | `cortecs/gemma-4-31b-it` | 262K | | | | | | $0.22 | $0.39 |
@@ -48,10 +48,10 @@ for await (const chunk of stream) {
48
48
  | `deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8` | 1.0M | | | | | | $0.20 | $0.80 |
49
49
  | `deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct` | 328K | | | | | | $0.10 | $0.30 |
50
50
  | `deepinfra/MiniMaxAI/MiniMax-M2.7` | 197K | | | | | | $0.25 | $1 |
51
- | `deepinfra/MiniMaxAI/MiniMax-M3` | 524K | | | | | | $0.30 | $1 |
51
+ | `deepinfra/MiniMaxAI/MiniMax-M3` | 524K | | | | | | $0.28 | $1 |
52
52
  | `deepinfra/moonshotai/Kimi-K2.5` | 262K | | | | | | $0.45 | $2 |
53
53
  | `deepinfra/moonshotai/Kimi-K2.6` | 262K | | | | | | $0.75 | $4 |
54
- | `deepinfra/moonshotai/Kimi-K2.7-Code` | 262K | | | | | | $0.74 | $4 |
54
+ | `deepinfra/moonshotai/Kimi-K2.7-Code` | 262K | | | | | | $0.68 | $3 |
55
55
  | `deepinfra/moonshotai/Kimi-K3` | 1.0M | | | | | | $3 | $14 |
56
56
  | `deepinfra/nvidia/Nemotron-3-Nano-30B-A3B` | 262K | | | | | | $0.05 | $0.20 |
57
57
  | `deepinfra/openai/gpt-oss-120b` | 131K | | | | | | $0.04 | $0.17 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![DigitalOcean logo](https://models.dev/logos/digitalocean.svg)DigitalOcean
4
4
 
5
- Access 89 DigitalOcean models through Mastra's model router. Authentication is handled automatically using the `DIGITALOCEAN_ACCESS_TOKEN` environment variable.
5
+ Access 90 DigitalOcean models through Mastra's model router. Authentication is handled automatically using the `DIGITALOCEAN_ACCESS_TOKEN` environment variable.
6
6
 
7
7
  Learn more in the [DigitalOcean documentation](https://docs.digitalocean.com/products/gradient-ai-platform/details/models/).
8
8
 
@@ -59,7 +59,8 @@ for await (const chunk of stream) {
59
59
  | `digitalocean/deepseek-4-flash` | 1.0M | | | | | | $0.08 | $0.17 |
60
60
  | `digitalocean/deepseek-r1-distill-llama-70b` | 33K | | | | | | $0.99 | $0.99 |
61
61
  | `digitalocean/deepseek-v3` | 164K | | | | | | — | — |
62
- | `digitalocean/deepseek-v4-pro` | 262K | | | | | | $0.87 | $2 |
62
+ | `digitalocean/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.14 | $0.28 |
63
+ | `digitalocean/deepseek-v4-pro` | 1.0M | | | | | | $0.87 | $2 |
63
64
  | `digitalocean/e5-large-v2` | 512 | | | | | | $0.02 | — |
64
65
  | `digitalocean/fal-ai/elevenlabs/tts/multilingual-v2` | — | | | | | | — | — |
65
66
  | `digitalocean/fal-ai/fast-sdxl` | — | | | | | | — | — |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![EmpirioLabs AI logo](https://models.dev/logos/empiriolabs.svg)EmpirioLabs AI
4
4
 
5
- Access 40 EmpirioLabs AI models through Mastra's model router. Authentication is handled automatically using the `EMPIRIOLABS_API_KEY` environment variable.
5
+ Access 42 EmpirioLabs AI models through Mastra's model router. Authentication is handled automatically using the `EMPIRIOLABS_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [EmpirioLabs AI documentation](https://docs.empiriolabs.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: "empiriolabs/deepseek-v4-flash"
20
+ model: "empiriolabs/deepseek-v3-2"
21
21
  });
22
22
 
23
23
  // Generate a response
@@ -36,6 +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
+ | `empiriolabs/deepseek-v3-2` | 128K | | | | | | $0.57 | $2 |
39
40
  | `empiriolabs/deepseek-v4-flash` | 1.0M | | | | | | $0.14 | $0.28 |
40
41
  | `empiriolabs/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.14 | $0.28 |
41
42
  | `empiriolabs/deepseek-v4-pro` | 1.0M | | | | | | $2 | $3 |
@@ -62,6 +63,7 @@ for await (const chunk of stream) {
62
63
  | `empiriolabs/qwen3-5-397b-a17b` | 256K | | | | | | $0.17 | $1 |
63
64
  | `empiriolabs/qwen3-5-4b` | 262K | | | | | | $0.04 | $0.07 |
64
65
  | `empiriolabs/qwen3-5-9b` | 262K | | | | | | $0.09 | $0.13 |
66
+ | `empiriolabs/qwen3-5-flash` | 1.0M | | | | | | $0.09 | $0.37 |
65
67
  | `empiriolabs/qwen3-5-plus` | 1.0M | | | | | | $0.36 | $2 |
66
68
  | `empiriolabs/qwen3-6-27b` | 256K | | | | | | $0.41 | $2 |
67
69
  | `empiriolabs/qwen3-6-35b-a3b` | 131K | | | | | | $0.07 | $0.42 |
@@ -87,7 +89,7 @@ const agent = new Agent({
87
89
  name: "custom-agent",
88
90
  model: {
89
91
  url: "https://api.empiriolabs.ai/v1",
90
- id: "empiriolabs/deepseek-v4-flash",
92
+ id: "empiriolabs/deepseek-v3-2",
91
93
  apiKey: process.env.EMPIRIOLABS_API_KEY,
92
94
  headers: {
93
95
  "X-Custom-Header": "value"
@@ -106,7 +108,7 @@ const agent = new Agent({
106
108
  const useAdvanced = requestContext.task === "complex";
107
109
  return useAdvanced
108
110
  ? "empiriolabs/step-3-7-flash"
109
- : "empiriolabs/deepseek-v4-flash";
111
+ : "empiriolabs/deepseek-v3-2";
110
112
  }
111
113
  });
112
114
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Charm Hyper logo](https://models.dev/logos/hyper.svg)Charm Hyper
4
4
 
5
- Access 25 Charm Hyper models through Mastra's model router. Authentication is handled automatically using the `HYPER_API_KEY` environment variable.
5
+ Access 24 Charm Hyper models through Mastra's model router. Authentication is handled automatically using the `HYPER_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Charm Hyper documentation](https://hyper.charm.land).
8
8
 
@@ -37,20 +37,19 @@ for await (const chunk of stream) {
37
37
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
38
38
  | ---------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
39
39
  | `hyper/deepseek-v4-flash` | 1.0M | | | | | | $0.20 | $0.40 |
40
- | `hyper/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.20 | $0.40 |
40
+ | `hyper/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.15 | $0.30 |
41
41
  | `hyper/deepseek-v4-pro` | 1.0M | | | | | | $2 | $5 |
42
42
  | `hyper/gemma-4-26b-a4b-it` | 256K | | | | | | $0.12 | $0.42 |
43
- | `hyper/glm-5` | 203K | | | | | | $0.85 | $3 |
44
43
  | `hyper/glm-5.1` | 203K | | | | | | $2 | $5 |
45
44
  | `hyper/glm-5.2` | 1.0M | | | | | | $1 | $4 |
46
- | `hyper/gpt-oss-120b` | 131K | | | | | | $0.19 | $0.73 |
45
+ | `hyper/gpt-oss-120b` | 131K | | | | | | $0.18 | $0.71 |
47
46
  | `hyper/kimi-k2.5` | 262K | | | | | | $0.55 | $3 |
48
47
  | `hyper/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
49
48
  | `hyper/kimi-k2.7-code` | 256K | | | | | | $0.95 | $4 |
50
49
  | `hyper/kimi-k3` | 1.0M | | | | | | $3 | $16 |
51
50
  | `hyper/llama-3.3-70b-instruct` | 128K | | | | | | $0.61 | $1 |
52
51
  | `hyper/llama-4-maverick-17b-128e-instruct-fp8` | 430K | | | | | | $0.27 | $0.90 |
53
- | `hyper/minimax-m2.7` | 262K | | | | | | $0.41 | $2 |
52
+ | `hyper/minimax-m2.7` | 262K | | | | | | $0.44 | $2 |
54
53
  | `hyper/minimax-m3` | 512K | | | | | | $0.33 | $1 |
55
54
  | `hyper/qwen3-coder-480b-a35b-instruct-int4-mixed-ar` | 106K | | | | | | $0.57 | $2 |
56
55
  | `hyper/qwen3-next-80b-a3b-instruct` | 262K | | | | | | $0.12 | $1 |
@@ -139,8 +139,8 @@ for await (const chunk of stream) {
139
139
  | `kilo/inception/mercury-2` | 128K | | | | | | $0.25 | $0.75 |
140
140
  | `kilo/inclusionai/ling-2.6-1t` | 262K | | | | | | $0.30 | $3 |
141
141
  | `kilo/inclusionai/ling-2.6-flash` | 262K | | | | | | $0.10 | $0.30 |
142
- | `kilo/inclusionai/ling-3.0-flash` | 131K | | | | | | $0.07 | $0.22 |
143
- | `kilo/inclusionai/ling-3.0-flash:free` | 262K | | | | | | — | — |
142
+ | `kilo/inclusionai/ling-3.0-flash` | 262K | | | | | | $0.06 | $0.18 |
143
+ | `kilo/inclusionai/ling-3.0-tiny:free` | 262K | | | | | | — | — |
144
144
  | `kilo/inclusionai/ring-2.6-1t` | 262K | | | | | | $0.30 | $3 |
145
145
  | `kilo/kilo-auto/balanced` | 1.0M | | | | | | $0.33 | $2 |
146
146
  | `kilo/kilo-auto/efficient` | 1.0M | | | | | | $0.33 | $2 |
@@ -309,7 +309,7 @@ for await (const chunk of stream) {
309
309
  | `kilo/qwen/qwen3-max` | 262K | | | | | | $0.78 | $4 |
310
310
  | `kilo/qwen/qwen3-max-thinking` | 262K | | | | | | $0.78 | $4 |
311
311
  | `kilo/qwen/qwen3-next-80b-a3b-instruct` | 262K | | | | | | $0.10 | $0.78 |
312
- | `kilo/qwen/qwen3-next-80b-a3b-thinking` | 128K | | | | | | $0.15 | $1 |
312
+ | `kilo/qwen/qwen3-next-80b-a3b-thinking` | 262K | | | | | | $0.15 | $1 |
313
313
  | `kilo/qwen/qwen3-vl-235b-a22b-instruct` | 131K | | | | | | $0.26 | $1 |
314
314
  | `kilo/qwen/qwen3-vl-235b-a22b-thinking` | 131K | | | | | | $0.40 | $4 |
315
315
  | `kilo/qwen/qwen3-vl-30b-a3b-instruct` | 262K | | | | | | $0.13 | $0.52 |
@@ -86,7 +86,7 @@ for await (const chunk of stream) {
86
86
  | `llmgateway/glm-4.7-flashx` | 200K | | | | | | $0.07 | $0.40 |
87
87
  | `llmgateway/glm-5` | 203K | | | | | | $0.72 | $2 |
88
88
  | `llmgateway/glm-5.1` | 205K | | | | | | $0.93 | $3 |
89
- | `llmgateway/glm-5.2` | 1.0M | | | | | | $0.80 | $3 |
89
+ | `llmgateway/glm-5.2` | 1.0M | | | | | | $0.55 | $2 |
90
90
  | `llmgateway/gpt-3.5-turbo` | 16K | | | | | | $0.50 | $2 |
91
91
  | `llmgateway/gpt-4` | 8K | | | | | | $30 | $60 |
92
92
  | `llmgateway/gpt-4-turbo` | 128K | | | | | | $10 | $30 |
@@ -100,7 +100,6 @@ for await (const chunk of stream) {
100
100
  | `llmgateway/gpt-4o-search-preview` | 128K | | | | | | $3 | $10 |
101
101
  | `llmgateway/gpt-4o-transcribe` | 16K | | | | | | $3 | $10 |
102
102
  | `llmgateway/gpt-5` | 400K | | | | | | $1 | $10 |
103
- | `llmgateway/gpt-5-chat-latest` | 400K | | | | | | $1 | $10 |
104
103
  | `llmgateway/gpt-5-mini` | 400K | | | | | | $0.25 | $2 |
105
104
  | `llmgateway/gpt-5-nano` | 400K | | | | | | $0.05 | $0.40 |
106
105
  | `llmgateway/gpt-5-pro` | 400K | | | | | | $15 | $120 |
@@ -172,6 +171,7 @@ for await (const chunk of stream) {
172
171
  | `llmgateway/mistral-large-latest` | 128K | | | | | | $4 | $12 |
173
172
  | `llmgateway/mistral-small-2506` | 128K | | | | | | $0.10 | $0.30 |
174
173
  | `llmgateway/muse-spark-1.1` | 1.0M | | | | | | $1 | $4 |
174
+ | `llmgateway/muse-spark-1.2` | 1.0M | | | | | | $1 | $4 |
175
175
  | `llmgateway/nemotron-3-nano-30b` | 262K | | | | | | $0.06 | $0.24 |
176
176
  | `llmgateway/nemotron-3-nano-omni` | 262K | | | | | | $0.06 | $0.24 |
177
177
  | `llmgateway/nemotron-3-super-120b` | 262K | | | | | | $0.30 | $0.90 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![NanoGPT logo](https://models.dev/logos/nano-gpt.svg)NanoGPT
4
4
 
5
- Access 617 NanoGPT models through Mastra's model router. Authentication is handled automatically using the `NANO_GPT_API_KEY` environment variable.
5
+ Access 618 NanoGPT models through Mastra's model router. Authentication is handled automatically using the `NANO_GPT_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [NanoGPT documentation](https://docs.nano-gpt.com).
8
8
 
@@ -517,6 +517,7 @@ for await (const chunk of stream) {
517
517
  | `nano-gpt/qwen3.7-plus:thinking` | 984K | | | | | | $0.40 | $2 |
518
518
  | `nano-gpt/qwen3.8-max` | 991K | | | | | | $2 | $6 |
519
519
  | `nano-gpt/qwen3.8-max-preview` | 991K | | | | | | $2 | $5 |
520
+ | `nano-gpt/qwen3.8-max:thinking` | 991K | | | | | | $2 | $6 |
520
521
  | `nano-gpt/ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0` | 16K | | | | | | $0.50 | $0.50 |
521
522
  | `nano-gpt/sakana/fugu-ultra` | 1.0M | | | | | | $5 | $32 |
522
523
  | `nano-gpt/sakana/fugu-ultra-v1.1` | 1.0M | | | | | | $5 | $32 |
@@ -583,7 +584,7 @@ for await (const chunk of stream) {
583
584
  | `nano-gpt/TheDrummer/Cydonia-24B-v2` | 16K | | | | | | $0.10 | $0.12 |
584
585
  | `nano-gpt/TheDrummer/Cydonia-24B-v4` | 16K | | | | | | $0.20 | $0.24 |
585
586
  | `nano-gpt/TheDrummer/Cydonia-24B-v4.1` | 131K | | | | | | $0.35 | $0.55 |
586
- | `nano-gpt/TheDrummer/Cydonia-24B-v4.3` | 33K | | | | | | $0.10 | $0.12 |
587
+ | `nano-gpt/TheDrummer/Cydonia-24B-v4.3` | 33K | | | | | | $0.12 | $0.15 |
587
588
  | `nano-gpt/TheDrummer/Magidonia-24B-v4.3` | 33K | | | | | | $0.10 | $0.12 |
588
589
  | `nano-gpt/TheDrummer/Rocinante-12B-v1.1` | 16K | | | | | | $0.41 | $0.59 |
589
590
  | `nano-gpt/TheDrummer/skyfall-36b-v2` | 32K | | | | | | $0.55 | $0.80 |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Neuralwatt logo](https://models.dev/logos/neuralwatt.svg)Neuralwatt
4
4
 
5
- Access 21 Neuralwatt models through Mastra's model router. Authentication is handled automatically using the `NEURALWATT_API_KEY` environment variable.
5
+ Access 22 Neuralwatt models through Mastra's model router. Authentication is handled automatically using the `NEURALWATT_API_KEY` environment variable.
6
6
 
7
7
  Learn more in the [Neuralwatt documentation](https://portal.neuralwatt.com/docs).
8
8
 
@@ -50,6 +50,7 @@ for await (const chunk of stream) {
50
50
  | `neuralwatt/kimi-k2.6-flex` | 262K | | | | | | $0.34 | $2 |
51
51
  | `neuralwatt/kimi-k2.7-code-flex` | 262K | | | | | | $0.47 | $2 |
52
52
  | `neuralwatt/kimi-k3` | 1.0M | | | | | | $3 | $15 |
53
+ | `neuralwatt/kimi-k3-fast` | 1.0M | | | | | | $3 | $15 |
53
54
  | `neuralwatt/moonshotai/Kimi-K2.5` | 262K | | | | | | $0.52 | $3 |
54
55
  | `neuralwatt/moonshotai/Kimi-K2.6` | 262K | | | | | | $0.69 | $3 |
55
56
  | `neuralwatt/moonshotai/Kimi-K2.7-Code` | 262K | | | | | | $0.95 | $4 |