@mastra/mcp-docs-server 1.1.35-alpha.8 → 1.1.35
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/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +48 -4
- package/.docs/docs/agents/background-tasks.md +62 -2
- package/.docs/docs/agents/processors.md +9 -1
- package/.docs/docs/agents/response-caching.md +148 -0
- package/.docs/docs/agents/signals.md +151 -0
- package/.docs/docs/agents/using-tools.md +8 -0
- package/.docs/docs/browser/agent-browser.md +15 -0
- package/.docs/docs/browser/stagehand.md +25 -1
- package/.docs/docs/editor/tools.md +1 -1
- package/.docs/docs/index.md +2 -2
- package/.docs/docs/mastra-platform/configuration.md +1 -1
- package/.docs/docs/mastra-platform/overview.md +1 -1
- package/.docs/docs/memory/observational-memory.md +61 -13
- package/.docs/docs/memory/semantic-recall.md +68 -6
- package/.docs/docs/observability/logging.md +2 -2
- package/.docs/docs/observability/metrics/overview.md +4 -4
- package/.docs/docs/observability/overview.md +6 -6
- package/.docs/docs/observability/tracing/bridges/otel.md +25 -0
- package/.docs/docs/observability/tracing/exporters/arize.md +5 -5
- package/.docs/docs/observability/tracing/exporters/braintrust.md +37 -0
- package/.docs/docs/observability/tracing/exporters/langfuse.md +21 -0
- package/.docs/docs/observability/tracing/exporters/{cloud.md → mastra-platform.md} +28 -26
- package/.docs/docs/observability/tracing/exporters/{default.md → mastra-storage.md} +56 -19
- package/.docs/docs/observability/tracing/exporters/otel.md +79 -2
- package/.docs/docs/observability/tracing/overview.md +30 -29
- package/.docs/docs/observability/tracing/processors/sensitive-data-filter.md +6 -6
- package/.docs/docs/server/mastra-server.md +30 -19
- package/.docs/docs/studio/observability.md +4 -4
- package/.docs/docs/studio/overview.md +6 -0
- package/.docs/docs/voice/overview.md +84 -0
- package/.docs/docs/workflows/suspend-and-resume.md +28 -1
- package/.docs/guides/deployment/inngest.md +23 -0
- package/.docs/guides/migrations/mastra-cloud.md +6 -6
- package/.docs/guides/migrations/upgrade-to-v1/tracing.md +19 -17
- package/.docs/models/gateways/netlify.md +2 -1
- package/.docs/models/gateways/openrouter.md +4 -1
- package/.docs/models/gateways/vercel.md +2 -1
- package/.docs/models/index.md +1 -1
- package/.docs/models/providers/chutes.md +23 -54
- package/.docs/models/providers/databricks.md +96 -0
- package/.docs/models/providers/deepseek.md +3 -1
- package/.docs/models/providers/digitalocean.md +9 -2
- package/.docs/models/providers/firepass.md +71 -0
- package/.docs/models/providers/google.md +3 -2
- package/.docs/models/providers/kilo.md +5 -3
- package/.docs/models/providers/llmgateway.md +7 -1
- package/.docs/models/providers/nebius.md +37 -55
- package/.docs/models/providers/novita-ai.md +5 -5
- package/.docs/models/providers/nvidia.md +59 -49
- package/.docs/models/providers/ollama-cloud.md +1 -1
- package/.docs/models/providers/openai.md +2 -0
- package/.docs/models/providers/opencode.md +44 -43
- package/.docs/models/providers/poe.md +4 -1
- package/.docs/models/providers/sarvam.md +72 -0
- package/.docs/models/providers/wafer.ai.md +2 -1
- package/.docs/models/providers/xiaomi-token-plan-ams.md +6 -5
- package/.docs/models/providers/xiaomi-token-plan-cn.md +6 -5
- package/.docs/models/providers/xiaomi-token-plan-sgp.md +6 -5
- package/.docs/models/providers.md +3 -1
- package/.docs/reference/agents/agent.md +85 -0
- package/.docs/reference/browser/agent-browser.md +37 -11
- package/.docs/reference/browser/stagehand-browser.md +35 -9
- package/.docs/reference/cli/mastra.md +33 -1
- package/.docs/reference/client-js/agents.md +115 -1
- package/.docs/reference/client-js/responses.md +4 -0
- package/.docs/reference/configuration.md +6 -6
- package/.docs/reference/editor/tool-provider.md +3 -3
- package/.docs/reference/harness/harness-class.md +21 -8
- package/.docs/reference/index.md +5 -0
- package/.docs/reference/memory/observational-memory.md +11 -1
- package/.docs/reference/observability/metrics/automatic-metrics.md +2 -4
- package/.docs/reference/observability/tracing/bridges/datadog.md +2 -2
- package/.docs/reference/observability/tracing/bridges/otel.md +26 -4
- package/.docs/reference/observability/tracing/configuration.md +6 -3
- package/.docs/reference/observability/tracing/exporters/arize.md +1 -1
- package/.docs/reference/observability/tracing/exporters/braintrust.md +2 -0
- package/.docs/reference/observability/tracing/exporters/cloud-exporter.md +3 -1
- package/.docs/reference/observability/tracing/exporters/console-exporter.md +2 -2
- package/.docs/reference/observability/tracing/exporters/default-exporter.md +7 -1
- package/.docs/reference/observability/tracing/exporters/mastra-platform-exporter.md +263 -0
- package/.docs/reference/observability/tracing/exporters/mastra-storage-exporter.md +194 -0
- package/.docs/reference/observability/tracing/exporters/otel.md +12 -8
- package/.docs/reference/observability/tracing/instances.md +2 -2
- package/.docs/reference/observability/tracing/interfaces.md +37 -2
- package/.docs/reference/observability/tracing/processors/sensitive-data-filter.md +22 -0
- package/.docs/reference/observability/tracing/span-filtering.md +2 -2
- package/.docs/reference/processors/prefill-error-handler.md +3 -3
- package/.docs/reference/processors/response-cache.md +114 -0
- package/.docs/reference/processors/tool-call-filter.md +28 -0
- package/.docs/reference/storage/clickhouse.md +8 -8
- package/.docs/reference/storage/cloudflare-d1.md +1 -1
- package/.docs/reference/storage/cloudflare.md +1 -1
- package/.docs/reference/storage/composite.md +1 -1
- package/.docs/reference/storage/convex.md +1 -1
- package/.docs/reference/storage/dsql.md +428 -0
- package/.docs/reference/storage/duckdb.md +3 -3
- package/.docs/reference/storage/dynamodb.md +1 -1
- package/.docs/reference/storage/lance.md +1 -1
- package/.docs/reference/storage/libsql.md +1 -1
- package/.docs/reference/storage/postgresql.md +1 -1
- package/.docs/reference/storage/upstash.md +1 -1
- package/.docs/reference/streaming/ChunkType.md +44 -0
- package/.docs/reference/tools/brightdata.md +167 -0
- package/.docs/reference/tools/create-tool.md +46 -0
- package/.docs/reference/voice/inworld.md +133 -0
- package/.docs/reference/workflows/workflow-state-reader.md +113 -0
- package/CHANGELOG.md +106 -0
- package/package.json +5 -5
|
@@ -219,6 +219,33 @@ playAudio(audioStream)
|
|
|
219
219
|
|
|
220
220
|
Visit the [Deepgram Voice Reference](https://mastra.ai/reference/voice/deepgram) for more information on the Deepgram voice provider.
|
|
221
221
|
|
|
222
|
+
**Inworld**:
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
import { Agent } from '@mastra/core/agent'
|
|
226
|
+
import { InworldVoice } from '@mastra/voice-inworld'
|
|
227
|
+
import { playAudio } from '@mastra/node-audio'
|
|
228
|
+
|
|
229
|
+
const voiceAgent = new Agent({
|
|
230
|
+
id: 'voice-agent',
|
|
231
|
+
name: 'Voice Agent',
|
|
232
|
+
instructions: 'You are a voice assistant that can help users with their tasks.',
|
|
233
|
+
model: 'openai/gpt-5.4',
|
|
234
|
+
voice: new InworldVoice(),
|
|
235
|
+
})
|
|
236
|
+
|
|
237
|
+
const { text } = await voiceAgent.generate('What color is the sky?')
|
|
238
|
+
|
|
239
|
+
// Convert text to speech to an Audio Stream
|
|
240
|
+
const audioStream = await voiceAgent.voice.speak(text, {
|
|
241
|
+
speaker: 'Dennis', // Optional: specify a speaker
|
|
242
|
+
})
|
|
243
|
+
|
|
244
|
+
playAudio(audioStream)
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Visit the [Inworld Voice Reference](https://mastra.ai/reference/voice/inworld) for more information on the Inworld voice provider.
|
|
248
|
+
|
|
222
249
|
**Speechify**:
|
|
223
250
|
|
|
224
251
|
```typescript
|
|
@@ -477,6 +504,34 @@ const { text } = await voiceAgent.generate(transcript)
|
|
|
477
504
|
|
|
478
505
|
Visit the [Deepgram Voice Reference](https://mastra.ai/reference/voice/deepgram) for more information on the Deepgram voice provider.
|
|
479
506
|
|
|
507
|
+
**Inworld**:
|
|
508
|
+
|
|
509
|
+
```typescript
|
|
510
|
+
import { Agent } from '@mastra/core/agent'
|
|
511
|
+
import { InworldVoice } from '@mastra/voice-inworld'
|
|
512
|
+
import { createReadStream } from 'fs'
|
|
513
|
+
|
|
514
|
+
const voiceAgent = new Agent({
|
|
515
|
+
id: 'voice-agent',
|
|
516
|
+
name: 'Voice Agent',
|
|
517
|
+
instructions: 'You are a voice assistant that can help users with their tasks.',
|
|
518
|
+
model: 'openai/gpt-5.4',
|
|
519
|
+
voice: new InworldVoice(),
|
|
520
|
+
})
|
|
521
|
+
|
|
522
|
+
// Use an audio file from a URL
|
|
523
|
+
const audioStream = await createReadStream('./how_can_i_help_you.mp3')
|
|
524
|
+
|
|
525
|
+
// Convert audio to text
|
|
526
|
+
const transcript = await voiceAgent.voice.listen(audioStream)
|
|
527
|
+
console.log(`User said: ${transcript}`)
|
|
528
|
+
|
|
529
|
+
// Generate a response based on the transcript
|
|
530
|
+
const { text } = await voiceAgent.generate(transcript)
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
Visit the [Inworld Voice Reference](https://mastra.ai/reference/voice/inworld) for more information on the Inworld voice provider.
|
|
534
|
+
|
|
480
535
|
**Sarvam**:
|
|
481
536
|
|
|
482
537
|
```typescript
|
|
@@ -779,6 +834,34 @@ const voice = new DeepgramVoice({
|
|
|
779
834
|
|
|
780
835
|
Visit the [Deepgram Voice Reference](https://mastra.ai/reference/voice/deepgram) for more information on the Deepgram voice provider.
|
|
781
836
|
|
|
837
|
+
**Inworld**:
|
|
838
|
+
|
|
839
|
+
```typescript
|
|
840
|
+
// Inworld Voice Configuration
|
|
841
|
+
const voice = new InworldVoice({
|
|
842
|
+
speechModel: {
|
|
843
|
+
name: 'inworld-tts-2',
|
|
844
|
+
apiKey: process.env.INWORLD_API_KEY,
|
|
845
|
+
},
|
|
846
|
+
listeningModel: {
|
|
847
|
+
name: 'groq/whisper-large-v3',
|
|
848
|
+
apiKey: process.env.INWORLD_API_KEY,
|
|
849
|
+
},
|
|
850
|
+
speaker: 'Dennis',
|
|
851
|
+
audioEncoding: 'MP3',
|
|
852
|
+
sampleRateHertz: 48000,
|
|
853
|
+
language: 'en-US',
|
|
854
|
+
})
|
|
855
|
+
|
|
856
|
+
// Per-call options: `deliveryMode` is honored only by `inworld-tts-2`.
|
|
857
|
+
const audioStream = await voice.speak('Hello!', {
|
|
858
|
+
deliveryMode: 'BALANCED', // 'STABLE' | 'BALANCED' | 'CREATIVE'
|
|
859
|
+
language: 'en-US', // BCP-47 per-call override
|
|
860
|
+
})
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
Visit the [Inworld Voice Reference](https://mastra.ai/reference/voice/inworld) for more information on the Inworld voice provider.
|
|
864
|
+
|
|
782
865
|
**Speechify**:
|
|
783
866
|
|
|
784
867
|
```typescript
|
|
@@ -1024,5 +1107,6 @@ For more information on the CompositeVoice, refer to the [CompositeVoice Referen
|
|
|
1024
1107
|
- [Google Gemini Live Voice](https://mastra.ai/reference/voice/google-gemini-live)
|
|
1025
1108
|
- [AWS Nova Sonic Voice](https://mastra.ai/reference/voice/aws-nova-sonic)
|
|
1026
1109
|
- [Deepgram Voice](https://mastra.ai/reference/voice/deepgram)
|
|
1110
|
+
- [Inworld Voice](https://mastra.ai/reference/voice/inworld)
|
|
1027
1111
|
- [PlayAI Voice](https://mastra.ai/reference/voice/playai)
|
|
1028
1112
|
- [Voice Examples](https://github.com/mastra-ai/voice-examples)
|
|
@@ -188,6 +188,32 @@ The `suspended` array contains the IDs of any suspended workflows and steps from
|
|
|
188
188
|
['nested-workflow', 'step-1']
|
|
189
189
|
```
|
|
190
190
|
|
|
191
|
+
## Recovering suspended runs
|
|
192
|
+
|
|
193
|
+
Use `workflow.getWorkflowRunById()` with `createWorkflowStateReader()` when your application needs to recover a suspended run from storage. The reader exposes suspended steps, resume labels, step payloads, and step outputs without reading the raw snapshot shape.
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
import { createWorkflowStateReader } from '@mastra/core/workflows'
|
|
197
|
+
|
|
198
|
+
const workflow = mastra.getWorkflow('testWorkflow')
|
|
199
|
+
const state = await workflow.getWorkflowRunById('run-123')
|
|
200
|
+
|
|
201
|
+
if (state?.status === 'suspended') {
|
|
202
|
+
const reader = createWorkflowStateReader(state)
|
|
203
|
+
const suspendedStep = reader.getSuspendedStep()
|
|
204
|
+
const approvalLabel = reader.getResumeLabel('approve')
|
|
205
|
+
const run = await workflow.createRun({ runId: state.runId })
|
|
206
|
+
|
|
207
|
+
await run.resume({
|
|
208
|
+
step: approvalLabel?.stepId ?? suspendedStep?.path,
|
|
209
|
+
resumeData: { approved: true },
|
|
210
|
+
forEachIndex: approvalLabel?.foreachIndex,
|
|
211
|
+
})
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
For nested workflows, `suspendedStep.path` contains the resume path. For `foreach` suspensions, matching resume labels include `foreachIndex` when the label points to a specific iteration.
|
|
216
|
+
|
|
191
217
|
## Sleep
|
|
192
218
|
|
|
193
219
|
Sleep methods can be used to pause execution at the workflow level, which sets the status to `waiting`. By comparison, `suspend()` pauses execution within a specific step and sets the status to `suspended`.
|
|
@@ -202,4 +228,5 @@ Sleep methods can be used to pause execution at the workflow level, which sets t
|
|
|
202
228
|
- [Control Flow](https://mastra.ai/docs/workflows/control-flow)
|
|
203
229
|
- [Human-in-the-loop](https://mastra.ai/docs/workflows/human-in-the-loop)
|
|
204
230
|
- [Snapshots](https://mastra.ai/docs/workflows/snapshots)
|
|
205
|
-
- [Time Travel](https://mastra.ai/docs/workflows/time-travel)
|
|
231
|
+
- [Time Travel](https://mastra.ai/docs/workflows/time-travel)
|
|
232
|
+
- [Workflow state reader](https://mastra.ai/reference/workflows/workflow-state-reader)
|
|
@@ -74,6 +74,29 @@ export const inngest = new Inngest({
|
|
|
74
74
|
})
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
+
#### Selecting dev or cloud mode with `INNGEST_DEV`
|
|
78
|
+
|
|
79
|
+
The Inngest SDK runs in one of two modes: dev or cloud. From v4 onward, the SDK defaults to cloud mode and requires `INNGEST_EVENT_KEY` and `INNGEST_SIGNING_KEY`. The examples above set the mode in code with `isDev: true`. As an alternative, set the [`INNGEST_DEV` environment variable](https://www.inngest.com/docs/sdk/environment-variables#inngest-dev) so the same client code works across environments:
|
|
80
|
+
|
|
81
|
+
- `INNGEST_DEV=1`: force dev mode. The SDK talks to a local Inngest Dev Server and disables signature verification.
|
|
82
|
+
- `INNGEST_DEV=0`: force cloud mode. The SDK talks to Inngest Cloud and requires event and signing keys.
|
|
83
|
+
- `INNGEST_DEV=<url>`: force dev mode and point the SDK at the Dev Server at `<url>`, for example `http://localhost:8288`.
|
|
84
|
+
- Unset: defaults to cloud mode.
|
|
85
|
+
|
|
86
|
+
When `INNGEST_DEV` is set, you can drop `isDev` and `baseUrl` from the client:
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
import { Inngest } from 'inngest'
|
|
90
|
+
|
|
91
|
+
export const inngest = new Inngest({
|
|
92
|
+
id: 'mastra',
|
|
93
|
+
})
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
> **Warning:** Do not set `INNGEST_DEV` in production. It disables signature verification, which is required to securely receive events from Inngest Cloud.
|
|
97
|
+
|
|
98
|
+
The `isDev` option on `new Inngest()` overrides `INNGEST_DEV` when both are set.
|
|
99
|
+
|
|
77
100
|
### Creating steps
|
|
78
101
|
|
|
79
102
|
Define the individual steps that will compose your workflow:
|
|
@@ -235,8 +235,8 @@ export const mastra = new Mastra({
|
|
|
235
235
|
import { Mastra } from '@mastra/core/mastra'
|
|
236
236
|
import {
|
|
237
237
|
Observability,
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
MastraStorageExporter,
|
|
239
|
+
MastraPlatformExporter,
|
|
240
240
|
SensitiveDataFilter,
|
|
241
241
|
} from '@mastra/observability'
|
|
242
242
|
|
|
@@ -245,7 +245,7 @@ export const mastra = new Mastra({
|
|
|
245
245
|
configs: {
|
|
246
246
|
default: {
|
|
247
247
|
serviceName: 'my-app',
|
|
248
|
-
exporters: [new
|
|
248
|
+
exporters: [new MastraStorageExporter(), new MastraPlatformExporter()],
|
|
249
249
|
spanOutputProcessors: [new SensitiveDataFilter()],
|
|
250
250
|
},
|
|
251
251
|
},
|
|
@@ -253,8 +253,8 @@ export const mastra = new Mastra({
|
|
|
253
253
|
})
|
|
254
254
|
```
|
|
255
255
|
|
|
256
|
-
- `
|
|
257
|
-
- `
|
|
256
|
+
- `MastraStorageExporter` persists observability events to Mastra Storage for [Studio](https://mastra.ai/docs/studio/observability).
|
|
257
|
+
- `MastraPlatformExporter` sends observability events to Mastra Platform when `MASTRA_CLOUD_ACCESS_TOKEN` is set.
|
|
258
258
|
- `SensitiveDataFilter` redacts passwords, tokens, and keys from span data before export.
|
|
259
259
|
|
|
260
260
|
See the [observability overview](https://mastra.ai/docs/observability/overview) for the full configuration, including composite storage with DuckDB for metrics.
|
|
@@ -295,7 +295,7 @@ MASTRA_PROJECT_ID="<staging-id>" mastra studio deploy --env-file .env.staging --
|
|
|
295
295
|
MASTRA_PROJECT_ID="<production-id>" mastra studio deploy --env-file .env.production --yes
|
|
296
296
|
```
|
|
297
297
|
|
|
298
|
-
Each environment ends up with its own Studio URL and its own observability data. Send `MASTRA_CLOUD_ACCESS_TOKEN` and `MASTRA_PROJECT_ID` per environment so `
|
|
298
|
+
Each environment ends up with its own Studio URL and its own observability data. Send `MASTRA_CLOUD_ACCESS_TOKEN` and `MASTRA_PROJECT_ID` per environment so `MastraPlatformExporter` routes traces to the correct project.
|
|
299
299
|
|
|
300
300
|
## Deploy Server (optional)
|
|
301
301
|
|
|
@@ -4,7 +4,9 @@ The observability system has been restructured in v1 with a dedicated `@mastra/o
|
|
|
4
4
|
|
|
5
5
|
> **Observability data stops flowing on upgrade:** If you upgrade Mastra packages to v1 without migrating your `telemetry:` config to `observability:`, the old config is ignored at runtime. Your service will start cleanly with no error, but **no traces, logs, or metrics will be sent anywhere**. If you were sending data to Mastra Cloud, the dashboard will go empty.
|
|
6
6
|
>
|
|
7
|
-
> Complete this migration in the same change that bumps your Mastra packages, and verify traces appear in [Mastra Studio](https://mastra.ai/docs/studio/observability) before considering the upgrade complete. If you previously hosted on Mastra Cloud, also follow the [Mastra Cloud migration guide](https://mastra.ai/guides/migrations/mastra-cloud) — the new platform requires a new access token and a Studio project before `
|
|
7
|
+
> Complete this migration in the same change that bumps your Mastra packages, and verify traces appear in [Mastra Studio](https://mastra.ai/docs/studio/observability) before considering the upgrade complete. If you previously hosted on Mastra Cloud, also follow the [Mastra Cloud migration guide](https://mastra.ai/guides/migrations/mastra-cloud) — the new platform requires a new access token and a Studio project before `MastraPlatformExporter` can route data to it.
|
|
8
|
+
|
|
9
|
+
> **Exporter rename:** `MastraPlatformExporter` (sends data to Mastra Platform) replaces the previous `CloudExporter`, and `MastraStorageExporter` (persists data to Mastra Storage) replaces the previous `DefaultExporter`. The original classes still ship from `@mastra/observability` and behave identically, but they are deprecated. New code should use `MastraPlatformExporter` and `MastraStorageExporter`; existing imports of `CloudExporter`/`DefaultExporter` continue to work until they are removed in a future major version.
|
|
8
10
|
|
|
9
11
|
## Migration paths
|
|
10
12
|
|
|
@@ -38,8 +40,8 @@ export const mastra = new Mastra({
|
|
|
38
40
|
import { Mastra } from '@mastra/core'
|
|
39
41
|
import {
|
|
40
42
|
Observability,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
MastraStorageExporter,
|
|
44
|
+
MastraPlatformExporter,
|
|
43
45
|
SensitiveDataFilter,
|
|
44
46
|
} from '@mastra/observability'
|
|
45
47
|
|
|
@@ -49,8 +51,8 @@ export const mastra = new Mastra({
|
|
|
49
51
|
default: {
|
|
50
52
|
serviceName: 'mastra',
|
|
51
53
|
exporters: [
|
|
52
|
-
new
|
|
53
|
-
new
|
|
54
|
+
new MastraStorageExporter(), // Persists observability events to Mastra Storage
|
|
55
|
+
new MastraPlatformExporter(), // Sends observability events to Mastra Platform (if MASTRA_CLOUD_ACCESS_TOKEN is set)
|
|
54
56
|
],
|
|
55
57
|
spanOutputProcessors: [
|
|
56
58
|
new SensitiveDataFilter(), // Redacts sensitive data like passwords, tokens, keys
|
|
@@ -61,7 +63,7 @@ export const mastra = new Mastra({
|
|
|
61
63
|
})
|
|
62
64
|
```
|
|
63
65
|
|
|
64
|
-
This configuration includes `
|
|
66
|
+
This configuration includes `MastraStorageExporter`, `MastraPlatformExporter`, and `SensitiveDataFilter` processor. See the [observability tracing documentation](https://mastra.ai/docs/observability/tracing/overview) for full configuration options.
|
|
65
67
|
|
|
66
68
|
#### After (v1 with custom configuration)
|
|
67
69
|
|
|
@@ -122,7 +124,7 @@ Key changes:
|
|
|
122
124
|
|
|
123
125
|
1. Install `@mastra/observability` package
|
|
124
126
|
2. Replace `telemetry:` with `observability: new Observability()`
|
|
125
|
-
3. Use explicit `configs:` with `
|
|
127
|
+
3. Use explicit `configs:` with `MastraStorageExporter`, `MastraPlatformExporter`, and `SensitiveDataFilter`
|
|
126
128
|
4. Export types change from string literals (`'otlp'`) to exporter class instances (`new OtelExporter()`)
|
|
127
129
|
|
|
128
130
|
See the [exporters documentation](https://mastra.ai/docs/observability/tracing/overview) for all available exporters.
|
|
@@ -149,8 +151,8 @@ export const mastra = new Mastra({
|
|
|
149
151
|
import { Mastra } from '@mastra/core'
|
|
150
152
|
import {
|
|
151
153
|
Observability,
|
|
152
|
-
|
|
153
|
-
|
|
154
|
+
MastraStorageExporter,
|
|
155
|
+
MastraPlatformExporter,
|
|
154
156
|
SensitiveDataFilter,
|
|
155
157
|
} from '@mastra/observability'
|
|
156
158
|
|
|
@@ -159,7 +161,7 @@ export const mastra = new Mastra({
|
|
|
159
161
|
configs: {
|
|
160
162
|
default: {
|
|
161
163
|
serviceName: 'mastra',
|
|
162
|
-
exporters: [new
|
|
164
|
+
exporters: [new MastraStorageExporter(), new MastraPlatformExporter()],
|
|
163
165
|
spanOutputProcessors: [new SensitiveDataFilter()],
|
|
164
166
|
},
|
|
165
167
|
},
|
|
@@ -171,7 +173,7 @@ Key changes:
|
|
|
171
173
|
|
|
172
174
|
1. Install `@mastra/observability` package
|
|
173
175
|
2. Import `Observability`, exporters, and processors from `@mastra/observability`
|
|
174
|
-
3. Use explicit `configs` with `
|
|
176
|
+
3. Use explicit `configs` with `MastraStorageExporter`, `MastraPlatformExporter`, and `SensitiveDataFilter`
|
|
175
177
|
|
|
176
178
|
## Changed
|
|
177
179
|
|
|
@@ -219,8 +221,8 @@ To migrate, use `new Observability()` with explicit exporters and processors.
|
|
|
219
221
|
```diff
|
|
220
222
|
+ import {
|
|
221
223
|
+ Observability,
|
|
222
|
-
+
|
|
223
|
-
+
|
|
224
|
+
+ MastraStorageExporter,
|
|
225
|
+
+ MastraPlatformExporter,
|
|
224
226
|
+ SensitiveDataFilter,
|
|
225
227
|
+ } from '@mastra/observability';
|
|
226
228
|
|
|
@@ -232,7 +234,7 @@ To migrate, use `new Observability()` with explicit exporters and processors.
|
|
|
232
234
|
+ configs: {
|
|
233
235
|
+ default: {
|
|
234
236
|
+ serviceName: 'mastra',
|
|
235
|
-
+ exporters: [new
|
|
237
|
+
+ exporters: [new MastraStorageExporter(), new MastraPlatformExporter()],
|
|
236
238
|
+ spanOutputProcessors: [new SensitiveDataFilter()],
|
|
237
239
|
+ },
|
|
238
240
|
+ },
|
|
@@ -320,8 +322,8 @@ Simply remove the `instrumentation.mjs` file and configure observability in your
|
|
|
320
322
|
// src/mastra/index.ts
|
|
321
323
|
import {
|
|
322
324
|
Observability,
|
|
323
|
-
|
|
324
|
-
|
|
325
|
+
MastraStorageExporter,
|
|
326
|
+
MastraPlatformExporter,
|
|
325
327
|
SensitiveDataFilter,
|
|
326
328
|
} from '@mastra/observability'
|
|
327
329
|
|
|
@@ -330,7 +332,7 @@ export const mastra = new Mastra({
|
|
|
330
332
|
configs: {
|
|
331
333
|
default: {
|
|
332
334
|
serviceName: 'mastra',
|
|
333
|
-
exporters: [new
|
|
335
|
+
exporters: [new MastraStorageExporter(), new MastraPlatformExporter()],
|
|
334
336
|
spanOutputProcessors: [new SensitiveDataFilter()],
|
|
335
337
|
},
|
|
336
338
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Netlify
|
|
2
2
|
|
|
3
|
-
Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access
|
|
3
|
+
Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access 68 models through Mastra's model router.
|
|
4
4
|
|
|
5
5
|
Learn more in the [Netlify documentation](https://docs.netlify.com/build/ai-gateway/overview/).
|
|
6
6
|
|
|
@@ -57,6 +57,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
57
57
|
| `gemini/gemini-3-flash-preview` |
|
|
58
58
|
| `gemini/gemini-3-pro-image-preview` |
|
|
59
59
|
| `gemini/gemini-3.1-flash-image-preview` |
|
|
60
|
+
| `gemini/gemini-3.1-flash-lite` |
|
|
60
61
|
| `gemini/gemini-3.1-flash-lite-preview` |
|
|
61
62
|
| `gemini/gemini-3.1-pro-preview` |
|
|
62
63
|
| `gemini/gemini-3.1-pro-preview-customtools` |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenRouter
|
|
2
2
|
|
|
3
|
-
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
3
|
+
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 189 models through Mastra's model router.
|
|
4
4
|
|
|
5
5
|
Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
|
|
6
6
|
|
|
@@ -173,6 +173,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
173
173
|
| `prime-intellect/intellect-3` |
|
|
174
174
|
| `qwen/qwen-2.5-coder-32b-instruct` |
|
|
175
175
|
| `qwen/qwen-3.6-27b` |
|
|
176
|
+
| `qwen/qwen-plus` |
|
|
176
177
|
| `qwen/qwen2.5-vl-72b-instruct` |
|
|
177
178
|
| `qwen/qwen3-235b-a22b-07-25` |
|
|
178
179
|
| `qwen/qwen3-235b-a22b-thinking-2507` |
|
|
@@ -181,6 +182,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
181
182
|
| `qwen/qwen3-coder` |
|
|
182
183
|
| `qwen/qwen3-coder-30b-a3b-instruct` |
|
|
183
184
|
| `qwen/qwen3-coder-flash` |
|
|
185
|
+
| `qwen/qwen3-coder-plus` |
|
|
184
186
|
| `qwen/qwen3-coder:exacto` |
|
|
185
187
|
| `qwen/qwen3-max` |
|
|
186
188
|
| `qwen/qwen3-next-80b-a3b-instruct` |
|
|
@@ -193,6 +195,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
193
195
|
| `sourceful/riverflow-v2-max-preview` |
|
|
194
196
|
| `sourceful/riverflow-v2-standard-preview` |
|
|
195
197
|
| `stepfun/step-3.5-flash` |
|
|
198
|
+
| `tencent/hy3-preview` |
|
|
196
199
|
| `x-ai/grok-3` |
|
|
197
200
|
| `x-ai/grok-3-beta` |
|
|
198
201
|
| `x-ai/grok-3-mini` |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Vercel
|
|
2
2
|
|
|
3
|
-
Vercel aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
3
|
+
Vercel aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 247 models through Mastra's model router.
|
|
4
4
|
|
|
5
5
|
Learn more in the [Vercel documentation](https://ai-sdk.dev/providers/ai-sdk-providers).
|
|
6
6
|
|
|
@@ -113,6 +113,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
113
113
|
| `google/gemini-3-pro-image` |
|
|
114
114
|
| `google/gemini-3-pro-preview` |
|
|
115
115
|
| `google/gemini-3.1-flash-image-preview` |
|
|
116
|
+
| `google/gemini-3.1-flash-lite` |
|
|
116
117
|
| `google/gemini-3.1-flash-lite-preview` |
|
|
117
118
|
| `google/gemini-3.1-pro-preview` |
|
|
118
119
|
| `google/gemini-embedding-001` |
|
package/.docs/models/index.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Model Providers
|
|
2
2
|
|
|
3
|
-
Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to
|
|
3
|
+
Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 3895 models from 110 providers through a single API.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Chutes
|
|
2
2
|
|
|
3
|
-
Access
|
|
3
|
+
Access 39 Chutes models through Mastra's model router. Authentication is handled automatically using the `CHUTES_API_KEY` environment variable.
|
|
4
4
|
|
|
5
5
|
Learn more in the [Chutes documentation](https://llm.chutes.ai).
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ const agent = new Agent({
|
|
|
15
15
|
id: "my-agent",
|
|
16
16
|
name: "My Agent",
|
|
17
17
|
instructions: "You are a helpful assistant",
|
|
18
|
-
model: "chutes/MiniMaxAI/MiniMax-M2.
|
|
18
|
+
model: "chutes/MiniMaxAI/MiniMax-M2.5-TEE"
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
// Generate a response
|
|
@@ -34,76 +34,45 @@ for await (const chunk of stream) {
|
|
|
34
34
|
|
|
35
35
|
| Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
|
|
36
36
|
| ------------------------------------------------------ | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
|
|
37
|
-
| `chutes/
|
|
38
|
-
| `chutes/chutesai/Mistral-Small-3.2-24B-Instruct-2506` | 131K | | | | | | $0.06 | $0.18 |
|
|
39
|
-
| `chutes/deepseek-ai/DeepSeek-R1-0528-TEE` | 164K | | | | | | $0.40 | $2 |
|
|
37
|
+
| `chutes/deepseek-ai/DeepSeek-R1-0528-TEE` | 164K | | | | | | $0.45 | $2 |
|
|
40
38
|
| `chutes/deepseek-ai/DeepSeek-R1-Distill-Llama-70B` | 131K | | | | | | $0.03 | $0.11 |
|
|
41
|
-
| `chutes/deepseek-ai/DeepSeek-
|
|
42
|
-
| `chutes/deepseek-ai/DeepSeek-V3`
|
|
43
|
-
| `chutes/deepseek-ai/DeepSeek-V3-0324-TEE` | 164K | | | | | | $0.19 | $0.87 |
|
|
44
|
-
| `chutes/deepseek-ai/DeepSeek-V3.1-TEE` | 164K | | | | | | $0.20 | $0.80 |
|
|
45
|
-
| `chutes/deepseek-ai/DeepSeek-V3.1-Terminus-TEE` | 164K | | | | | | $0.23 | $0.90 |
|
|
46
|
-
| `chutes/deepseek-ai/DeepSeek-V3.2-Speciale-TEE` | 164K | | | | | | $0.27 | $0.41 |
|
|
39
|
+
| `chutes/deepseek-ai/DeepSeek-V3-0324-TEE` | 164K | | | | | | $0.25 | $1 |
|
|
40
|
+
| `chutes/deepseek-ai/DeepSeek-V3.1-TEE` | 164K | | | | | | $0.27 | $1 |
|
|
47
41
|
| `chutes/deepseek-ai/DeepSeek-V3.2-TEE` | 131K | | | | | | $0.28 | $0.42 |
|
|
48
|
-
| `chutes/
|
|
49
|
-
| `chutes/MiniMaxAI/MiniMax-M2.5-TEE` | 197K | | | | | | $0.
|
|
50
|
-
| `chutes/
|
|
51
|
-
| `chutes/
|
|
52
|
-
| `chutes/moonshotai/Kimi-K2-Instruct-0905` | 262K | | | | | | $0.39 | $2 |
|
|
53
|
-
| `chutes/moonshotai/Kimi-K2-Thinking-TEE` | 262K | | | | | | $0.40 | $2 |
|
|
54
|
-
| `chutes/moonshotai/Kimi-K2.5-TEE` | 262K | | | | | | $0.60 | $3 |
|
|
55
|
-
| `chutes/moonshotai/Kimi-K2.6-TEE` | 262K | | | | | | $0.44 | $2 |
|
|
42
|
+
| `chutes/google/gemma-4-31B-turbo-TEE` | 131K | | | | | | $0.13 | $0.38 |
|
|
43
|
+
| `chutes/MiniMaxAI/MiniMax-M2.5-TEE` | 197K | | | | | | $0.15 | $1 |
|
|
44
|
+
| `chutes/moonshotai/Kimi-K2.5-TEE` | 262K | | | | | | $0.44 | $2 |
|
|
45
|
+
| `chutes/moonshotai/Kimi-K2.6-TEE` | 262K | | | | | | $0.95 | $4 |
|
|
56
46
|
| `chutes/NousResearch/DeepHermes-3-Mistral-24B-Preview` | 33K | | | | | | $0.02 | $0.10 |
|
|
57
47
|
| `chutes/NousResearch/Hermes-4-14B` | 41K | | | | | | $0.01 | $0.05 |
|
|
58
|
-
| `chutes/
|
|
59
|
-
| `chutes/
|
|
60
|
-
| `chutes/NousResearch/Hermes-4.3-36B` | 33K | | | | | | $0.10 | $0.39 |
|
|
61
|
-
| `chutes/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16` | 262K | | | | | | $0.06 | $0.24 |
|
|
62
|
-
| `chutes/openai/gpt-oss-120b-TEE` | 131K | | | | | | $0.04 | $0.18 |
|
|
63
|
-
| `chutes/openai/gpt-oss-20b` | 131K | | | | | | $0.02 | $0.10 |
|
|
64
|
-
| `chutes/OpenGVLab/InternVL3-78B-TEE` | 33K | | | | | | $0.10 | $0.39 |
|
|
65
|
-
| `chutes/Qwen/Qwen2.5-72B-Instruct` | 33K | | | | | | $0.13 | $0.52 |
|
|
48
|
+
| `chutes/openai/gpt-oss-120b-TEE` | 131K | | | | | | $0.09 | $0.36 |
|
|
49
|
+
| `chutes/Qwen/Qwen2.5-72B-Instruct` | 33K | | | | | | $0.30 | $1 |
|
|
66
50
|
| `chutes/Qwen/Qwen2.5-Coder-32B-Instruct` | 33K | | | | | | $0.03 | $0.11 |
|
|
67
51
|
| `chutes/Qwen/Qwen2.5-VL-32B-Instruct` | 16K | | | | | | $0.05 | $0.22 |
|
|
68
|
-
| `chutes/Qwen/
|
|
69
|
-
| `chutes/Qwen/Qwen3-14B` | 41K | | | | | | $0.05 | $0.22 |
|
|
70
|
-
| `chutes/Qwen/Qwen3-235B-A22B` | 41K | | | | | | $0.30 | $1 |
|
|
71
|
-
| `chutes/Qwen/Qwen3-235B-A22B-Instruct-2507-TEE` | 262K | | | | | | $0.08 | $0.55 |
|
|
52
|
+
| `chutes/Qwen/Qwen3-235B-A22B-Instruct-2507-TEE` | 262K | | | | | | $0.10 | $0.60 |
|
|
72
53
|
| `chutes/Qwen/Qwen3-235B-A22B-Thinking-2507` | 262K | | | | | | $0.11 | $0.60 |
|
|
73
54
|
| `chutes/Qwen/Qwen3-30B-A3B` | 41K | | | | | | $0.06 | $0.22 |
|
|
74
|
-
| `chutes/Qwen/Qwen3-
|
|
75
|
-
| `chutes/Qwen/Qwen3-
|
|
76
|
-
| `chutes/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8-TEE` | 262K | | | | | | $0.22 | $0.95 |
|
|
77
|
-
| `chutes/Qwen/Qwen3-Coder-Next` | 262K | | | | | | $0.07 | $0.30 |
|
|
55
|
+
| `chutes/Qwen/Qwen3-32B-TEE` | 41K | | | | | | $0.08 | $0.24 |
|
|
56
|
+
| `chutes/Qwen/Qwen3-Coder-Next-TEE` | 262K | | | | | | $0.12 | $0.75 |
|
|
78
57
|
| `chutes/Qwen/Qwen3-Next-80B-A3B-Instruct` | 262K | | | | | | $0.10 | $0.80 |
|
|
79
|
-
| `chutes/Qwen/Qwen3-VL-235B-A22B-Instruct` | 262K | | | | | | $0.30 | $1 |
|
|
80
58
|
| `chutes/Qwen/Qwen3.5-397B-A17B-TEE` | 262K | | | | | | $0.39 | $2 |
|
|
59
|
+
| `chutes/Qwen/Qwen3.6-27B-TEE` | 262K | | | | | | $0.20 | $2 |
|
|
81
60
|
| `chutes/Qwen/Qwen3Guard-Gen-0.6B` | 33K | | | | | | $0.01 | $0.01 |
|
|
82
61
|
| `chutes/rednote-hilab/dots.ocr` | 131K | | | | | | $0.01 | $0.01 |
|
|
83
|
-
| `chutes/tngtech/DeepSeek-
|
|
84
|
-
| `chutes/tngtech/DeepSeek-TNG-R1T2-Chimera` | 164K | | | | | | $0.25 | $0.85 |
|
|
85
|
-
| `chutes/tngtech/TNG-R1T-Chimera-TEE` | 164K | | | | | | $0.25 | $0.85 |
|
|
86
|
-
| `chutes/tngtech/TNG-R1T-Chimera-Turbo` | 164K | | | | | | $0.22 | $0.60 |
|
|
62
|
+
| `chutes/tngtech/DeepSeek-TNG-R1T2-Chimera-TEE` | 164K | | | | | | $0.30 | $1 |
|
|
87
63
|
| `chutes/unsloth/gemma-3-12b-it` | 131K | | | | | | $0.03 | $0.10 |
|
|
88
|
-
| `chutes/unsloth/gemma-3-27b-it` | 128K | | | | | | $0.
|
|
64
|
+
| `chutes/unsloth/gemma-3-27b-it` | 128K | | | | | | $0.03 | $0.11 |
|
|
89
65
|
| `chutes/unsloth/gemma-3-4b-it` | 96K | | | | | | $0.01 | $0.03 |
|
|
90
|
-
| `chutes/unsloth/Llama-3.2-1B-Instruct` |
|
|
66
|
+
| `chutes/unsloth/Llama-3.2-1B-Instruct` | 16K | | | | | | $0.01 | $0.01 |
|
|
91
67
|
| `chutes/unsloth/Llama-3.2-3B-Instruct` | 16K | | | | | | $0.01 | $0.01 |
|
|
92
68
|
| `chutes/unsloth/Mistral-Nemo-Instruct-2407` | 131K | | | | | | $0.02 | $0.04 |
|
|
93
|
-
| `chutes/
|
|
94
|
-
| `chutes/XiaomiMiMo/MiMo-V2-Flash` | 262K | | | | | | $0.09 | $0.29 |
|
|
95
|
-
| `chutes/zai-org/GLM-4.5-Air` | 131K | | | | | | $0.05 | $0.22 |
|
|
96
|
-
| `chutes/zai-org/GLM-4.5-FP8` | 131K | | | | | | $0.30 | $1 |
|
|
97
|
-
| `chutes/zai-org/GLM-4.5-TEE` | 131K | | | | | | $0.35 | $2 |
|
|
98
|
-
| `chutes/zai-org/GLM-4.6-FP8` | 203K | | | | | | $0.30 | $1 |
|
|
99
|
-
| `chutes/zai-org/GLM-4.6-TEE` | 203K | | | | | | $0.40 | $2 |
|
|
69
|
+
| `chutes/XiaomiMiMo/MiMo-V2-Flash-TEE` | 262K | | | | | | $0.09 | $0.29 |
|
|
100
70
|
| `chutes/zai-org/GLM-4.6V` | 131K | | | | | | $0.30 | $0.90 |
|
|
101
|
-
| `chutes/zai-org/GLM-4.7-Flash` | 203K | | | | | | $0.06 | $0.35 |
|
|
102
71
|
| `chutes/zai-org/GLM-4.7-FP8` | 203K | | | | | | $0.30 | $1 |
|
|
103
|
-
| `chutes/zai-org/GLM-4.7-TEE` | 203K | | | | | | $0.
|
|
72
|
+
| `chutes/zai-org/GLM-4.7-TEE` | 203K | | | | | | $0.39 | $2 |
|
|
104
73
|
| `chutes/zai-org/GLM-5-TEE` | 203K | | | | | | $0.95 | $3 |
|
|
105
74
|
| `chutes/zai-org/GLM-5-Turbo` | 203K | | | | | | $0.49 | $2 |
|
|
106
|
-
| `chutes/zai-org/GLM-5.1-TEE` | 203K | | | | | | $
|
|
75
|
+
| `chutes/zai-org/GLM-5.1-TEE` | 203K | | | | | | $1 | $4 |
|
|
107
76
|
|
|
108
77
|
## Advanced configuration
|
|
109
78
|
|
|
@@ -115,7 +84,7 @@ const agent = new Agent({
|
|
|
115
84
|
name: "custom-agent",
|
|
116
85
|
model: {
|
|
117
86
|
url: "https://llm.chutes.ai/v1",
|
|
118
|
-
id: "chutes/MiniMaxAI/MiniMax-M2.
|
|
87
|
+
id: "chutes/MiniMaxAI/MiniMax-M2.5-TEE",
|
|
119
88
|
apiKey: process.env.CHUTES_API_KEY,
|
|
120
89
|
headers: {
|
|
121
90
|
"X-Custom-Header": "value"
|
|
@@ -134,7 +103,7 @@ const agent = new Agent({
|
|
|
134
103
|
const useAdvanced = requestContext.task === "complex";
|
|
135
104
|
return useAdvanced
|
|
136
105
|
? "chutes/zai-org/GLM-5.1-TEE"
|
|
137
|
-
: "chutes/MiniMaxAI/MiniMax-M2.
|
|
106
|
+
: "chutes/MiniMaxAI/MiniMax-M2.5-TEE";
|
|
138
107
|
}
|
|
139
108
|
});
|
|
140
109
|
```
|