@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.
- package/.docs/docs/agents/a2a.md +39 -0
- package/.docs/docs/agents/skills.md +15 -1
- package/.docs/docs/capabilities/channels/overview.md +19 -0
- package/.docs/docs/evals/overview.md +16 -4
- package/.docs/docs/index.md +1 -1
- package/.docs/docs/observability/feedback.md +16 -0
- package/.docs/guides/getting-started/quickstart.md +1 -1
- package/.docs/guides/voice/realtime-voice.md +28 -2
- package/.docs/models/gateways/neon.md +4 -1
- package/.docs/models/gateways/netlify.md +1 -2
- package/.docs/models/gateways/openrouter.md +1 -1
- package/.docs/models/gateways/vercel.md +8 -2
- package/.docs/models/index.md +1 -1
- package/.docs/models/providers/cortecs.md +2 -1
- package/.docs/models/providers/deepinfra.md +2 -2
- package/.docs/models/providers/digitalocean.md +3 -2
- package/.docs/models/providers/empiriolabs.md +6 -4
- package/.docs/models/providers/hyper.md +4 -5
- package/.docs/models/providers/kilo.md +3 -3
- package/.docs/models/providers/llmgateway.md +2 -2
- package/.docs/models/providers/nano-gpt.md +3 -2
- package/.docs/models/providers/neuralwatt.md +2 -1
- package/.docs/models/providers/ofox.md +74 -16
- package/.docs/models/providers/opencode-go.md +1 -1
- package/.docs/models/providers/opencode.md +2 -2
- package/.docs/models/providers/vivgrid.md +4 -2
- package/.docs/models/providers/wandb.md +1 -1
- package/.docs/reference/agents/channels.md +22 -1
- package/.docs/reference/channels/slack-provider.md +2 -0
- package/.docs/reference/client-js/workflows.md +13 -0
- package/.docs/reference/configuration.md +25 -0
- package/.docs/reference/file-based-agents/config.md +22 -21
- package/.docs/reference/file-based-agents/instructions.md +42 -17
- package/.docs/reference/index.md +1 -0
- package/.docs/reference/observability/metrics/automatic-metrics.md +10 -8
- package/.docs/reference/server/routes.md +25 -11
- package/.docs/reference/storage/composite.md +58 -0
- package/.docs/reference/tools/bedrock-kb-tool.md +117 -0
- package/.docs/reference/voice/google.md +19 -3
- package/.docs/reference/workflows/step.md +40 -0
- package/CHANGELOG.md +22 -0
- package/package.json +4 -4
package/.docs/docs/agents/a2a.md
CHANGED
|
@@ -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.
|
package/.docs/docs/index.md
CHANGED
|
@@ -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`.
|
|
@@ -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
|
|
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
|
|
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
|
|
4
4
|
|
|
5
|
-
Neon aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
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
|
|
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-
|
|
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
|
|
4
4
|
|
|
5
|
-
Vercel aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
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
|
|
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` |
|
package/.docs/models/index.md
CHANGED
|
@@ -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
|
|
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
|
|
4
4
|
|
|
5
|
-
Access
|
|
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.
|
|
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.
|
|
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
|
|
4
4
|
|
|
5
|
-
Access
|
|
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-
|
|
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
|
|
4
4
|
|
|
5
|
-
Access
|
|
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-
|
|
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-
|
|
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-
|
|
111
|
+
: "empiriolabs/deepseek-v3-2";
|
|
110
112
|
}
|
|
111
113
|
});
|
|
112
114
|
```
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Charm Hyper
|
|
4
4
|
|
|
5
|
-
Access
|
|
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.
|
|
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.
|
|
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.
|
|
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` |
|
|
143
|
-
| `kilo/inclusionai/ling-3.0-
|
|
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` |
|
|
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.
|
|
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
|
|
4
4
|
|
|
5
|
-
Access
|
|
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.
|
|
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
|
|
4
4
|
|
|
5
|
-
Access
|
|
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 |
|