@mastra/mcp-docs-server 1.2.19-alpha.16 → 1.2.19-alpha.18
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/mastra-platform/api.md +54 -0
- package/.docs/docs/mastra-platform/observability.md +3 -1
- package/.docs/docs/observability/feedback.md +14 -0
- package/.docs/docs/server/middleware.md +26 -0
- package/.docs/docs/subagents.md +6 -6
- package/.docs/integrations/channels/github.md +56 -9
- package/.docs/integrations/sandboxes/daytona.md +18 -0
- package/.docs/integrations/sandboxes/e2b.md +4 -0
- package/.docs/integrations/sandboxes/vercel.md +2 -2
- package/.docs/models/environment-variables.md +1 -0
- package/.docs/models/gateways/netlify.md +1 -2
- package/.docs/models/gateways/openrouter.md +1 -3
- package/.docs/models/index.md +1 -1
- package/.docs/models/providers/agnes.md +7 -6
- package/.docs/models/providers/edenai.md +5 -3
- package/.docs/models/providers/evroc.md +3 -2
- package/.docs/models/providers/hyper.md +3 -3
- package/.docs/models/providers/inceptron.md +1 -1
- package/.docs/models/providers/kilo.md +8 -10
- package/.docs/models/providers/llmgateway-providers.md +4 -3
- package/.docs/models/providers/nano-gpt.md +3 -1
- package/.docs/models/providers/opencode-go.md +2 -2
- package/.docs/models/providers/pendra.md +78 -0
- package/.docs/models/providers.md +1 -0
- package/.docs/reference/cli/mastra.md +10 -4
- package/.docs/reference/client-js/observability.md +1 -1
- package/.docs/reference/observability/feedback.md +4 -0
- package/.docs/reference/workspace/local-sandbox.md +2 -0
- package/.docs/reference/workspace/platform-sandbox.md +3 -1
- package/.docs/reference/workspace/sandbox.md +70 -2
- package/CHANGELOG.md +7 -0
- package/package.json +5 -5
|
@@ -105,6 +105,60 @@ The root URL for the endpoints below is: `/v1/gateway`
|
|
|
105
105
|
| GET | `/projects/:id/memory/threads/:threadId/observations/history` | Observation history (dashboard) |
|
|
106
106
|
| GET | `/models` | List available models |
|
|
107
107
|
|
|
108
|
+
## Observability feedback query API
|
|
109
|
+
|
|
110
|
+
The hosted feedback query API lists and analyzes feedback 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.
|
|
111
|
+
|
|
112
|
+
Use the root URL for your environment's data-residency region:
|
|
113
|
+
|
|
114
|
+
| Region | Root URL |
|
|
115
|
+
| -------------- | ------------------------------------------------------ |
|
|
116
|
+
| United States | `https://observability.mastra.ai/api/observability` |
|
|
117
|
+
| European Union | `https://observability.eu.mastra.ai/api/observability` |
|
|
118
|
+
|
|
119
|
+
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.
|
|
120
|
+
|
|
121
|
+
### Authentication and project scope
|
|
122
|
+
|
|
123
|
+
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.
|
|
124
|
+
|
|
125
|
+
Include `X-Mastra-Project-Id` to limit results to one project. If you omit it, the query covers feedback in every project available to the token's organization.
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
curl -sS "https://observability.mastra.ai/api/observability/feedback?page=0&perPage=20&feedbackType=rating" \
|
|
129
|
+
-H "Authorization: Bearer $MASTRA_PLATFORM_ACCESS_TOKEN" \
|
|
130
|
+
-H "X-Mastra-Project-Id: $MASTRA_PROJECT_ID" | jq
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
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.
|
|
134
|
+
|
|
135
|
+
### Endpoints
|
|
136
|
+
|
|
137
|
+
| Method | Endpoint | Description |
|
|
138
|
+
| ------ | ----------------------- | ---------------------------- |
|
|
139
|
+
| GET | `/feedback` | List feedback records |
|
|
140
|
+
| POST | `/feedback/aggregate` | Return one aggregate value |
|
|
141
|
+
| POST | `/feedback/breakdown` | Group feedback by dimensions |
|
|
142
|
+
| POST | `/feedback/timeseries` | Bucket feedback by interval |
|
|
143
|
+
| POST | `/feedback/percentiles` | Return percentile series |
|
|
144
|
+
|
|
145
|
+
The list endpoint accepts page-mode parameters such as `page`, `perPage`, `field`, and `direction`, plus feedback filters as query parameters. It also supports delta polling with `mode=delta`, `after`, and `limit`. Responses contain a `feedback` array and page or delta metadata.
|
|
146
|
+
|
|
147
|
+
Analytics endpoints accept the same JSON request shapes and return types as the [feedback reference](https://mastra.ai/reference/observability/feedback). Analytics operate only on numeric feedback values.
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
curl -sS "https://observability.mastra.ai/api/observability/feedback/aggregate" \
|
|
151
|
+
-X POST \
|
|
152
|
+
-H "Authorization: Bearer $MASTRA_PLATFORM_ACCESS_TOKEN" \
|
|
153
|
+
-H "X-Mastra-Project-Id: $MASTRA_PROJECT_ID" \
|
|
154
|
+
-H "Content-Type: application/json" \
|
|
155
|
+
--data '{"feedbackType":"rating","feedbackSource":"user","aggregation":"avg"}' | jq
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The API returns `401` for invalid credentials, `403` for organization authorization failures, and `400` for malformed query arguments or JSON bodies.
|
|
159
|
+
|
|
160
|
+
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).
|
|
161
|
+
|
|
108
162
|
## Gateway proxy endpoints
|
|
109
163
|
|
|
110
164
|
Visit the [Gateway documentation](https://gateway.mastra.ai/docs) for more details.
|
|
@@ -130,7 +130,7 @@ See [Mastra storage exporter](https://mastra.ai/docs/observability/integrations/
|
|
|
130
130
|
|
|
131
131
|
## View observability data
|
|
132
132
|
|
|
133
|
-
Open your project in [Mastra Platform](https://projects.mastra.ai) to inspect exported traces, logs, metrics,
|
|
133
|
+
Open your project in [Mastra Platform](https://projects.mastra.ai) to inspect exported traces, logs, metrics, and scores. A Studio or Server deployment isn't required. Query exported feedback through the hosted feedback API described below.
|
|
134
134
|
|
|
135
135
|
Use a consistent `serviceName` to filter data from a specific application or deployment.
|
|
136
136
|
|
|
@@ -164,6 +164,8 @@ bun x mastra api trace list
|
|
|
164
164
|
|
|
165
165
|
The CLI can infer platform credentials from your project environment. See the [`mastra api` CLI reference](https://mastra.ai/reference/cli/mastra) for available commands, filtering, pagination, credential resolution, and `curl` examples.
|
|
166
166
|
|
|
167
|
+
You can query exported feedback over HTTP. See the [observability feedback query API](https://mastra.ai/docs/mastra-platform/api) for its current status, regional endpoints, authentication, and project scoping.
|
|
168
|
+
|
|
167
169
|
## Next steps
|
|
168
170
|
|
|
169
171
|
- 📹 [Mastra observability and Studio workshop](https://www.youtube.com/watch?v=dKO_a3RPra0)
|
|
@@ -33,6 +33,10 @@ await mastra.observability.addFeedback({
|
|
|
33
33
|
})
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
+
When you pass only `traceId` and `spanId`, `addFeedback()` rehydrates the target from configured observability storage before emitting the feedback event. Configure [`MastraStorageExporter`](https://mastra.ai/docs/observability/integrations/exporters/mastra-storage) when feedback is added after the traced execution has finished. If the trace isn't available in storage, Mastra logs a warning and drops the feedback event.
|
|
37
|
+
|
|
38
|
+
During a live traced execution, you can pass its `correlationContext` to emit feedback without rehydrating the trace from storage. This path is useful when the active request collects feedback before its tracing context ends.
|
|
39
|
+
|
|
36
40
|
## Find the trace for a message
|
|
37
41
|
|
|
38
42
|
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:
|
|
@@ -143,6 +147,16 @@ const ratingsOverTime = await observability!.getFeedbackTimeSeries({
|
|
|
143
147
|
|
|
144
148
|
See the [feedback reference](https://mastra.ai/reference/observability/feedback) for all fields, filters, return types, and percentile query parameters.
|
|
145
149
|
|
|
150
|
+
The local runtime exposes the list route at `/api/observability/feedback` and analytics under its related paths. See the [HTTP routes table](https://mastra.ai/reference/observability/feedback). Mastra Platform provides a separate, unversioned hosted query API. See the [observability feedback query API](https://mastra.ai/docs/mastra-platform/api) for regional endpoints, authentication, and project scoping.
|
|
151
|
+
|
|
152
|
+
## Export feedback to Mastra Platform
|
|
153
|
+
|
|
154
|
+
[`MastraPlatformExporter`](https://mastra.ai/reference/observability/tracing/exporters/mastra-platform-exporter) forwards emitted feedback events to Mastra Platform automatically because the hosted query API doesn't provide a creation route.
|
|
155
|
+
|
|
156
|
+
If your application adds feedback after an agent or workflow response using only its `traceId`, configure `MastraStorageExporter` alongside `MastraPlatformExporter`. The storage exporter keeps the trace available for `addFeedback()` to rehydrate, and the Platform exporter forwards the resulting feedback event. Exporting a trace to Platform doesn't make it available to the application's local storage.
|
|
157
|
+
|
|
158
|
+
See [Observability on Mastra Platform](https://mastra.ai/docs/mastra-platform/observability) for the combined exporter configuration.
|
|
159
|
+
|
|
146
160
|
## Export feedback to external platforms
|
|
147
161
|
|
|
148
162
|
Feedback flows through the observability event bus, so exporters that support feedback forward it automatically. The [PostHog exporter](https://mastra.ai/reference/observability/tracing/exporters/posthog) sends feedback as native `$ai_feedback` events that appear on the linked trace in PostHog.
|
|
@@ -58,6 +58,32 @@ registerApiRoute('/my-custom-route', {
|
|
|
58
58
|
|
|
59
59
|
## Common examples
|
|
60
60
|
|
|
61
|
+
### Block built-in route groups
|
|
62
|
+
|
|
63
|
+
Mastra doesn't provide a configuration option to remove or allowlist built-in routes. On Hono-based serving paths, you can make selected route groups unavailable by returning a response without calling `next()`:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { Mastra } from '@mastra/core'
|
|
67
|
+
|
|
68
|
+
const notFound = async () => new Response('Not Found', { status: 404 })
|
|
69
|
+
|
|
70
|
+
export const mastra = new Mastra({
|
|
71
|
+
server: {
|
|
72
|
+
middleware: [
|
|
73
|
+
{ path: '/api/memory/*', handler: notFound },
|
|
74
|
+
{ path: '/api/logs/*', handler: notFound },
|
|
75
|
+
{ path: '/api/observability/*', handler: notFound },
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Each wildcard pattern blocks both the route group itself and its nested routes. For example, `/api/logs/*` blocks `/api/logs` and `/api/logs/transports`. Other route groups remain available.
|
|
82
|
+
|
|
83
|
+
Generated servers pass `server.apiPrefix` to the Hono adapter's [`prefix` constructor option](https://mastra.ai/reference/server/hono-adapter), which prefixes built-in routes. Middleware paths are registered unchanged, so they must explicitly include the configured prefix. For example, with `apiPrefix: '/api/v2'`, use `/api/v2/memory/*`. Custom API routes must live outside the configured API prefix and aren't blocked by these patterns.
|
|
84
|
+
|
|
85
|
+
This approach can't block routes declared public with `requiresAuth: false`, because Mastra skips user middleware for those routes. With a non-Hono server adapter, register equivalent middleware through the server framework instead.
|
|
86
|
+
|
|
61
87
|
### Using `RequestContext`
|
|
62
88
|
|
|
63
89
|
You can populate `RequestContext` in a runtime server middleware by extracting information from the request. In this example, the `temperature-unit` is set based on the Cloudflare `CF-IPCountry` header to ensure responses match the user's locale.
|
package/.docs/docs/subagents.md
CHANGED
|
@@ -159,12 +159,12 @@ const stream = await parentAgent.stream('Research AI trends', {
|
|
|
159
159
|
|
|
160
160
|
The `context` object includes:
|
|
161
161
|
|
|
162
|
-
| Property | Description
|
|
163
|
-
| ------------- |
|
|
164
|
-
| `primitiveId` | The ID of the subagent that ran
|
|
165
|
-
| `result` | The subagent's response
|
|
166
|
-
| `error` | Error if the delegation failed
|
|
167
|
-
| `bail()` | Function to stop the parent agent's loop
|
|
162
|
+
| Property | Description |
|
|
163
|
+
| ------------- | --------------------------------------------------------------------------------------------- |
|
|
164
|
+
| `primitiveId` | The ID of the subagent that ran |
|
|
165
|
+
| `result` | The subagent's response, including `text`, `usage`, `finishReason`, and `subAgentToolResults` |
|
|
166
|
+
| `error` | Error if the delegation failed |
|
|
167
|
+
| `bail()` | Function to stop the parent agent's loop |
|
|
168
168
|
|
|
169
169
|
### Hook errors
|
|
170
170
|
|
|
@@ -74,7 +74,7 @@ export const mastra = new Mastra({
|
|
|
74
74
|
})
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
After the agent has created a memory thread, subscribe that thread to a PR.
|
|
77
|
+
After the agent has created a memory thread, subscribe that thread to a PR. Choose `review` mode when the thread only needs code revisions, authorized latest PR comments, and observable review-thread-state updates:
|
|
78
78
|
|
|
79
79
|
```typescript
|
|
80
80
|
await githubSignals.subscribeThreadToPR({
|
|
@@ -85,19 +85,66 @@ await githubSignals.subscribeThreadToPR({
|
|
|
85
85
|
repo: 'web-app',
|
|
86
86
|
number: 42,
|
|
87
87
|
},
|
|
88
|
+
mode: 'review',
|
|
88
89
|
})
|
|
89
90
|
```
|
|
90
91
|
|
|
91
92
|
The provider syncs the PR immediately, stores the subscription, and starts polling every five minutes. Set `pollIntervalMs` in the `GithubSignals` constructor to change the interval. If the process restarts, call `startPollingForThread()` for each persisted thread subscription to resume polling.
|
|
92
93
|
|
|
93
|
-
|
|
94
|
+
A thread has one current GitHub Signals subscription. Subscribing it to another PR replaces the existing subscription.
|
|
94
95
|
|
|
95
|
-
|
|
96
|
+
## Subscription modes
|
|
96
97
|
|
|
97
|
-
|
|
98
|
-
- A change in unresolved review threads.
|
|
99
|
-
- Continuous integration (CI) checks that start, fail, or recover.
|
|
100
|
-
- Merge conflicts that appear or are resolved.
|
|
101
|
-
- A state change to closed, reopened, or merged.
|
|
98
|
+
GitHub Signals supports two subscription modes:
|
|
102
99
|
|
|
103
|
-
|
|
100
|
+
- `review`: Follows new head revisions, authorized latest PR comments, and observable review-thread-state changes, including when all review threads become resolved.
|
|
101
|
+
- `working`: Follows all actionable PR activity detected by the provider. Comment-bearing notifications remain subject to existing authorization gates. This is the default when `mode` is omitted and for stored subscriptions without a valid mode.
|
|
102
|
+
|
|
103
|
+
The following table shows the observable behavior of each mode:
|
|
104
|
+
|
|
105
|
+
| Pull request activity | `working` | `review` |
|
|
106
|
+
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
107
|
+
| First observation | Sends a baseline notification | Saves all cursors without notifying unless the PR is closed or merged; then notifies and removes the subscription |
|
|
108
|
+
| New commit or force-push | Notifies when the latest comment author is authorized | Notifies without requiring a comment author |
|
|
109
|
+
| New authorized latest PR comment | Notifies | Notifies |
|
|
110
|
+
| Observable review-thread-state change | Notifies while unresolved threads remain | Notifies, including when all review threads become resolved |
|
|
111
|
+
| Continuous integration checks start, fail, or recover | Notifies | Saves the new state without notifying |
|
|
112
|
+
| Merge conflicts appear or resolve | Notifies | Saves the new state without notifying |
|
|
113
|
+
| Other actionable aggregate PR activity | Notifies when applicable authorization checks pass | Saves the new state without notifying |
|
|
114
|
+
| PR closes without merging | Notifies and keeps the subscription | Notifies and removes the subscription |
|
|
115
|
+
| PR reopens | Notifies | Doesn't notify because the earlier close removed the subscription |
|
|
116
|
+
| PR merges | Notifies and removes the subscription | Notifies and removes the subscription |
|
|
117
|
+
|
|
118
|
+
Review mode uses the latest generic PR comment exposed by `gitcrawl`. The snapshot doesn't distinguish general PR conversation from inline review comments. Comment notifications require an authorized author because they include comment content. Review-state notifications contain only provider-generated state summaries and aren't author-gated.
|
|
119
|
+
|
|
120
|
+
The review-state cursor includes the unresolved thread count and the latest unresolved thread timestamp. It reports when the count reaches zero, but it can't report replies on threads that are already resolved.
|
|
121
|
+
|
|
122
|
+
During subscription, a PR already known to be closed or merged isn't stored and doesn't send an activity notification. Otherwise, review mode silently saves its first available non-terminal snapshot, including when the subscribe-time snapshot fails and a later poll supplies the first observation. If the first available poll snapshot or a later snapshot is closed or merged, the provider sends a terminal notification and removes the subscription. It doesn't follow a later reopen unless you subscribe again.
|
|
123
|
+
|
|
124
|
+
## Subscription tools
|
|
125
|
+
|
|
126
|
+
The provider adds `github_subscribe_pr` and `github_unsubscribe_pr` tools to the agent. Pass `mode` when subscribing:
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"owner": "acme",
|
|
131
|
+
"repo": "web-app",
|
|
132
|
+
"number": 42,
|
|
133
|
+
"mode": "review"
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Omitting `mode` selects `working`. Don't subscribe for a one-off PR inspection.
|
|
138
|
+
|
|
139
|
+
## MastraCode commands
|
|
140
|
+
|
|
141
|
+
In MastraCode, use the spaced `--mode` flag with a PR number, `owner/repo#number`, or full GitHub PR URL:
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
/github subscribe 42 --mode review
|
|
145
|
+
/github acme/web-app#42 --mode working
|
|
146
|
+
/github unsubscribe 42
|
|
147
|
+
/github debug
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
MastraCode rejects `--mode=review`, missing or repeated mode values, unknown modes, and mode flags on unsubscribe. `/github debug` shows the stored mode and displays absent or invalid legacy values as `working`.
|
|
@@ -282,6 +282,22 @@ await sandbox.instance.updateNetworkSettings({
|
|
|
282
282
|
})
|
|
283
283
|
```
|
|
284
284
|
|
|
285
|
+
### Secrets
|
|
286
|
+
|
|
287
|
+
Inject credentials without exposing raw values to code running inside the sandbox. Create a [Daytona Secret](https://www.daytona.io/docs/en/secrets/) once for your organization (via the Daytona dashboard or SDK), then map environment variable names to Secret names:
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
const workspace = new Workspace({
|
|
291
|
+
sandbox: new DaytonaSandbox({
|
|
292
|
+
secrets: {
|
|
293
|
+
GITHUB_TOKEN: 'github-token',
|
|
294
|
+
},
|
|
295
|
+
}),
|
|
296
|
+
})
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Inside the sandbox, the environment variable holds an opaque placeholder. Daytona's egress proxy substitutes the real value into HTTPS request headers toward the Secret's allowed hosts, so the raw credential never enters the sandbox. Secrets are applied at sandbox creation and are preserved by `clone()`.
|
|
300
|
+
|
|
285
301
|
## Constructor parameters
|
|
286
302
|
|
|
287
303
|
**id** (`string`): Unique identifier for this sandbox instance. (Default: `Auto-generated`)
|
|
@@ -328,6 +344,8 @@ await sandbox.instance.updateNetworkSettings({
|
|
|
328
344
|
|
|
329
345
|
**domainAllowList** (`string`): Comma-separated list of allowed domains when network access is restricted. Supports wildcards, for example \*.githubusercontent.com. Use this instead of networkAllowList for services whose IP addresses change.
|
|
330
346
|
|
|
347
|
+
**secrets** (`Record<string, string>`): Daytona Secrets to expose inside the sandbox, mapping environment variable names to Daytona Secret names. The env var holds an opaque placeholder; the real value is substituted into HTTPS request headers at egress toward the Secret's allowed hosts.
|
|
348
|
+
|
|
331
349
|
## Properties
|
|
332
350
|
|
|
333
351
|
**id** (`string`): Sandbox instance identifier.
|
|
@@ -68,6 +68,8 @@ const agent = new Agent({
|
|
|
68
68
|
|
|
69
69
|
**id** (`string`): Unique identifier for this sandbox instance (Default: `Auto-generated`)
|
|
70
70
|
|
|
71
|
+
**sandboxId** (`string`): Persisted E2B provider sandbox ID to reattach to deterministically. When set, start() connects to this exact sandbox (resuming it if paused) instead of discovering by logical id metadata. Only a typed "sandbox gone" error (not found, killed, or not running) falls through to the usual logical-id lookup and create ladder; auth, quota, rate-limit, timeout, and network errors propagate without creating a new sandbox. A sandbox tagged with a different logical id is refused. Read the resolved provider ID from the sandboxId property after start.
|
|
72
|
+
|
|
71
73
|
**domain** (`string`): Domain for self-hosted E2B. Falls back to E2B\_DOMAIN env var.
|
|
72
74
|
|
|
73
75
|
**apiUrl** (`string`): API URL for self-hosted E2B. Falls back to E2B\_API\_URL env var.
|
|
@@ -88,6 +90,8 @@ const agent = new Agent({
|
|
|
88
90
|
|
|
89
91
|
**status** (`ProviderStatus`): 'pending' | 'initializing' | 'ready' | 'starting' | 'running' | 'stopping' | 'stopped' | 'destroying' | 'destroyed' | 'error'
|
|
90
92
|
|
|
93
|
+
**sandboxId** (`string | undefined`): The E2B provider sandbox ID resolved after connect or create. Persist it and pass it back via the sandboxId constructor option (or clone({ sandboxId })) to reattach deterministically. Undefined until the sandbox has been started in this process.
|
|
94
|
+
|
|
91
95
|
**processes** (`E2BProcessManager`): Background process manager. See SandboxProcessManager reference.
|
|
92
96
|
|
|
93
97
|
## Background processes
|
|
@@ -158,7 +158,7 @@ Both callbacks are optional and can be used independently.
|
|
|
158
158
|
|
|
159
159
|
**instructions** (`string | ((opts) => string)`): Override the default instructions returned by getInstructions(). Pass a string to replace them, or a function to extend the defaults.
|
|
160
160
|
|
|
161
|
-
**onStart** (`
|
|
161
|
+
**onStart** (`SandboxStartHook`): Lifecycle hook called after the sandbox reaches running status.
|
|
162
162
|
|
|
163
163
|
**onStop** (`SandboxLifecycleHook`): Lifecycle hook called before the sandbox stops.
|
|
164
164
|
|
|
@@ -303,7 +303,7 @@ const workspace = new Workspace({
|
|
|
303
303
|
|
|
304
304
|
**instructions** (`string | ((opts) => string)`): Custom instructions that override the default instructions returned by getInstructions(). Pass a string to fully replace, or a function to extend the defaults.
|
|
305
305
|
|
|
306
|
-
**onStart** (`
|
|
306
|
+
**onStart** (`SandboxStartHook`): Lifecycle hook called after the sandbox reaches running status.
|
|
307
307
|
|
|
308
308
|
**onStop** (`SandboxLifecycleHook`): Lifecycle hook called before the sandbox stops.
|
|
309
309
|
|
|
@@ -126,6 +126,7 @@ List of required environment variables for each model provider and gateway suppo
|
|
|
126
126
|
| [Opper](https://mastra.ai/models/providers/opper) | `opper/*` | `OPPER_API_KEY` |
|
|
127
127
|
| [OrcaRouter](https://mastra.ai/models/providers/orcarouter) | `orcarouter/*` | `ORCAROUTER_API_KEY` |
|
|
128
128
|
| [OVHcloud AI Endpoints](https://mastra.ai/models/providers/ovhcloud) | `ovhcloud/*` | `OVHCLOUD_API_KEY` |
|
|
129
|
+
| [Pendra](https://mastra.ai/models/providers/pendra) | `pendra/*` | `PENDRA_API_KEY` |
|
|
129
130
|
| [Perplexity](https://mastra.ai/models/providers/perplexity) | `perplexity/*` | `PERPLEXITY_API_KEY` |
|
|
130
131
|
| [Perplexity Agent](https://mastra.ai/models/providers/perplexity-agent) | `perplexity-agent/*` | `PERPLEXITY_API_KEY` |
|
|
131
132
|
| [Pioneer](https://mastra.ai/models/providers/pioneer) | `pioneer/*` | `PIONEER_API_KEY` |
|
|
@@ -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 233 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
|
|
|
@@ -137,7 +137,6 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
137
137
|
| `openrouter/google/gemma-3-12b-it` |
|
|
138
138
|
| `openrouter/google/gemma-3-27b-it` |
|
|
139
139
|
| `openrouter/google/gemma-3-4b-it` |
|
|
140
|
-
| `openrouter/google/gemma-3n-e4b-it` |
|
|
141
140
|
| `openrouter/google/gemma-4-26b-a4b-it` |
|
|
142
141
|
| `openrouter/google/gemma-4-31b-it` |
|
|
143
142
|
| `openrouter/gryphe/mythomax-l2-13b` |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# OpenRouter
|
|
4
4
|
|
|
5
|
-
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
5
|
+
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 355 models through Mastra's model router.
|
|
6
6
|
|
|
7
7
|
Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
|
|
8
8
|
|
|
@@ -131,7 +131,6 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
131
131
|
| `google/gemma-3-12b-it` |
|
|
132
132
|
| `google/gemma-3-27b-it` |
|
|
133
133
|
| `google/gemma-3-4b-it` |
|
|
134
|
-
| `google/gemma-3n-e4b-it` |
|
|
135
134
|
| `google/gemma-4-26b-a4b-it` |
|
|
136
135
|
| `google/gemma-4-26b-a4b-it:free` |
|
|
137
136
|
| `google/gemma-4-31b-it` |
|
|
@@ -295,7 +294,6 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
295
294
|
| `qwen/qwen-2.5-coder-32b-instruct` |
|
|
296
295
|
| `qwen/qwen-plus` |
|
|
297
296
|
| `qwen/qwen-plus-2025-07-28` |
|
|
298
|
-
| `qwen/qwen-plus-2025-07-28:thinking` |
|
|
299
297
|
| `qwen/qwen2.5-vl-72b-instruct` |
|
|
300
298
|
| `qwen/qwen3-14b` |
|
|
301
299
|
| `qwen/qwen3-235b-a22b` |
|
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 6846 models from 187 providers through a single API.
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Agnes AI
|
|
4
4
|
|
|
5
|
-
Access
|
|
5
|
+
Access 3 Agnes AI models through Mastra's model router. Authentication is handled automatically using the `AGNES_API_KEY` environment variable.
|
|
6
6
|
|
|
7
7
|
Learn more in the [Agnes AI documentation](https://agnes-ai.com/doc).
|
|
8
8
|
|
|
@@ -34,10 +34,11 @@ for await (const chunk of stream) {
|
|
|
34
34
|
|
|
35
35
|
## Models
|
|
36
36
|
|
|
37
|
-
| Model
|
|
38
|
-
|
|
|
39
|
-
| `agnes/agnes-2.0-flash`
|
|
40
|
-
| `agnes/agnes-2.5-flash`
|
|
37
|
+
| Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
|
|
38
|
+
| --------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
|
|
39
|
+
| `agnes/agnes-2.0-flash` | 512K | | | | | | — | — |
|
|
40
|
+
| `agnes/agnes-2.5-flash` | 512K | | | | | | — | — |
|
|
41
|
+
| `agnes/agnes-2.5-pro-alpha` | 1.0M | | | | | | $0.45 | $0.90 |
|
|
41
42
|
|
|
42
43
|
## Advanced configuration
|
|
43
44
|
|
|
@@ -67,7 +68,7 @@ const agent = new Agent({
|
|
|
67
68
|
model: ({ requestContext }) => {
|
|
68
69
|
const useAdvanced = requestContext.task === "complex";
|
|
69
70
|
return useAdvanced
|
|
70
|
-
? "agnes/agnes-2.5-
|
|
71
|
+
? "agnes/agnes-2.5-pro-alpha"
|
|
71
72
|
: "agnes/agnes-2.0-flash";
|
|
72
73
|
}
|
|
73
74
|
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Eden AI
|
|
4
4
|
|
|
5
|
-
Access
|
|
5
|
+
Access 233 Eden AI models through Mastra's model router. Authentication is handled automatically using the `EDENAI_API_KEY` environment variable.
|
|
6
6
|
|
|
7
7
|
Learn more in the [Eden AI documentation](https://docs.edenai.co).
|
|
8
8
|
|
|
@@ -198,8 +198,8 @@ for await (const chunk of stream) {
|
|
|
198
198
|
| `edenai/perplexityai/sonar-deep-research` | 128K | | | | | | $2 | $8 |
|
|
199
199
|
| `edenai/perplexityai/sonar-pro` | 200K | | | | | | $3 | $15 |
|
|
200
200
|
| `edenai/perplexityai/sonar-reasoning-pro` | 128K | | | | | | $2 | $8 |
|
|
201
|
-
| `edenai/qwen/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.
|
|
202
|
-
| `edenai/qwen/deepseek-v4-pro-0813` | 1.0M | | | | | | $
|
|
201
|
+
| `edenai/qwen/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.18 | $0.53 |
|
|
202
|
+
| `edenai/qwen/deepseek-v4-pro-0813` | 1.0M | | | | | | $0.58 | $2 |
|
|
203
203
|
| `edenai/qwen/qwen-max` | 33K | | | | | | $2 | $6 |
|
|
204
204
|
| `edenai/qwen/qwen-vl-max` | 131K | | | | | | $0.80 | $3 |
|
|
205
205
|
| `edenai/qwen/qwen-vl-plus` | 131K | | | | | | $0.21 | $0.63 |
|
|
@@ -208,8 +208,10 @@ for await (const chunk of stream) {
|
|
|
208
208
|
| `edenai/qwen/qwen3-coder-480b-a35b-instruct` | 262K | | | | | | $2 | $8 |
|
|
209
209
|
| `edenai/qwen/qwen3-coder-flash` | 1.0M | | | | | | $0.30 | $2 |
|
|
210
210
|
| `edenai/qwen/qwen3-coder-next` | 262K | | | | | | $0.30 | $2 |
|
|
211
|
+
| `edenai/qwen/qwen3-coder-next@eu` | 262K | | | | | | $0.30 | $2 |
|
|
211
212
|
| `edenai/qwen/qwen3-coder-plus` | 1.0M | | | | | | $1 | $5 |
|
|
212
213
|
| `edenai/qwen/qwen3-max` | 262K | | | | | | $1 | $6 |
|
|
214
|
+
| `edenai/qwen/qwen3-max@eu` | 262K | | | | | | $1 | $6 |
|
|
213
215
|
| `edenai/qwen/qwen3-next-80b-a3b-instruct` | 131K | | | | | | $0.15 | $1 |
|
|
214
216
|
| `edenai/qwen/qwen3-next-80b-a3b-thinking` | 131K | | | | | | $0.15 | $1 |
|
|
215
217
|
| `edenai/qwen/qwen3-vl-235b-a22b-instruct` | 131K | | | | | | $0.40 | $2 |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# evroc
|
|
4
4
|
|
|
5
|
-
Access
|
|
5
|
+
Access 16 evroc models through Mastra's model router. Authentication is handled automatically using the `EVROC_API_KEY` environment variable.
|
|
6
6
|
|
|
7
7
|
Learn more in the [evroc documentation](https://docs.evroc.com/products/think/overview.html).
|
|
8
8
|
|
|
@@ -49,7 +49,8 @@ for await (const chunk of stream) {
|
|
|
49
49
|
| `evroc/openai/whisper-large-v3-turbo` | 448 | | | | | | $0.00 | $0.00 |
|
|
50
50
|
| `evroc/Qwen/Qwen3-Embedding-8B` | 41K | | | | | | $0.12 | $0.12 |
|
|
51
51
|
| `evroc/Qwen/Qwen3-Reranker-4B` | 32K | | | | | | $0.06 | — |
|
|
52
|
-
| `evroc/Qwen/Qwen3.6-35B-A3B
|
|
52
|
+
| `evroc/Qwen/Qwen3.6-35B-A3B` | 262K | | | | | | $0.34 | $1 |
|
|
53
|
+
| `evroc/Qwen/Qwen3.8-27B` | 262K | | | | | | $0.87 | $4 |
|
|
53
54
|
| `evroc/zai-org/GLM-5.2` | 524K | | | | | | $1 | $6 |
|
|
54
55
|
|
|
55
56
|
## Advanced configuration
|
|
@@ -40,11 +40,11 @@ for await (const chunk of stream) {
|
|
|
40
40
|
| `hyper/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.44 | $1 |
|
|
41
41
|
| `hyper/deepseek-v4-pro` | 1.0M | | | | | | $2 | $5 |
|
|
42
42
|
| `hyper/deepseek-v4-pro-0813` | 1.0M | | | | | | $1 | $4 |
|
|
43
|
-
| `hyper/gemma-4-26b-a4b-it` | 256K | | | | | | $0.
|
|
44
|
-
| `hyper/glm-5` | 203K | | | | | | $0.
|
|
43
|
+
| `hyper/gemma-4-26b-a4b-it` | 256K | | | | | | $0.12 | $0.42 |
|
|
44
|
+
| `hyper/glm-5` | 203K | | | | | | $0.91 | $3 |
|
|
45
45
|
| `hyper/glm-5.1` | 203K | | | | | | $1 | $4 |
|
|
46
46
|
| `hyper/glm-5.2` | 1.0M | | | | | | $2 | $5 |
|
|
47
|
-
| `hyper/gpt-oss-120b` | 128K | | | | | | $0.
|
|
47
|
+
| `hyper/gpt-oss-120b` | 128K | | | | | | $0.19 | $0.70 |
|
|
48
48
|
| `hyper/kimi-k2.5` | 262K | | | | | | $0.54 | $3 |
|
|
49
49
|
| `hyper/kimi-k2.6` | 262K | | | | | | $1 | $4 |
|
|
50
50
|
| `hyper/kimi-k2.7-code` | 262K | | | | | | $1 | $4 |
|
|
@@ -39,7 +39,7 @@ for await (const chunk of stream) {
|
|
|
39
39
|
| `inceptron/deepseek-ai/DeepSeek-V4-Flash-0731` | 1.0M | | | | | | $0.13 | $0.28 |
|
|
40
40
|
| `inceptron/moonshotai/Kimi-K2.6` | 262K | | | | | | $0.57 | $3 |
|
|
41
41
|
| `inceptron/moonshotai/Kimi-K2.7-Code` | 262K | | | | | | $0.67 | $3 |
|
|
42
|
-
| `inceptron/zai-org/GLM-5.2` | 1.0M | | | | | | $0.75 | $
|
|
42
|
+
| `inceptron/zai-org/GLM-5.2` | 1.0M | | | | | | $0.75 | $2 |
|
|
43
43
|
|
|
44
44
|
## Advanced configuration
|
|
45
45
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Kilo Gateway
|
|
4
4
|
|
|
5
|
-
Access
|
|
5
|
+
Access 365 Kilo Gateway models through Mastra's model router. Authentication is handled automatically using the `KILO_API_KEY` environment variable.
|
|
6
6
|
|
|
7
7
|
Learn more in the [Kilo Gateway documentation](https://kilo.ai).
|
|
8
8
|
|
|
@@ -40,10 +40,10 @@ for await (const chunk of stream) {
|
|
|
40
40
|
| `kilo/~anthropic/claude-haiku-latest` | 200K | | | | | | $1 | $5 |
|
|
41
41
|
| `kilo/~anthropic/claude-opus-latest` | 1.0M | | | | | | $5 | $25 |
|
|
42
42
|
| `kilo/~anthropic/claude-sonnet-latest` | 1.0M | | | | | | $2 | $10 |
|
|
43
|
-
| `kilo/~deepseek/deepseek-v4-flash-latest` | 1.0M | | | | | | $0.04 | $0.
|
|
43
|
+
| `kilo/~deepseek/deepseek-v4-flash-latest` | 1.0M | | | | | | $0.04 | $0.08 |
|
|
44
44
|
| `kilo/~google/gemini-flash-latest` | 1.0M | | | | | | $0.38 | $2 |
|
|
45
45
|
| `kilo/~google/gemini-pro-latest` | 1.0M | | | | | | $2 | $12 |
|
|
46
|
-
| `kilo/~moonshotai/kimi-latest` | 1.0M | | | | | | $3 | $
|
|
46
|
+
| `kilo/~moonshotai/kimi-latest` | 1.0M | | | | | | $3 | $13 |
|
|
47
47
|
| `kilo/~openai/gpt-latest` | 1.1M | | | | | | $2 | $10 |
|
|
48
48
|
| `kilo/~openai/gpt-mini-latest` | 400K | | | | | | $0.75 | $5 |
|
|
49
49
|
| `kilo/~x-ai/grok-latest` | 500K | | | | | | $2 | $6 |
|
|
@@ -114,7 +114,7 @@ for await (const chunk of stream) {
|
|
|
114
114
|
| `kilo/google/gemini-2.5-pro-preview` | 1.0M | | | | | | $1 | $10 |
|
|
115
115
|
| `kilo/google/gemini-2.5-pro-preview-05-06` | 1.0M | | | | | | $1 | $10 |
|
|
116
116
|
| `kilo/google/gemini-3-flash-preview` | 1.0M | | | | | | $0.50 | $3 |
|
|
117
|
-
| `kilo/google/gemini-3-pro-image` |
|
|
117
|
+
| `kilo/google/gemini-3-pro-image` | 131K | | | | | | $2 | $12 |
|
|
118
118
|
| `kilo/google/gemini-3-pro-image-preview` | 66K | | | | | | $2 | $12 |
|
|
119
119
|
| `kilo/google/gemini-3.1-flash-image` | 131K | | | | | | $0.50 | $3 |
|
|
120
120
|
| `kilo/google/gemini-3.1-flash-image-preview` | 66K | | | | | | $0.50 | $3 |
|
|
@@ -131,7 +131,6 @@ for await (const chunk of stream) {
|
|
|
131
131
|
| `kilo/google/gemma-3-12b-it` | 131K | | | | | | $0.05 | $0.15 |
|
|
132
132
|
| `kilo/google/gemma-3-27b-it` | 131K | | | | | | $0.08 | $0.16 |
|
|
133
133
|
| `kilo/google/gemma-3-4b-it` | 131K | | | | | | $0.05 | $0.10 |
|
|
134
|
-
| `kilo/google/gemma-3n-e4b-it` | 33K | | | | | | $0.06 | $0.12 |
|
|
135
134
|
| `kilo/google/gemma-4-26b-a4b-it` | 262K | | | | | | $0.04 | $0.22 |
|
|
136
135
|
| `kilo/google/gemma-4-31b-it` | 262K | | | | | | $0.08 | $0.35 |
|
|
137
136
|
| `kilo/google/lyria-3-clip-preview` | 1.0M | | | | | | — | — |
|
|
@@ -157,9 +156,9 @@ for await (const chunk of stream) {
|
|
|
157
156
|
| `kilo/meta-llama/llama-3.1-8b-instruct` | 131K | | | | | | $0.02 | $0.04 |
|
|
158
157
|
| `kilo/meta-llama/llama-3.2-1b-instruct` | 60K | | | | | | $0.03 | $0.20 |
|
|
159
158
|
| `kilo/meta-llama/llama-3.2-3b-instruct` | 131K | | | | | | $0.05 | $0.33 |
|
|
160
|
-
| `kilo/meta-llama/llama-3.3-70b-instruct` |
|
|
159
|
+
| `kilo/meta-llama/llama-3.3-70b-instruct` | 128K | | | | | | $0.10 | $0.32 |
|
|
161
160
|
| `kilo/meta-llama/llama-4-maverick` | 1.0M | | | | | | $0.20 | $0.70 |
|
|
162
|
-
| `kilo/meta-llama/llama-4-scout` |
|
|
161
|
+
| `kilo/meta-llama/llama-4-scout` | 131K | | | | | | $0.10 | $0.30 |
|
|
163
162
|
| `kilo/meta-llama/llama-guard-4-12b` | 164K | | | | | | $0.18 | $0.18 |
|
|
164
163
|
| `kilo/meta/muse-glimmer-30b` | 131K | | | | | | $0.30 | $1 |
|
|
165
164
|
| `kilo/meta/muse-spark-1.1` | 1.0M | | | | | | $1 | $4 |
|
|
@@ -173,7 +172,7 @@ for await (const chunk of stream) {
|
|
|
173
172
|
| `kilo/minimax/minimax-m2-her` | 66K | | | | | | $0.30 | $1 |
|
|
174
173
|
| `kilo/minimax/minimax-m2.1` | 205K | | | | | | $0.30 | $1 |
|
|
175
174
|
| `kilo/minimax/minimax-m2.5` | 200K | | | | | | $0.30 | $1 |
|
|
176
|
-
| `kilo/minimax/minimax-m2.7` |
|
|
175
|
+
| `kilo/minimax/minimax-m2.7` | 205K | | | | | | $0.30 | $1 |
|
|
177
176
|
| `kilo/minimax/minimax-m2.7:free` | 197K | | | | | | — | — |
|
|
178
177
|
| `kilo/minimax/minimax-m3` | 524K | | | | | | $0.30 | $1 |
|
|
179
178
|
| `kilo/minimax/minimax-m3:free` | 1.0M | | | | | | — | — |
|
|
@@ -299,8 +298,7 @@ for await (const chunk of stream) {
|
|
|
299
298
|
| `kilo/qwen/qwen-2.5-coder-32b-instruct` | 33K | | | | | | $0.66 | $1 |
|
|
300
299
|
| `kilo/qwen/qwen-plus` | 1.0M | | | | | | $0.26 | $0.78 |
|
|
301
300
|
| `kilo/qwen/qwen-plus-2025-07-28` | 1.0M | | | | | | $0.26 | $0.78 |
|
|
302
|
-
| `kilo/qwen/
|
|
303
|
-
| `kilo/qwen/qwen2.5-vl-72b-instruct` | 128K | | | | | | $0.80 | $1 |
|
|
301
|
+
| `kilo/qwen/qwen2.5-vl-72b-instruct` | 32K | | | | | | $0.25 | $0.75 |
|
|
304
302
|
| `kilo/qwen/qwen3-14b` | 41K | | | | | | $0.23 | $0.91 |
|
|
305
303
|
| `kilo/qwen/qwen3-235b-a22b` | 131K | | | | | | $0.46 | $2 |
|
|
306
304
|
| `kilo/qwen/qwen3-235b-a22b-2507` | 262K | | | | | | $0.15 | $0.60 |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# LLM Gateway
|
|
4
4
|
|
|
5
|
-
Access
|
|
5
|
+
Access 378 LLM Gateway models through Mastra's model router. Authentication is handled automatically using the `LLMGATEWAY_API_KEY` environment variable.
|
|
6
6
|
|
|
7
7
|
Learn more in the [LLM Gateway documentation](https://llmgateway.io/docs).
|
|
8
8
|
|
|
@@ -133,11 +133,12 @@ for await (const chunk of stream) {
|
|
|
133
133
|
| `llmgateway-providers/azure/o3` | 200K | | | | | | $2 | $8 |
|
|
134
134
|
| `llmgateway-providers/azure/o3-mini` | 200K | | | | | | $1 | $4 |
|
|
135
135
|
| `llmgateway-providers/azure/o4-mini` | 200K | | | | | | $1 | $4 |
|
|
136
|
-
| `llmgateway-providers/baidu/deepseek-v4-flash` | 1.0M | | | | | | $0.
|
|
137
|
-
| `llmgateway-providers/baidu/deepseek-v4-pro` | 1.0M | | | | | | $
|
|
136
|
+
| `llmgateway-providers/baidu/deepseek-v4-flash` | 1.0M | | | | | | $0.44 | $1 |
|
|
137
|
+
| `llmgateway-providers/baidu/deepseek-v4-pro` | 1.0M | | | | | | $1 | $4 |
|
|
138
138
|
| `llmgateway-providers/baidu/glm-5` | 203K | | | | | | $1 | $3 |
|
|
139
139
|
| `llmgateway-providers/baidu/glm-5.1` | 203K | | | | | | $1 | $4 |
|
|
140
140
|
| `llmgateway-providers/baidu/glm-5.2` | 1.0M | | | | | | $1 | $4 |
|
|
141
|
+
| `llmgateway-providers/baidu/glm-5.3` | 1.0M | | | | | | $1 | $4 |
|
|
141
142
|
| `llmgateway-providers/baidu/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
|
|
142
143
|
| `llmgateway-providers/bytedance/deepseek-v3.2` | 131K | | | | | | $0.28 | $0.42 |
|
|
143
144
|
| `llmgateway-providers/bytedance/deepseek-v4-flash` | 1.0M | | | | | | $0.44 | $1 |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# NanoGPT
|
|
4
4
|
|
|
5
|
-
Access
|
|
5
|
+
Access 608 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
|
|
|
@@ -472,6 +472,8 @@ for await (const chunk of stream) {
|
|
|
472
472
|
| `nano-gpt/qwen/Qwen3.6-35B-A3B:thinking` | 262K | | | | | | $0.11 | $0.80 |
|
|
473
473
|
| `nano-gpt/qwen/qwen3.8-27b-obliterated` | 262K | | | | | | $0.18 | $0.50 |
|
|
474
474
|
| `nano-gpt/qwen/qwen3.8-27b-obliterated:thinking` | 262K | | | | | | $0.18 | $0.50 |
|
|
475
|
+
| `nano-gpt/qwen/qwen3.8-27b-uncensored` | 262K | | | | | | $0.18 | $0.50 |
|
|
476
|
+
| `nano-gpt/qwen/qwen3.8-27b-uncensored:thinking` | 262K | | | | | | $0.18 | $0.50 |
|
|
475
477
|
| `nano-gpt/qwen25-vl-72b-instruct` | 32K | | | | | | $0.70 | $0.70 |
|
|
476
478
|
| `nano-gpt/qwen3-30b-a3b-instruct-2507` | 256K | | | | | | $0.20 | $0.50 |
|
|
477
479
|
| `nano-gpt/qwen3-coder-30b-a3b-instruct` | 128K | | | | | | $0.10 | $0.40 |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# OpenCode Go
|
|
4
4
|
|
|
5
|
-
Access
|
|
5
|
+
Access 30 OpenCode Go models through Mastra's model router. Authentication is handled automatically using the `OPENCODE_API_KEY` environment variable.
|
|
6
6
|
|
|
7
7
|
Learn more in the [OpenCode Go documentation](https://opencode.ai/docs/zen).
|
|
8
8
|
|
|
@@ -43,7 +43,7 @@ for await (const chunk of stream) {
|
|
|
43
43
|
| `opencode-go/glm-5.2` | 1.0M | | | | | | $1 | $4 |
|
|
44
44
|
| `opencode-go/glm-5.3` | 1.0M | | | | | | $1 | $4 |
|
|
45
45
|
| `opencode-go/gpt-5.6-luna` | 1.1M | | | | | | $0.20 | $1 |
|
|
46
|
-
| `opencode-go/grok-4.
|
|
46
|
+
| `opencode-go/grok-4.6` | 500K | | | | | | $2 | $6 |
|
|
47
47
|
| `opencode-go/hy3` | 256K | | | | | | $0.02 | $0.07 |
|
|
48
48
|
| `opencode-go/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
|
|
49
49
|
| `opencode-go/kimi-k2.7-code` | 262K | | | | | | $0.95 | $4 |
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
> Discover all available pages from the documentation index: https://mastra.ai/llms.txt
|
|
2
|
+
|
|
3
|
+
# Pendra
|
|
4
|
+
|
|
5
|
+
Access 6 Pendra models through Mastra's model router. Authentication is handled automatically using the `PENDRA_API_KEY` environment variable.
|
|
6
|
+
|
|
7
|
+
Learn more in the [Pendra documentation](https://pendra.ai/docs/integrations/opencode).
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
PENDRA_API_KEY=your-api-key
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { Agent } from "@mastra/core/agent";
|
|
15
|
+
|
|
16
|
+
const agent = new Agent({
|
|
17
|
+
id: "my-agent",
|
|
18
|
+
name: "My Agent",
|
|
19
|
+
instructions: "You are a helpful assistant",
|
|
20
|
+
model: "pendra/deepseek-v4-flash"
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Generate a response
|
|
24
|
+
const response = await agent.generate("Hello!");
|
|
25
|
+
|
|
26
|
+
// Stream a response
|
|
27
|
+
const stream = await agent.stream("Tell me a story");
|
|
28
|
+
for await (const chunk of stream) {
|
|
29
|
+
console.log(chunk);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
> **Note:** Mastra uses the OpenAI-compatible `/chat/completions` endpoint. Some provider-specific features may not be available. Check the [Pendra documentation](https://pendra.ai/docs/integrations/opencode) for details.
|
|
34
|
+
|
|
35
|
+
## Models
|
|
36
|
+
|
|
37
|
+
| Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
|
|
38
|
+
| -------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
|
|
39
|
+
| `pendra/deepseek-v4-flash` | 1.0M | | | | | | — | — |
|
|
40
|
+
| `pendra/glm-4.7-flash` | 200K | | | | | | — | — |
|
|
41
|
+
| `pendra/gpt-oss:120b` | 131K | | | | | | — | — |
|
|
42
|
+
| `pendra/llama3.3:70b` | 128K | | | | | | — | — |
|
|
43
|
+
| `pendra/qwen3-coder:30b` | 262K | | | | | | — | — |
|
|
44
|
+
| `pendra/qwen3.6:27b` | 262K | | | | | | — | — |
|
|
45
|
+
|
|
46
|
+
## Advanced configuration
|
|
47
|
+
|
|
48
|
+
### Custom headers
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
const agent = new Agent({
|
|
52
|
+
id: "custom-agent",
|
|
53
|
+
name: "custom-agent",
|
|
54
|
+
model: {
|
|
55
|
+
url: "https://api.pendra.ai/api/v1",
|
|
56
|
+
id: "pendra/deepseek-v4-flash",
|
|
57
|
+
apiKey: process.env.PENDRA_API_KEY,
|
|
58
|
+
headers: {
|
|
59
|
+
"X-Custom-Header": "value"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Dynamic model selection
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
const agent = new Agent({
|
|
69
|
+
id: "dynamic-agent",
|
|
70
|
+
name: "Dynamic Agent",
|
|
71
|
+
model: ({ requestContext }) => {
|
|
72
|
+
const useAdvanced = requestContext.task === "complex";
|
|
73
|
+
return useAdvanced
|
|
74
|
+
? "pendra/qwen3.6:27b"
|
|
75
|
+
: "pendra/deepseek-v4-flash";
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
```
|
|
@@ -125,6 +125,7 @@ Direct access to individual AI model providers. Each provider offers unique mode
|
|
|
125
125
|
- [Opper](https://mastra.ai/models/providers/opper)
|
|
126
126
|
- [OrcaRouter](https://mastra.ai/models/providers/orcarouter)
|
|
127
127
|
- [OVHcloud AI Endpoints](https://mastra.ai/models/providers/ovhcloud)
|
|
128
|
+
- [Pendra](https://mastra.ai/models/providers/pendra)
|
|
128
129
|
- [Perplexity](https://mastra.ai/models/providers/perplexity)
|
|
129
130
|
- [Perplexity Agent](https://mastra.ai/models/providers/perplexity-agent)
|
|
130
131
|
- [Pioneer](https://mastra.ai/models/providers/pioneer)
|
|
@@ -1100,9 +1100,9 @@ For runtime commands, the command resolves the target server in this order:
|
|
|
1100
1100
|
2. `http://localhost:4111` for a local `mastra dev` server.
|
|
1101
1101
|
3. `.mastra-project.json` for a Mastra platform project.
|
|
1102
1102
|
|
|
1103
|
-
Automatic
|
|
1103
|
+
Automatic Platform authentication is used when the CLI resolves a project from `.mastra-project.json` or recognizes an explicit Mastra-hosted Studio, Factory, or observability URL. Localhost and arbitrary explicit `--url` targets don't receive automatic credentials. Headers passed with `--header` are sent to any target, including localhost.
|
|
1104
1104
|
|
|
1105
|
-
For observability commands (`trace`, `log`, `score`, and `metric`), the CLI targets `https://observability.mastra.ai` by default instead of a project deployment URL. Trace Intelligence commands (`learning`) work the same way but target `https://output.signals.mastra.ai`.
|
|
1105
|
+
For observability commands (`trace`, `log`, `score`, and `metric`), the CLI targets the United States endpoint at `https://observability.mastra.ai` by default instead of a project deployment URL. Trace Intelligence commands (`learning`) work the same way but target `https://output.signals.mastra.ai`. When the CLI selects either hosted target automatically, it resolves credentials in this order:
|
|
1106
1106
|
|
|
1107
1107
|
1. Explicit `Authorization` and `X-Mastra-Project-Id` headers passed with `--header`.
|
|
1108
1108
|
2. `MASTRA_PLATFORM_ACCESS_TOKEN` and `MASTRA_PROJECT_ID` from your environment.
|
|
@@ -1111,7 +1111,13 @@ For observability commands (`trace`, `log`, `score`, and `metric`), the CLI targ
|
|
|
1111
1111
|
|
|
1112
1112
|
Learning commands also send `X-Mastra-Organization-Id`, resolved from an explicit `--header`, `MASTRA_ORGANIZATION_ID` in your environment, or `.mastra-project.json`, in that order.
|
|
1113
1113
|
|
|
1114
|
-
|
|
1114
|
+
European Union observability data is stored at `https://observability.eu.mastra.ai`. Pass that trusted host with `--url`; it uses the same Platform credential resolution as the default United States endpoint:
|
|
1115
|
+
|
|
1116
|
+
```bash
|
|
1117
|
+
mastra api --url https://observability.eu.mastra.ai trace list
|
|
1118
|
+
```
|
|
1119
|
+
|
|
1120
|
+
Use `--url` and `--header` when you need to override another target or its credentials.
|
|
1115
1121
|
|
|
1116
1122
|
### Flags
|
|
1117
1123
|
|
|
@@ -1527,7 +1533,7 @@ mastra api metric label-values '{"metricName":"latency_ms","labelKey":"model","p
|
|
|
1527
1533
|
|
|
1528
1534
|
#### Observability with `curl`
|
|
1529
1535
|
|
|
1530
|
-
You can call the hosted observability API directly with your platform access token and project ID:
|
|
1536
|
+
You can call the hosted observability API directly with your platform access token and project ID. The examples below use the United States host. Substitute `https://observability.eu.mastra.ai` for a European Union environment. The [hosted feedback query API](https://mastra.ai/docs/mastra-platform/api) documents feedback endpoints that don't have CLI commands:
|
|
1531
1537
|
|
|
1532
1538
|
```bash
|
|
1533
1539
|
curl -sS "https://observability.mastra.ai/api/observability/traces?page=0&perPage=20" \
|
|
@@ -92,7 +92,7 @@ const scores = await mastraClient.listScoresBySpan({
|
|
|
92
92
|
|
|
93
93
|
## Feedback
|
|
94
94
|
|
|
95
|
-
Feedback methods create, list, and query human-in-the-loop signals such as ratings, thumbs, comments, and corrections. See the [feedback guide](https://mastra.ai/docs/observability/feedback) for examples and the [feedback reference](https://mastra.ai/reference/observability/feedback) for full schemas.
|
|
95
|
+
Feedback methods create, list, and query human-in-the-loop signals such as ratings, thumbs, comments, and corrections through the target Mastra runtime and its configured observability storage. They don't call the hosted Mastra Platform feedback query API. See the [feedback guide](https://mastra.ai/docs/observability/feedback) for examples and the [feedback reference](https://mastra.ai/reference/observability/feedback) for full schemas.
|
|
96
96
|
|
|
97
97
|
### Creating feedback
|
|
98
98
|
|
|
@@ -54,6 +54,8 @@ await mastra.observability.addFeedback?.({
|
|
|
54
54
|
|
|
55
55
|
**feedback** (`FeedbackInput`): Feedback payload to add.
|
|
56
56
|
|
|
57
|
+
Without `correlationContext`, the method looks up `traceId` in configured observability storage. If the trace or requested span isn't found, Mastra logs a warning and drops the feedback event. Configure `MastraStorageExporter` when adding feedback by ID after execution, including when `MastraPlatformExporter` handles remote export.
|
|
58
|
+
|
|
57
59
|
### `createFeedback(args)`
|
|
58
60
|
|
|
59
61
|
Creates one feedback record through the observability storage domain. Storage-level calls write directly to the store, so include `timestamp`.
|
|
@@ -375,6 +377,8 @@ Use `FeedbackFilter` in `listFeedback()` and OLAP query `filters`.
|
|
|
375
377
|
|
|
376
378
|
## HTTP routes
|
|
377
379
|
|
|
380
|
+
These routes belong to a Mastra runtime and use its configured observability storage. They're separate from the [unversioned Mastra Platform feedback query API](https://mastra.ai/docs/mastra-platform/api), which doesn't provide a feedback creation route.
|
|
381
|
+
|
|
378
382
|
| Method | Path | Purpose | Permission |
|
|
379
383
|
| ------ | ----------------------------------------- | ---------------------------- | -------------------- |
|
|
380
384
|
| `GET` | `/api/observability/feedback` | List feedback records | None derived |
|
|
@@ -54,6 +54,8 @@ const response = await agent.generate('Run npm install')
|
|
|
54
54
|
|
|
55
55
|
**nativeSandbox** (`NativeSandboxConfig`): Configuration for native sandboxing (see NativeSandboxConfig below).
|
|
56
56
|
|
|
57
|
+
`start()` reports `{ outcome: 'created' }` when the working directory didn't exist yet and `{ outcome: 'connected' }` when it reattaches to an existing directory. See [`start()`](https://mastra.ai/reference/workspace/sandbox) for the shared contract.
|
|
58
|
+
|
|
57
59
|
## `NativeSandboxConfig`
|
|
58
60
|
|
|
59
61
|
Configuration options for native OS sandboxing (used with `isolation: 'seatbelt'` or `'bwrap'`).
|
|
@@ -118,6 +118,8 @@ const result = await sandbox.executeCommand('cat', ['/workspace/state.json'])
|
|
|
118
118
|
|
|
119
119
|
When `sandboxId` is set, `environmentId` isn't required because the sandbox already exists.
|
|
120
120
|
|
|
121
|
+
`start()` reports `{ outcome: 'connected' }` on reattach and `{ outcome: 'created' }` on a fresh provision (including a checkpoint-recovered boot, which is a new VM even when its filesystem was restored). See [`start()`](https://mastra.ai/reference/workspace/sandbox) for the shared contract.
|
|
122
|
+
|
|
121
123
|
### Checkpoint recovery
|
|
122
124
|
|
|
123
125
|
The constructor `id` (explicit or auto-generated) is sent to the platform on `POST /sandbox` as an advisory recovery key:
|
|
@@ -226,7 +228,7 @@ console.log(result.exitCode)
|
|
|
226
228
|
|
|
227
229
|
## Methods
|
|
228
230
|
|
|
229
|
-
**start** (`() => Promise<
|
|
231
|
+
**start** (`() => Promise<SandboxStartResult>`): Provision the remote sandbox, or reattach when sandboxId was passed to the constructor. Idempotent once the sandbox is running. A destroyed reattach target falls through to a fresh provision.
|
|
230
232
|
|
|
231
233
|
**destroy** (`() => Promise<void>`): Tear down the remote sandbox and clear the cached exec lease. A subsequent start() provisions a fresh sandbox (or restores from checkpoint when a stable id is set).
|
|
232
234
|
|
|
@@ -17,10 +17,78 @@ The `WorkspaceSandbox` interface defines how workspaces execute commands and man
|
|
|
17
17
|
Starts the sandbox and is called automatically by `workspace.init()` or the first `executeCommand()` call.
|
|
18
18
|
|
|
19
19
|
```typescript
|
|
20
|
-
await sandbox.start()
|
|
20
|
+
const result = await sandbox.start()
|
|
21
|
+
// { outcome: 'created' } — a fresh VM was created
|
|
22
|
+
// { outcome: 'connected' } — reconnected to an existing VM
|
|
23
|
+
// undefined — the provider does not report
|
|
21
24
|
```
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
**Returns:** `void | Promise<SandboxStartResult | void>`
|
|
27
|
+
|
|
28
|
+
A sandbox constructed with a known `id` resolves that id on `start()`: reconnect or resume the sandbox if it exists, create it if not (get-or-create). Providers that support this report a `SandboxStartResult`:
|
|
29
|
+
|
|
30
|
+
**outcome** (`'created' | 'connected'`): 'created' when a brand-new sandbox VM (or working directory) was provisioned; 'connected' when the call reconnected to or resumed an existing one.
|
|
31
|
+
|
|
32
|
+
Providers that predate the contract return `void`, which the base class treats as unknown.
|
|
33
|
+
|
|
34
|
+
Provider implementations plug into the start lifecycle at one of three rungs; the best available wins, and the base class always owns coalescing, status management, the `onStart` hook, and mount processing:
|
|
35
|
+
|
|
36
|
+
1. **Acquisition primitives**: implement protected `find()` (side-effect-free lookup by logical id, returning a provider-native handle or `undefined`), `connect(handle)` (wake/resume/adopt), and `create()` (provision fresh) without overriding `start()`. The base orchestrates find → connect → `{ outcome: 'connected' }`, else create → `{ outcome: 'created' }`. The outcome is derived structurally from which branch ran. Used by `E2BSandbox`, `DaytonaSandbox`, and `LocalSandbox`.
|
|
37
|
+
2. **`start()` override returning `SandboxStartResult`**: for providers whose API is a fused get-or-create where decomposition would add round-trips (`PlatformSandbox`, `RailwaySandbox`).
|
|
38
|
+
3. **`start()` override returning `void`**: legacy providers, where the outcome is unknown.
|
|
39
|
+
|
|
40
|
+
Concurrent `start()` calls on one instance coalesce onto a single in-flight attempt, and joined callers share that attempt's result (all observe `outcome: 'created'` when the shared attempt created the VM). The in-flight slot is cleared when the attempt settles, so a failed start can be retried. While the sandbox is already `running`, `start()` resolves `{ outcome: 'connected' }` without re-invoking the provider.
|
|
41
|
+
|
|
42
|
+
The result is also forwarded to the `onStart` lifecycle hook as `{ sandbox, outcome }`.
|
|
43
|
+
|
|
44
|
+
### `onStart` (constructor option)
|
|
45
|
+
|
|
46
|
+
`onStart` runs inside the start lifecycle, after the sandbox reaches `running` status and before pending mounts are processed. It fires on every start regardless of trigger, whether an explicit call, a lazy `ensureRunning()` from a command, or a revival after the provider replaced the VM. That makes it the seam for once-per-VM setup: branch on `outcome` and probe or run whatever the environment needs.
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
new E2BSandbox({
|
|
50
|
+
id: sessionId,
|
|
51
|
+
onStart: async ({ sandbox, outcome }) => {
|
|
52
|
+
if (outcome === 'created') {
|
|
53
|
+
// Fresh VM: run the full setup.
|
|
54
|
+
await runSetup(sandbox)
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
// Reconnected: probe, and self-heal if setup never completed.
|
|
58
|
+
const probe = await sandbox.executeCommand('test -d ~/repo/.git')
|
|
59
|
+
if (probe.exitCode !== 0) await runSetup(sandbox)
|
|
60
|
+
},
|
|
61
|
+
})
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Semantics:
|
|
65
|
+
|
|
66
|
+
- A thrown error is fatal: `start()` rejects with the hook's error and the sandbox is marked `error`, so a caller never observes a running sandbox whose setup hook failed. Nothing is latched, and the next `start()` (including the one triggered by the next lazy command) retries the hook. `onStop` and `onDestroy` remain non-fatal observers, because teardown proceeds best-effort.
|
|
67
|
+
- `outcome` distinguishes the branches: `'created'` means this start provisioned a fresh VM (run setup), `'connected'` means it reconnected or resumed (setup normally already ran, so probe when the hook must self-heal a crash between create and setup-complete). `undefined` means the provider doesn't report.
|
|
68
|
+
- Keep setup work idempotent. A hook re-runs whenever a probe decides it should, and a checkpoint-recovered fresh VM reports `outcome: 'created'`.
|
|
69
|
+
- The sandbox status flips to `running` before the hook executes (the hook runs commands through the sandbox's own command path), so commands issued concurrently through `ensureRunning()` can interleave with it. Callers awaiting the original `start()` always observe a sandbox whose hook finished.
|
|
70
|
+
- The hook runs before pending filesystem mounts are processed, so it can't rely on mounted paths.
|
|
71
|
+
|
|
72
|
+
### `setOnStart(update)`
|
|
73
|
+
|
|
74
|
+
Attaches a start hook after construction, for runtimes that receive a sandbox they didn't build. Without it, every host that constructs a sandbox has to accept a hook and pass it to the provider constructor, and a host that forgets leaves setup unrun with no error.
|
|
75
|
+
|
|
76
|
+
The updater receives the hook currently installed, either the `onStart` constructor option or one a previous call left behind, and returns the hook to install. Composing this way means a caller never discards a hook it didn't know about:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
sandbox.setOnStart?.(previous => async args => {
|
|
80
|
+
await previous?.(args) // whatever prepared the sandbox runs first
|
|
81
|
+
await mySetup(args)
|
|
82
|
+
})
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Semantics:
|
|
86
|
+
|
|
87
|
+
- Errors stay fatal, exactly as with the constructor option. Because each hook awaits the next, a throw stops the ones sequenced after it.
|
|
88
|
+
- The caller chooses the order. Await `previous` first when your hook needs the workspace it prepares, or last when yours is the one preparing it.
|
|
89
|
+
- Ignoring `previous` replaces the installed hook. That's supported, and it's how a caller takes over setup a runtime installed.
|
|
90
|
+
- Each call wraps the current hook, so attach once per sandbox instance. Attaching on a path that runs per request stacks duplicate work on every start.
|
|
91
|
+
- Only starts that begin after the call see the new hook.
|
|
24
92
|
|
|
25
93
|
### `stop()`
|
|
26
94
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @mastra/mcp-docs-server
|
|
2
2
|
|
|
3
|
+
## 1.2.19-alpha.18
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`4ff3ee2`](https://github.com/mastra-ai/mastra/commit/4ff3ee2bff7ed07528b4817f8f49639031c72a4d), [`c24754c`](https://github.com/mastra-ai/mastra/commit/c24754c1fb6fe144e5051e536e98c8a18b0214ac), [`45dd6ee`](https://github.com/mastra-ai/mastra/commit/45dd6ee089bd7df0d0c98a10098e483fd388e04a), [`32d3583`](https://github.com/mastra-ai/mastra/commit/32d358332cb8ac2306b83b73cf3536e74dbd435e), [`aca2869`](https://github.com/mastra-ai/mastra/commit/aca2869b2031982f3c4a2f52525c9be7cf123ef8)]:
|
|
8
|
+
- @mastra/core@1.62.0-alpha.11
|
|
9
|
+
|
|
3
10
|
## 1.2.19-alpha.16
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/mcp-docs-server",
|
|
3
|
-
"version": "1.2.19-alpha.
|
|
3
|
+
"version": "1.2.19-alpha.18",
|
|
4
4
|
"description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"jsdom": "^26.1.0",
|
|
29
29
|
"local-pkg": "^1.1.2",
|
|
30
30
|
"zod": "^4.4.3",
|
|
31
|
-
"@mastra/
|
|
32
|
-
"@mastra/
|
|
31
|
+
"@mastra/mcp": "^1.17.2-alpha.2",
|
|
32
|
+
"@mastra/core": "1.62.0-alpha.11"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@hono/node-server": "^2.0.0",
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"tsx": "^4.23.1",
|
|
46
46
|
"typescript": "^6.0.3",
|
|
47
47
|
"vitest": "4.1.10",
|
|
48
|
-
"@internal/types-builder": "0.0.100",
|
|
49
48
|
"@internal/lint": "0.0.125",
|
|
50
|
-
"@
|
|
49
|
+
"@internal/types-builder": "0.0.100",
|
|
50
|
+
"@mastra/core": "1.62.0-alpha.11"
|
|
51
51
|
},
|
|
52
52
|
"homepage": "https://mastra.ai",
|
|
53
53
|
"repository": {
|