@mastra/mcp-docs-server 1.3.7-alpha.3 → 1.3.7-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/harness/agent-controller.md +18 -0
- package/.docs/docs/mastra-platform/api.md +88 -0
- package/.docs/docs/mastra-platform/observability.md +27 -19
- package/.docs/docs/server/request-context.md +5 -5
- package/.docs/models/environment-variables.md +2 -1
- package/.docs/models/gateways/merge-gateway.md +2 -1
- package/.docs/models/gateways/netlify.md +5 -1
- package/.docs/models/gateways/openrouter.md +2 -1
- package/.docs/models/gateways/vercel.md +2 -2
- package/.docs/models/index.md +3 -2
- package/.docs/models/providers/aixy.md +14 -8
- package/.docs/models/providers/chutes.md +4 -4
- package/.docs/models/providers/cloudferro-sherlock.md +2 -2
- package/.docs/models/providers/edenai.md +10 -4
- package/.docs/models/providers/kenari.md +5 -1
- package/.docs/models/providers/kilo.md +8 -7
- package/.docs/models/providers/llmgateway-providers.md +8 -7
- package/.docs/models/providers/llmgateway.md +6 -5
- package/.docs/models/providers/lowrouter.md +16 -12
- package/.docs/models/providers/meta.md +3 -2
- package/.docs/models/providers/nano-gpt.md +3 -3
- package/.docs/models/providers/opencode-go.md +3 -3
- package/.docs/models/providers/opencode.md +5 -5
- package/.docs/models/providers/prime.md +136 -0
- package/.docs/models/providers.md +2 -1
- package/.docs/reference/agent-controller/agent-controller-class.md +1 -1
- package/.docs/reference/agent-controller/session.md +78 -12
- package/.docs/reference/cli/mastra.md +15 -15
- package/package.json +5 -5
|
@@ -133,6 +133,24 @@ const session = await controller.createSession({
|
|
|
133
133
|
|
|
134
134
|
Use [`session.thread.create()`](https://mastra.ai/reference/agent-controller/session) and [`session.thread.switch()`](https://mastra.ai/reference/agent-controller/session) to move one live Session between conversations.
|
|
135
135
|
|
|
136
|
+
### Transfer thread ownership
|
|
137
|
+
|
|
138
|
+
Each new thread stores its durable owner in `metadata.ownerId` and its original creator in `metadata.createdBy`. Both default to the Session host's `ownerId`. `createdBy` doesn't change when ownership transfers.
|
|
139
|
+
|
|
140
|
+
Read the active thread's owner and transfer it through `session.thread`:
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
const currentOwnerId = await session.thread.getOwner()
|
|
144
|
+
|
|
145
|
+
await session.thread.transferOwnership({
|
|
146
|
+
toOwnerId: 'user-456',
|
|
147
|
+
})
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Transfers are serialized within one process. Hosts that require a durable cross-process compare-and-set should commit it in their own storage first, then call `transferOwnership()` to mirror the owner onto the active thread.
|
|
151
|
+
|
|
152
|
+
Every run snapshots the thread owner when it starts. Tools and other dynamic runtime code can read that value from `AgentControllerRequestContext.threadOwnerId`. If ownership changes during a run, the active run keeps the old snapshot and the next run receives the new owner. `context.session.ownerId` remains the identity of the process-local Session host.
|
|
153
|
+
|
|
136
154
|
### List stored messages from the client
|
|
137
155
|
|
|
138
156
|
Use the Agent Controller client to page through a thread's stored messages. Passing an options object returns the messages with pagination metadata:
|
|
@@ -179,6 +179,94 @@ The API returns `401` for invalid credentials, `403` for organization authorizat
|
|
|
179
179
|
|
|
180
180
|
Hosted observability doesn't provide a feedback creation route. Export feedback from the application as described in [Export feedback to Mastra Platform](https://mastra.ai/docs/observability/feedback).
|
|
181
181
|
|
|
182
|
+
## Metrics API
|
|
183
|
+
|
|
184
|
+
The Metrics API queries metrics exported to Mastra Platform Observability. Because the API is unversioned, backwards compatibility isn't guaranteed. Rate limits, retention, and ingestion-to-query freshness aren't published contracts.
|
|
185
|
+
|
|
186
|
+
The endpoints share their query parameters, request bodies, and response types with the Mastra runtime metric routes. See the [metric queries reference](https://mastra.ai/reference/observability/metrics/queries) for the full contract, including [shared filters](https://mastra.ai/reference/observability/metrics/queries), [analytics methods](https://mastra.ai/reference/observability/metrics/queries), and [metric discovery](https://mastra.ai/reference/observability/metrics/queries).
|
|
187
|
+
|
|
188
|
+
Use the root URL for your environment's data-residency region:
|
|
189
|
+
|
|
190
|
+
| Region | Root URL |
|
|
191
|
+
| -------------- | ------------------------------------------------------ |
|
|
192
|
+
| United States | `https://observability.mastra.ai/api/observability` |
|
|
193
|
+
| European Union | `https://observability.eu.mastra.ai/api/observability` |
|
|
194
|
+
|
|
195
|
+
Telemetry stays in its residency region. Querying the other region returns no records for the environment. See [Observability co-location](https://mastra.ai/docs/mastra-platform/regions) for the environment-to-region mapping.
|
|
196
|
+
|
|
197
|
+
### Authentication and project scope
|
|
198
|
+
|
|
199
|
+
Every request requires a platform access token. Create one in [Mastra Platform](https://projects.mastra.ai), or use the token written to `.env` during Platform setup.
|
|
200
|
+
|
|
201
|
+
Include `X-Mastra-Project-Id` to limit results to one project. If you omit it, the query covers metrics in every project available to the token's organization.
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
curl -sS "https://observability.mastra.ai/api/observability/discovery/metric-names?prefix=mastra_model_" \
|
|
205
|
+
-H "Authorization: Bearer $MASTRA_PLATFORM_ACCESS_TOKEN" \
|
|
206
|
+
-H "X-Mastra-Project-Id: $MASTRA_PROJECT_ID" | jq
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Use an organization-scoped Platform access token. Gateway inference keys such as `mk_*` keys aren't accepted. Queries remain constrained to the token's organization even when you supply a project ID.
|
|
210
|
+
|
|
211
|
+
### Endpoints
|
|
212
|
+
|
|
213
|
+
| Method | Endpoint | Description |
|
|
214
|
+
| ------ | -------------------------------- | --------------------------------------- |
|
|
215
|
+
| GET | `/metrics` | List raw metric records |
|
|
216
|
+
| POST | `/metrics/aggregate` | Return one aggregate value |
|
|
217
|
+
| POST | `/metrics/breakdown` | Group metrics by dimensions |
|
|
218
|
+
| POST | `/metrics/timeseries` | Bucket metrics by interval |
|
|
219
|
+
| POST | `/metrics/percentiles` | Return percentile series for one metric |
|
|
220
|
+
| GET | `/discovery/metric-names` | List metric names |
|
|
221
|
+
| GET | `/discovery/metric-label-keys` | List label keys for a metric |
|
|
222
|
+
| GET | `/discovery/metric-label-values` | List values for a metric label key |
|
|
223
|
+
|
|
224
|
+
The list and discovery endpoints take their arguments as query parameters. See [`listMetrics(args)`](https://mastra.ai/reference/observability/metrics/queries) and [metric discovery](https://mastra.ai/reference/observability/metrics/queries) in the metric queries reference for the parameters each one accepts.
|
|
225
|
+
|
|
226
|
+
Analytics endpoints accept the same JSON request bodies and return types as the [metric queries reference](https://mastra.ai/reference/observability/metrics/queries), including `name`, `aggregation`, `filters`, `groupBy`, `interval`, `percentiles`, `comparePeriod`, `limit`, `orderDirection`, and `distinctColumn`.
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
curl -sS "https://observability.mastra.ai/api/observability/metrics/aggregate" \
|
|
230
|
+
-X POST \
|
|
231
|
+
-H "Authorization: Bearer $MASTRA_PLATFORM_ACCESS_TOKEN" \
|
|
232
|
+
-H "X-Mastra-Project-Id: $MASTRA_PROJECT_ID" \
|
|
233
|
+
-H "Content-Type: application/json" \
|
|
234
|
+
--data '{"name":["mastra_model_total_input_tokens","mastra_model_total_output_tokens"],"aggregation":"sum","filters":{"timestamp":{"start":"2026-09-13T00:00:00Z","end":"2026-10-13T00:00:00Z"}},"comparePeriod":"previous_period"}' | jq
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
`filters.timestamp` is optional. If you omit `start` and `end`, the query covers all retained data. `comparePeriod` requires both `start` and `end`. Without them, the previous-period fields are `null`.
|
|
238
|
+
|
|
239
|
+
The API returns `401` for invalid credentials, `403` for organization authorization failures, and `400` for malformed query arguments or JSON bodies.
|
|
240
|
+
|
|
241
|
+
#### `MastraClient`
|
|
242
|
+
|
|
243
|
+
`MastraClient` from `@mastra/client-js` exposes the analytics and discovery methods. Set `baseUrl` to the region's host without the `/api/observability` path:
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
import { MastraClient } from '@mastra/client-js'
|
|
247
|
+
|
|
248
|
+
const mastraClient = new MastraClient({
|
|
249
|
+
baseUrl: 'https://observability.mastra.ai',
|
|
250
|
+
headers: {
|
|
251
|
+
Authorization: `Bearer ${process.env.MASTRA_PLATFORM_ACCESS_TOKEN}`,
|
|
252
|
+
'X-Mastra-Project-Id': process.env.MASTRA_PROJECT_ID!,
|
|
253
|
+
},
|
|
254
|
+
})
|
|
255
|
+
|
|
256
|
+
const result = await mastraClient.getMetricAggregate({
|
|
257
|
+
name: ['mastra_model_total_input_tokens', 'mastra_model_total_output_tokens'],
|
|
258
|
+
aggregation: 'sum',
|
|
259
|
+
})
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
#### CLI
|
|
263
|
+
|
|
264
|
+
The [`mastra api metric`](https://mastra.ai/reference/cli/mastra) commands target the United States endpoint by default. Pass `--url` to query the European Union region:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
mastra api --url https://observability.eu.mastra.ai metric aggregate '<json>'
|
|
268
|
+
```
|
|
269
|
+
|
|
182
270
|
## Gateway proxy endpoints
|
|
183
271
|
|
|
184
272
|
Visit the [Gateway documentation](https://gateway.mastra.ai/docs) for more details.
|
|
@@ -168,6 +168,8 @@ The CLI can infer platform credentials from your project environment. See the [`
|
|
|
168
168
|
|
|
169
169
|
You can query exported feedback over HTTP. See the [Feedback API](https://mastra.ai/docs/mastra-platform/api) for its current status, regional endpoints, authentication, project scoping, and supported query parameters such as `traceId` and `environment`.
|
|
170
170
|
|
|
171
|
+
You can query exported metrics over HTTP, with `MastraClient`, or with `mastra api metric`. See the [Metrics API](https://mastra.ai/docs/mastra-platform/api) for regional endpoints, authentication, project scoping, and supported endpoints.
|
|
172
|
+
|
|
171
173
|
## Import existing traces
|
|
172
174
|
|
|
173
175
|
Use `mastra traces import` to move existing trace history from a supported observability provider into an existing Mastra Platform project. The command reads and validates complete traces at the source, converts them into Mastra spans, then uses a shared workflow for preparation, upload, resume, and verification.
|
|
@@ -207,15 +209,17 @@ If `mastra init` configured observability for the project, use the token it wrot
|
|
|
207
209
|
|
|
208
210
|
You can run `--dry-run` without this token because a dry run doesn't contact the collector or query API.
|
|
209
211
|
|
|
210
|
-
|
|
212
|
+
`--target-project` names the destination: the Mastra Platform project that receives the traces. Specify it with a project name, slug, or ID, or set `MASTRA_PROJECT_ID`:
|
|
211
213
|
|
|
212
214
|
```bash
|
|
213
|
-
npx mastra traces import langfuse --project my-project --dry-run
|
|
215
|
+
npx mastra traces import langfuse --target-project my-mastra-project --dry-run
|
|
214
216
|
```
|
|
215
217
|
|
|
216
|
-
The `--project` flag takes precedence over `MASTRA_PROJECT_ID`. Without either value, the CLI uses the project linked in `.mastra-project.json`.
|
|
218
|
+
The `--target-project` flag takes precedence over `MASTRA_PROJECT_ID`. Without either value, the CLI uses the project linked in `.mastra-project.json`.
|
|
219
|
+
|
|
220
|
+
The source project isn't a command-line option. The provider credentials in `.env` select it, and the preparation summary names it before anything is uploaded.
|
|
217
221
|
|
|
218
|
-
For a headless environment, set the API token and organization ID. The command uses `MASTRA_API_TOKEN` for project discovery, upload, and read-back. Set the project ID or pass `--project`:
|
|
222
|
+
For a headless environment, set the API token and organization ID. The command uses `MASTRA_API_TOKEN` for project discovery, upload, and read-back. Set the project ID or pass `--target-project`:
|
|
219
223
|
|
|
220
224
|
```bash
|
|
221
225
|
MASTRA_API_TOKEN=<mastra-api-token>
|
|
@@ -225,7 +229,7 @@ MASTRA_PROJECT_ID=<project-id>
|
|
|
225
229
|
|
|
226
230
|
### Configure Langfuse
|
|
227
231
|
|
|
228
|
-
Create [project API keys in Langfuse](https://langfuse.com/docs/api-and-data-platform/features/public-api), then add them to `.env` or `.env.local` in the directory where you run the command:
|
|
232
|
+
Langfuse API keys belong to one Langfuse project, so they also select the source project. Create [project API keys in Langfuse](https://langfuse.com/docs/api-and-data-platform/features/public-api), then add them to `.env` or `.env.local` in the directory where you run the command:
|
|
229
233
|
|
|
230
234
|
```bash
|
|
231
235
|
LANGFUSE_PUBLIC_KEY=<langfuse-public-key>
|
|
@@ -243,12 +247,12 @@ LANGFUSE_BASE_URL=https://us.cloud.langfuse.com
|
|
|
243
247
|
Run a dry run before uploading:
|
|
244
248
|
|
|
245
249
|
```bash
|
|
246
|
-
npx mastra traces import langfuse --project my-project --dry-run
|
|
250
|
+
npx mastra traces import langfuse --target-project my-mastra-project --dry-run
|
|
247
251
|
```
|
|
248
252
|
|
|
249
253
|
The dry run reads the source, prepares valid Mastra traces locally, and reports:
|
|
250
254
|
|
|
251
|
-
- The source and destination
|
|
255
|
+
- The source Langfuse project by name and ID, and the destination Mastra Platform project.
|
|
252
256
|
- The fixed import window.
|
|
253
257
|
- Prepared and skipped trace and span counts.
|
|
254
258
|
- The size of the prepared local data.
|
|
@@ -258,22 +262,24 @@ It doesn't upload traces. The command prints a `--resume` command that uploads t
|
|
|
258
262
|
|
|
259
263
|
### Choose the import window
|
|
260
264
|
|
|
261
|
-
By default, the command selects the last 30 days, ending when the import starts. Use `--
|
|
265
|
+
By default, the command selects the last 30 days, ending when the import starts. Use `--since` and `--until` to choose a smaller window:
|
|
262
266
|
|
|
263
267
|
```bash
|
|
264
268
|
npx mastra traces import langfuse \
|
|
265
|
-
--project my-project \
|
|
266
|
-
--
|
|
267
|
-
--
|
|
269
|
+
--target-project my-mastra-project \
|
|
270
|
+
--since "$SINCE" \
|
|
271
|
+
--until "$UNTIL" \
|
|
268
272
|
--dry-run
|
|
269
273
|
```
|
|
270
274
|
|
|
271
|
-
Set `
|
|
275
|
+
Set `SINCE` and `UNTIL` to ISO 8601 dates or timestamps. The following rules apply:
|
|
272
276
|
|
|
273
|
-
- `--
|
|
274
|
-
- `--
|
|
277
|
+
- `--until` can't be in the future or outside the current 30-day Platform retention period.
|
|
278
|
+
- `--since` must be earlier than `--until` and inside the current retention period.
|
|
275
279
|
- The selected window can't exceed 30 days.
|
|
276
|
-
- If only `--
|
|
280
|
+
- If only `--until` is set, the default start is the later of 30 days before `--until` and the current retention boundary.
|
|
281
|
+
|
|
282
|
+
Commands written with the earlier `--from` and `--to` names still work.
|
|
277
283
|
|
|
278
284
|
Trace eligibility is based on the root observation's start time. The Langfuse adapter discovers roots in the selected window and then reads all currently available observations for each selected trace. It skips the complete trace if the available parent-child tree or timestamps are invalid.
|
|
279
285
|
|
|
@@ -282,13 +288,13 @@ Trace eligibility is based on the root observation's start time. The Langfuse ad
|
|
|
282
288
|
Run the command without `--dry-run` to upload the prepared traces:
|
|
283
289
|
|
|
284
290
|
```bash
|
|
285
|
-
npx mastra traces import langfuse --project my-project
|
|
291
|
+
npx mastra traces import langfuse --target-project my-mastra-project
|
|
286
292
|
```
|
|
287
293
|
|
|
288
294
|
The CLI displays the preparation summary and asks for confirmation before upload. Pass `--yes` to skip this prompt in an automated environment:
|
|
289
295
|
|
|
290
296
|
```bash
|
|
291
|
-
npx mastra traces import langfuse --project my-project --yes
|
|
297
|
+
npx mastra traces import langfuse --target-project my-mastra-project --yes
|
|
292
298
|
```
|
|
293
299
|
|
|
294
300
|
The importer keeps every trace in one upload request and checkpoints progress only after Mastra Platform acknowledges the batch. Temporary source and destination failures use bounded retries.
|
|
@@ -304,10 +310,10 @@ Use the exact command printed by the CLI when a dry run, cancellation, interrupt
|
|
|
304
310
|
```bash
|
|
305
311
|
npx mastra traces import langfuse \
|
|
306
312
|
--resume 00000000-0000-0000-0000-000000000000 \
|
|
307
|
-
--project my-project
|
|
313
|
+
--target-project my-mastra-project
|
|
308
314
|
```
|
|
309
315
|
|
|
310
|
-
A resumed import must use the original provider and destination project. Its saved date window can't be changed, so `--
|
|
316
|
+
A resumed import must use the original provider and destination project. Its saved date window can't be changed, so `--since`, `--until`, and `--dry-run` can't be combined with `--resume`.
|
|
311
317
|
|
|
312
318
|
Resume behavior depends on where the command stopped:
|
|
313
319
|
|
|
@@ -337,7 +343,9 @@ These files can contain trace content. Mastra creates the import directory and f
|
|
|
337
343
|
For Langfuse imports:
|
|
338
344
|
|
|
339
345
|
- Observations become Mastra spans with their parent-child relationships and timestamps.
|
|
346
|
+
- Langfuse `AGENT`, `TOOL`, and `EVALUATOR` observations, and plain spans that carry OpenTelemetry GenAI attributes such as `gen_ai.operation.name: invoke_agent`, keep their primitive type and name. Mastra Platform shows them in the Primitive type and Primitive name columns and includes them in those filters, like native traces.
|
|
340
347
|
- Supported fields such as names, input, output, errors, model details, usage, cost, tags, and source context are mapped when present.
|
|
348
|
+
- Environments you set in Langfuse, such as `staging`, are kept. Langfuse's built-in `default` environment isn't copied. Those traces have no environment in Mastra, and Mastra Studio shows them for every environment.
|
|
341
349
|
- Destination trace and span IDs are deterministic. Original Langfuse IDs remain in span metadata for correlation.
|
|
342
350
|
- Unknown Langfuse observation types become generic spans and produce a warning instead of being silently discarded.
|
|
343
351
|
- Only trace observations are imported. Scores, feedback, datasets, attachments, and logs aren't imported.
|
|
@@ -284,11 +284,11 @@ requestContext.set(MASTRA_RESOURCE_ID_KEY, user.id)
|
|
|
284
284
|
requestContext.set(MASTRA_THREAD_ID_KEY, threadId)
|
|
285
285
|
```
|
|
286
286
|
|
|
287
|
-
| Key | Purpose
|
|
288
|
-
| --------------------------- |
|
|
289
|
-
| `MASTRA_RESOURCE_ID_KEY` | Forces all memory operations to use this resource ID. The server validates that accessed threads belong to this resource and returns 403 if not.
|
|
290
|
-
| `MASTRA_THREAD_ID_KEY` | Forces thread operations to use this thread ID, overriding client-provided values
|
|
291
|
-
| `MASTRA_MESSAGE_AUTHOR_KEY` | Names who sent a user message as `{ id, name?, avatarUrl? }`. Agent-controller sessions
|
|
287
|
+
| Key | Purpose |
|
|
288
|
+
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
289
|
+
| `MASTRA_RESOURCE_ID_KEY` | Forces all memory operations to use this resource ID. The server validates that accessed threads belong to this resource and returns 403 if not. |
|
|
290
|
+
| `MASTRA_THREAD_ID_KEY` | Forces thread operations to use this thread ID, overriding client-provided values |
|
|
291
|
+
| `MASTRA_MESSAGE_AUTHOR_KEY` | Names who sent a user message as `{ id, name?, avatarUrl? }`. Agent-controller sessions persist it at `content.metadata.signal.author` and mirror it to `providerMetadata.mastra.author` for compatibility, so a thread shared by several people can show who wrote what. |
|
|
292
292
|
|
|
293
293
|
These keys are used to implement user isolation in multi-tenant applications. See [Authorization middleware](https://mastra.ai/docs/server/middleware) for usage examples.
|
|
294
294
|
|
|
@@ -140,8 +140,8 @@ List of required environment variables for each model provider and gateway suppo
|
|
|
140
140
|
| [Ofox](https://mastra.ai/models/providers/ofox) | `ofox/*` | `OFOX_API_KEY` |
|
|
141
141
|
| [Ollama Cloud](https://mastra.ai/models/providers/ollama-cloud) | `ollama-cloud/*` | `OLLAMA_API_KEY` |
|
|
142
142
|
| [OpenAI](https://mastra.ai/models/providers/openai) | `openai/*` | `OPENAI_API_KEY` |
|
|
143
|
+
| [OpenCode](https://mastra.ai/models/providers/opencode) | `opencode/*` | `OPENCODE_API_KEY` |
|
|
143
144
|
| [OpenCode Go](https://mastra.ai/models/providers/opencode-go) | `opencode-go/*` | `OPENCODE_API_KEY` |
|
|
144
|
-
| [OpenCode Zen](https://mastra.ai/models/providers/opencode) | `opencode/*` | `OPENCODE_API_KEY` |
|
|
145
145
|
| [OpenReason](https://mastra.ai/models/providers/openreason) | `openreason/*` | `OPENREASON_API_KEY` |
|
|
146
146
|
| [Opper](https://mastra.ai/models/providers/opper) | `opper/*` | `OPPER_API_KEY` |
|
|
147
147
|
| [OrcaRouter](https://mastra.ai/models/providers/orcarouter) | `orcarouter/*` | `ORCAROUTER_API_KEY` |
|
|
@@ -153,6 +153,7 @@ List of required environment variables for each model provider and gateway suppo
|
|
|
153
153
|
| [Pioneer](https://mastra.ai/models/providers/pioneer) | `pioneer/*` | `PIONEER_API_KEY` |
|
|
154
154
|
| [Poe](https://mastra.ai/models/providers/poe) | `poe/*` | `POE_API_KEY` |
|
|
155
155
|
| [Poolside](https://mastra.ai/models/providers/poolside) | `poolside/*` | `POOLSIDE_API_KEY` |
|
|
156
|
+
| [Prime Inference](https://mastra.ai/models/providers/prime) | `prime/*` | `PRIME_API_KEY` |
|
|
156
157
|
| [Privatemode AI](https://mastra.ai/models/providers/privatemode-ai) | `privatemode-ai/*` | `PRIVATEMODE_API_KEY` |
|
|
157
158
|
| [QiHang](https://mastra.ai/models/providers/qihang-ai) | `qihang-ai/*` | `QIHANG_API_KEY` |
|
|
158
159
|
| [Qiniu](https://mastra.ai/models/providers/qiniu-ai) | `qiniu-ai/*` | `QINIU_API_KEY` |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Merge Gateway
|
|
6
6
|
|
|
7
|
-
Merge Gateway aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
7
|
+
Merge Gateway aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 199 models through Mastra's model router.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Merge Gateway documentation](https://docs.merge.dev/merge-gateway).
|
|
10
10
|
|
|
@@ -97,6 +97,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
97
97
|
| `google/gemini-3.7-flash` |
|
|
98
98
|
| `google/gemini-3.8-flash` |
|
|
99
99
|
| `google/gemini-embedding-001` |
|
|
100
|
+
| `google/gemini-embedding-2` |
|
|
100
101
|
| `google/gemini-flash-latest` |
|
|
101
102
|
| `google/gemini-flash-lite-latest` |
|
|
102
103
|
| `google/gemma-3-12b-it` |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Netlify
|
|
6
6
|
|
|
7
|
-
Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access
|
|
7
|
+
Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access 274 models through Mastra's model router.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Netlify documentation](https://docs.netlify.com/build/ai-gateway/overview/).
|
|
10
10
|
|
|
@@ -75,6 +75,10 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
75
75
|
| `gemini/gemini-flash-latest` |
|
|
76
76
|
| `gemini/gemini-flash-lite-latest` |
|
|
77
77
|
| `gemini/gemini-nano-banana-2.1` |
|
|
78
|
+
| `meta/muse-spark-1.1` |
|
|
79
|
+
| `meta/muse-spark-1.2` |
|
|
80
|
+
| `meta/muse-spark-1.3` |
|
|
81
|
+
| `meta/muse-wonder-1.0` |
|
|
78
82
|
| `openai/chat-latest` |
|
|
79
83
|
| `openai/gpt-4.1` |
|
|
80
84
|
| `openai/gpt-4.1-mini` |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# OpenRouter
|
|
6
6
|
|
|
7
|
-
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
7
|
+
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 380 models through Mastra's model router.
|
|
8
8
|
|
|
9
9
|
Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
|
|
10
10
|
|
|
@@ -176,6 +176,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
176
176
|
| `meta/muse-spark-1.2-contributor` |
|
|
177
177
|
| `meta/muse-spark-1.3` |
|
|
178
178
|
| `meta/muse-spark-1.3-contributor` |
|
|
179
|
+
| `meta/muse-wonder` |
|
|
179
180
|
| `microsoft/phi-4` |
|
|
180
181
|
| `microsoft/wizardlm-2-8x22b` |
|
|
181
182
|
| `minimax/minimax-01` |
|
|
@@ -81,12 +81,10 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
81
81
|
| `amazon/nova-micro` |
|
|
82
82
|
| `amazon/nova-pro` |
|
|
83
83
|
| `amazon/titan-embed-text-v2` |
|
|
84
|
-
| `anthropic/claude-3-haiku` |
|
|
85
84
|
| `anthropic/claude-fable-5` |
|
|
86
85
|
| `anthropic/claude-fable-5.1` |
|
|
87
86
|
| `anthropic/claude-haiku-4.5` |
|
|
88
87
|
| `anthropic/claude-haiku-5.5` |
|
|
89
|
-
| `anthropic/claude-opus-4` |
|
|
90
88
|
| `anthropic/claude-opus-4.5` |
|
|
91
89
|
| `anthropic/claude-opus-4.6` |
|
|
92
90
|
| `anthropic/claude-opus-4.7` |
|
|
@@ -146,6 +144,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
146
144
|
| `deepseek/deepseek-v4-pro` |
|
|
147
145
|
| `deepseek/deepseek-v4-pro-0813` |
|
|
148
146
|
| `deepseek/deepseek-v4.1-flash` |
|
|
147
|
+
| `deepseek/deepseek-v4.1-flash-fast` |
|
|
149
148
|
| `fireworks/ember-1` |
|
|
150
149
|
| `fish-audio/s1` |
|
|
151
150
|
| `fish-audio/s2-pro` |
|
|
@@ -220,6 +219,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
220
219
|
| `meta/muse-spark-1.2-contributor` |
|
|
221
220
|
| `meta/muse-spark-1.3` |
|
|
222
221
|
| `meta/muse-spark-1.3-contributor` |
|
|
222
|
+
| `meta/muse-wonder-1.0` |
|
|
223
223
|
| `microsoft/mai-transcribe-2` |
|
|
224
224
|
| `microsoft/mai-transcribe-2-streaming` |
|
|
225
225
|
| `microsoft/mai-voice-2` |
|
package/.docs/models/index.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Model Providers
|
|
6
6
|
|
|
7
|
-
Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to
|
|
7
|
+
Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 7910 models from 215 providers through a single API.
|
|
8
8
|
|
|
9
9
|
## Features
|
|
10
10
|
|
|
@@ -502,8 +502,8 @@ Every provider below works with the model router as `provider/model`. Read the p
|
|
|
502
502
|
- [OCI Generative AI](https://mastra.ai/models/providers/oci)
|
|
503
503
|
- [Ofox](https://mastra.ai/models/providers/ofox)
|
|
504
504
|
- [Ollama Cloud](https://mastra.ai/models/providers/ollama-cloud)
|
|
505
|
+
- [OpenCode](https://mastra.ai/models/providers/opencode)
|
|
505
506
|
- [OpenCode Go](https://mastra.ai/models/providers/opencode-go)
|
|
506
|
-
- [OpenCode Zen](https://mastra.ai/models/providers/opencode)
|
|
507
507
|
- [OpenReason](https://mastra.ai/models/providers/openreason)
|
|
508
508
|
- [Opper](https://mastra.ai/models/providers/opper)
|
|
509
509
|
- [OrcaRouter](https://mastra.ai/models/providers/orcarouter)
|
|
@@ -515,6 +515,7 @@ Every provider below works with the model router as `provider/model`. Read the p
|
|
|
515
515
|
- [Pioneer](https://mastra.ai/models/providers/pioneer)
|
|
516
516
|
- [Poe](https://mastra.ai/models/providers/poe)
|
|
517
517
|
- [Poolside](https://mastra.ai/models/providers/poolside)
|
|
518
|
+
- [Prime Inference](https://mastra.ai/models/providers/prime)
|
|
518
519
|
- [Privatemode AI](https://mastra.ai/models/providers/privatemode-ai)
|
|
519
520
|
- [QiHang](https://mastra.ai/models/providers/qihang-ai)
|
|
520
521
|
- [Qiniu](https://mastra.ai/models/providers/qiniu-ai)
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Aixy
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 7 Aixy models through Mastra's model router. Authentication is handled automatically using the `AIXY_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Aixy documentation](https://docs.aixy-gateway.com/integrations/overview).
|
|
10
10
|
|
|
@@ -19,7 +19,7 @@ const agent = new Agent({
|
|
|
19
19
|
id: "my-agent",
|
|
20
20
|
name: "My Agent",
|
|
21
21
|
instructions: "You are a helpful assistant",
|
|
22
|
-
model: "aixy/openai/gpt-
|
|
22
|
+
model: "aixy/openai/gpt-5.6-luna"
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
// Generate a response
|
|
@@ -36,9 +36,15 @@ for await (const chunk of stream) {
|
|
|
36
36
|
|
|
37
37
|
## Models
|
|
38
38
|
|
|
39
|
-
| Model
|
|
40
|
-
|
|
|
41
|
-
| `aixy/openai/gpt-
|
|
39
|
+
| Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
|
|
40
|
+
| --------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
|
|
41
|
+
| `aixy/openai/gpt-5.6-luna` | 1.1M | | | | | | $0.20 | $1 |
|
|
42
|
+
| `aixy/openai/gpt-5.6-sol` | 1.1M | | | | | | $4 | $20 |
|
|
43
|
+
| `aixy/openai/gpt-5.6-terra` | 1.1M | | | | | | $2 | $12 |
|
|
44
|
+
| `aixy/openai/gpt-6-astra` | 1.1M | | | | | | $10 | $50 |
|
|
45
|
+
| `aixy/openai/gpt-6-luna` | 1.1M | | | | | | $0.10 | $0.50 |
|
|
46
|
+
| `aixy/openai/gpt-6-sol` | 1.1M | | | | | | $2 | $10 |
|
|
47
|
+
| `aixy/openai/gpt-6.1-sol` | 1.1M | | | | | | $2 | $10 |
|
|
42
48
|
|
|
43
49
|
Model availability, capabilities, context windows, and pricing are sourced from [models.dev](https://models.dev) and may change.
|
|
44
50
|
|
|
@@ -52,7 +58,7 @@ const agent = new Agent({
|
|
|
52
58
|
name: "custom-agent",
|
|
53
59
|
model: {
|
|
54
60
|
url: "https://api.aixy-gateway.com/v1",
|
|
55
|
-
id: "aixy/openai/gpt-
|
|
61
|
+
id: "aixy/openai/gpt-5.6-luna",
|
|
56
62
|
apiKey: process.env.AIXY_API_KEY,
|
|
57
63
|
headers: {
|
|
58
64
|
"X-Custom-Header": "value"
|
|
@@ -70,8 +76,8 @@ const agent = new Agent({
|
|
|
70
76
|
model: ({ requestContext }) => {
|
|
71
77
|
const useAdvanced = requestContext.task === "complex";
|
|
72
78
|
return useAdvanced
|
|
73
|
-
? "aixy/openai/gpt-
|
|
74
|
-
: "aixy/openai/gpt-
|
|
79
|
+
? "aixy/openai/gpt-6.1-sol"
|
|
80
|
+
: "aixy/openai/gpt-5.6-luna";
|
|
75
81
|
}
|
|
76
82
|
});
|
|
77
83
|
```
|
|
@@ -41,14 +41,14 @@ for await (const chunk of stream) {
|
|
|
41
41
|
| `chutes/deepseek-ai/DeepSeek-V3.2-TEE` | 131K | | | | | | $1 | $1 |
|
|
42
42
|
| `chutes/deepseek-ai/DeepSeek-V4-Flash-0731-TEE` | 1.0M | | | | | | $0.44 | $1 |
|
|
43
43
|
| `chutes/google/gemma-4-31B-turbo-TEE` | 131K | | | | | | $0.12 | $0.37 |
|
|
44
|
-
| `chutes/moonshotai/Kimi-K2.6-TEE` | 262K | | | | | | $0.
|
|
45
|
-
| `chutes/moonshotai/Kimi-K3-TEE` | 1.0M | | | | | | $
|
|
44
|
+
| `chutes/moonshotai/Kimi-K2.6-TEE` | 262K | | | | | | $0.45 | $2 |
|
|
45
|
+
| `chutes/moonshotai/Kimi-K3-TEE` | 1.0M | | | | | | $2 | $10 |
|
|
46
46
|
| `chutes/Nemotron-3-Nano-Omni-30B-TEE` | 131K | | | | | | $0.02 | $0.10 |
|
|
47
47
|
| `chutes/Qwen/Qwen3-235B-A22B-Thinking-2507-TEE` | 262K | | | | | | $0.30 | $1 |
|
|
48
48
|
| `chutes/Qwen/Qwen3-32B-TEE` | 41K | | | | | | $0.10 | $0.42 |
|
|
49
49
|
| `chutes/Qwen/Qwen3.5-397B-A17B-TEE` | 262K | | | | | | $0.45 | $3 |
|
|
50
|
-
| `chutes/Qwen/Qwen3.6-27B-TEE` | 262K | | | | | | $0.
|
|
51
|
-
| `chutes/Qwen/Qwen3.8-27B-TEE` | 262K | | | | | | $0.
|
|
50
|
+
| `chutes/Qwen/Qwen3.6-27B-TEE` | 262K | | | | | | $0.25 | $2 |
|
|
51
|
+
| `chutes/Qwen/Qwen3.8-27B-TEE` | 262K | | | | | | $0.04 | $1 |
|
|
52
52
|
| `chutes/unsloth/Mistral-Nemo-Instruct-2407-TEE` | 131K | | | | | | $0.02 | $0.10 |
|
|
53
53
|
| `chutes/zai-org/GLM-5.1-TEE` | 203K | | | | | | $0.98 | $3 |
|
|
54
54
|
| `chutes/zai-org/GLM-5.2-TEE` | 1.0M | | | | | | $1 | $4 |
|
|
@@ -41,8 +41,8 @@ for await (const chunk of stream) {
|
|
|
41
41
|
| `cloudferro-sherlock/meta-llama/Llama-3.3-70B-Instruct` | 70K | | | | | | $3 | $3 |
|
|
42
42
|
| `cloudferro-sherlock/MiniMaxAI/MiniMax-M2.5` | 196K | | | | | | $0.30 | $1 |
|
|
43
43
|
| `cloudferro-sherlock/openai/gpt-oss-120b` | 131K | | | | | | $3 | $3 |
|
|
44
|
-
| `cloudferro-sherlock/speakleash/Bielik-11B-v2.6-Instruct` | 32K | | | | | | $0.67 | $0.67 |
|
|
45
44
|
| `cloudferro-sherlock/speakleash/Bielik-11B-v3.0-Instruct` | 32K | | | | | | $0.67 | $0.67 |
|
|
45
|
+
| `cloudferro-sherlock/zai-org/GLM-5.3` | 262K | | | | | | $0.34 | $4 |
|
|
46
46
|
|
|
47
47
|
Model availability, capabilities, context windows, and pricing are sourced from [models.dev](https://models.dev) and may change.
|
|
48
48
|
|
|
@@ -74,7 +74,7 @@ const agent = new Agent({
|
|
|
74
74
|
model: ({ requestContext }) => {
|
|
75
75
|
const useAdvanced = requestContext.task === "complex";
|
|
76
76
|
return useAdvanced
|
|
77
|
-
? "cloudferro-sherlock/
|
|
77
|
+
? "cloudferro-sherlock/zai-org/GLM-5.3"
|
|
78
78
|
: "cloudferro-sherlock/MiniMaxAI/MiniMax-M2.5";
|
|
79
79
|
}
|
|
80
80
|
});
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Eden AI
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 309 Eden AI models through Mastra's model router. Authentication is handled automatically using the `EDENAI_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Eden AI documentation](https://docs.edenai.co).
|
|
10
10
|
|
|
@@ -181,13 +181,18 @@ for await (const chunk of stream) {
|
|
|
181
181
|
| `edenai/google/gemini-pro-latest` | 1.0M | | | | | | $2 | $12 |
|
|
182
182
|
| `edenai/greenference/deepseek-v4.1-flash` | 1.0M | | | | | | $0.22 | $0.88 |
|
|
183
183
|
| `edenai/greenference/gpt-oss-20b` | 131K | | | | | | $0.01 | $0.04 |
|
|
184
|
+
| `edenai/greenpt/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.16 | $0.39 |
|
|
185
|
+
| `edenai/greenpt/deepseek-v4.1-flash` | 1.0M | | | | | | $0.25 | $1 |
|
|
186
|
+
| `edenai/greenpt/gpt-oss-120b` | 128K | | | | | | $0.22 | $0.78 |
|
|
187
|
+
| `edenai/greenpt/llama-3.3-70b-instruct` | 128K | | | | | | $1 | $1 |
|
|
188
|
+
| `edenai/greenpt/qwen3-235b-a22b-instruct-2507` | 250K | | | | | | $1 | $3 |
|
|
184
189
|
| `edenai/groq/openai/gpt-oss-120b` | 131K | | | | | | $0.15 | $0.60 |
|
|
185
190
|
| `edenai/groq/openai/gpt-oss-20b` | 131K | | | | | | $0.07 | $0.30 |
|
|
186
191
|
| `edenai/groq/openai/gpt-oss-safeguard-20b` | 131K | | | | | | $0.07 | $0.30 |
|
|
187
192
|
| `edenai/infomaniak/mistralai/Ministral-3-14B-Instruct-2512` | 100K | | | | | | $0.34 | $0.45 |
|
|
188
193
|
| `edenai/ionos/meta-llama/Llama-3.3-70B-Instruct` | 128K | | | | | | $0.73 | $0.73 |
|
|
189
194
|
| `edenai/ionos/openai/gpt-oss-120b` | 131K | | | | | | $0.17 | $0.73 |
|
|
190
|
-
| `edenai/ionos/Qwen/Qwen3-Coder-Next` | 262K | | | | | | $0.17 | $0.
|
|
195
|
+
| `edenai/ionos/Qwen/Qwen3-Coder-Next` | 262K | | | | | | $0.17 | $0.89 |
|
|
191
196
|
| `edenai/minimax/MiniMax-M2` | 205K | | | | | | $0.30 | $1 |
|
|
192
197
|
| `edenai/minimax/MiniMax-M2.1` | 205K | | | | | | $0.30 | $1 |
|
|
193
198
|
| `edenai/minimax/MiniMax-M2.5` | 205K | | | | | | $0.30 | $1 |
|
|
@@ -276,12 +281,13 @@ for await (const chunk of stream) {
|
|
|
276
281
|
| `edenai/qwen/qwen3.8-max` | 1.0M | | | | | | $2 | $6 |
|
|
277
282
|
| `edenai/qwen/qwen3.8-max-0902` | 1.0M | | | | | | $2 | $6 |
|
|
278
283
|
| `edenai/qwen/qwen3.8-omni-flash` | 1.0M | | | | | | $0.15 | $0.47 |
|
|
279
|
-
| `edenai/scaleway/deepseek-v4-flash-0731` | 256K | | | | | | $0.45 | $0.
|
|
284
|
+
| `edenai/scaleway/deepseek-v4-flash-0731` | 256K | | | | | | $0.45 | $0.89 |
|
|
285
|
+
| `edenai/scaleway/deepseek-v4.1-flash` | 256K | | | | | | $0.67 | $2 |
|
|
280
286
|
| `edenai/scaleway/gemma-3-27b-it` | 40K | | | | | | $0.29 | $0.57 |
|
|
281
287
|
| `edenai/scaleway/gpt-oss-120b` | 128K | | | | | | $0.17 | $0.67 |
|
|
282
288
|
| `edenai/scaleway/llama-3.3-70b-instruct` | 128K | | | | | | $1 | $1 |
|
|
283
289
|
| `edenai/scaleway/qwen3-235b-a22b-instruct-2507` | 250K | | | | | | $0.84 | $3 |
|
|
284
|
-
| `edenai/scaleway/qwen3-coder-30b-a3b-instruct` | 128K | | | | | | $0.22 | $0.
|
|
290
|
+
| `edenai/scaleway/qwen3-coder-30b-a3b-instruct` | 128K | | | | | | $0.22 | $0.89 |
|
|
285
291
|
| `edenai/tencent/deepseek-v4-pro-0813` | 1.0M | | | | | | $0.66 | $2 |
|
|
286
292
|
| `edenai/tencent/hy3` | 256K | | | | | | $0.13 | $0.53 |
|
|
287
293
|
| `edenai/tencent/hy4-preview` | 1.0M | | | | | | $0.83 | $3 |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Kenari
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 64 Kenari models through Mastra's model router. Authentication is handled automatically using the `KENARI_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Kenari documentation](https://kenari.id/docs).
|
|
10
10
|
|
|
@@ -73,6 +73,7 @@ for await (const chunk of stream) {
|
|
|
73
73
|
| `kenari/grok-4-5` | 500K | | | | | | — | — |
|
|
74
74
|
| `kenari/grok-4-6` | 500K | | | | | | — | — |
|
|
75
75
|
| `kenari/grok-build-0-1` | 256K | | | | | | — | — |
|
|
76
|
+
| `kenari/grok-imagine-image` | 16K | | | | | | — | — |
|
|
76
77
|
| `kenari/grok-imagine-image-2-0` | 8K | | | | | | — | — |
|
|
77
78
|
| `kenari/hy3` | 256K | | | | | | — | — |
|
|
78
79
|
| `kenari/hy3:free` | 256K | | | | | | — | — |
|
|
@@ -89,6 +90,9 @@ for await (const chunk of stream) {
|
|
|
89
90
|
| `kenari/minimax-m3` | 1.0M | | | | | | — | — |
|
|
90
91
|
| `kenari/mistral-large:free` | 262K | | | | | | — | — |
|
|
91
92
|
| `kenari/mistral-medium-3-5:free` | 262K | | | | | | — | — |
|
|
93
|
+
| `kenari/nano-banana-2` | 131K | | | | | | — | — |
|
|
94
|
+
| `kenari/nano-banana-2-lite` | 66K | | | | | | — | — |
|
|
95
|
+
| `kenari/nano-banana-pro` | 66K | | | | | | — | — |
|
|
92
96
|
| `kenari/nemotron-3-nano-30b-a3b` | 262K | | | | | | — | — |
|
|
93
97
|
| `kenari/nemotron-3-super-120b-a12b` | 262K | | | | | | — | — |
|
|
94
98
|
| `kenari/nemotron-3-super-120b-a12b:free` | 262K | | | | | | — | — |
|