@mastra/mcp-docs-server 1.2.14 → 1.2.15-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/.docs/docs/agents/a2a.md +75 -2
  2. package/.docs/docs/agents/processors.md +2 -0
  3. package/.docs/docs/agents/skills.md +15 -1
  4. package/.docs/docs/capabilities/channels/overview.md +19 -0
  5. package/.docs/docs/capabilities/subagents.md +23 -5
  6. package/.docs/docs/connections/overview.md +94 -0
  7. package/.docs/docs/datasets/running-experiments.md +18 -0
  8. package/.docs/docs/evals/overview.md +16 -4
  9. package/.docs/docs/harness/agent-controller.md +6 -0
  10. package/.docs/docs/harness/overview.md +26 -0
  11. package/.docs/docs/index.md +1 -1
  12. package/.docs/docs/mcp/overview.md +10 -0
  13. package/.docs/docs/memory/multi-user-threads.md +1 -1
  14. package/.docs/docs/memory/observational-memory.md +1 -1
  15. package/.docs/docs/memory/semantic-recall.md +2 -1
  16. package/.docs/docs/memory/working-memory.md +1 -0
  17. package/.docs/docs/observability/feedback.md +16 -0
  18. package/.docs/docs/observability/integrations/exporters/mastra-storage.md +1 -0
  19. package/.docs/docs/server/auth.md +2 -0
  20. package/.docs/docs/server/mastra-client.md +11 -11
  21. package/.docs/docs/storage/overview.md +1 -0
  22. package/.docs/docs/workflows/agents-and-tools.md +2 -2
  23. package/.docs/docs/workflows/{stored-workflows.md → dynamic-workflows.md} +23 -23
  24. package/.docs/docs/workflows/snapshots.md +3 -1
  25. package/.docs/guides/build-your-ui/ai-sdk-ui.md +25 -14
  26. package/.docs/guides/getting-started/quickstart.md +1 -1
  27. package/.docs/guides/rag/overview.md +1 -1
  28. package/.docs/guides/rag/retrieval.md +17 -0
  29. package/.docs/guides/rag/vector-databases.md +41 -0
  30. package/.docs/guides/voice/realtime-voice.md +28 -2
  31. package/.docs/models/gateways/neon.md +20 -14
  32. package/.docs/models/gateways/netlify.md +1 -2
  33. package/.docs/models/gateways/openrouter.md +4 -2
  34. package/.docs/models/gateways/vercel.md +10 -3
  35. package/.docs/models/index.md +1 -1
  36. package/.docs/models/providers/anthropic.md +2 -2
  37. package/.docs/models/providers/cortecs.md +2 -1
  38. package/.docs/models/providers/deepinfra.md +6 -3
  39. package/.docs/models/providers/digitalocean.md +6 -5
  40. package/.docs/models/providers/empiriolabs.md +6 -4
  41. package/.docs/models/providers/friendli.md +8 -9
  42. package/.docs/models/providers/huggingface.md +4 -1
  43. package/.docs/models/providers/hyper.md +5 -6
  44. package/.docs/models/providers/kilo.md +11 -9
  45. package/.docs/models/providers/llmgateway.md +3 -3
  46. package/.docs/models/providers/meta.md +7 -5
  47. package/.docs/models/providers/minimax.md +25 -23
  48. package/.docs/models/providers/nano-gpt.md +7 -4
  49. package/.docs/models/providers/neuralwatt.md +2 -1
  50. package/.docs/models/providers/ofox.md +74 -16
  51. package/.docs/models/providers/openai.md +28 -26
  52. package/.docs/models/providers/opencode-go.md +1 -1
  53. package/.docs/models/providers/opencode.md +2 -3
  54. package/.docs/models/providers/perplexity-agent.md +24 -24
  55. package/.docs/models/providers/pioneer.md +27 -1
  56. package/.docs/models/providers/regolo-ai.md +25 -20
  57. package/.docs/models/providers/upstage.md +3 -2
  58. package/.docs/models/providers/vivgrid.md +4 -2
  59. package/.docs/models/providers/wandb.md +1 -1
  60. package/.docs/reference/agents/channels.md +22 -1
  61. package/.docs/reference/agents/generate.md +1 -1
  62. package/.docs/reference/ai-sdk/chat-route.md +2 -0
  63. package/.docs/reference/browser/agent-browser.md +1 -1
  64. package/.docs/reference/browser/mastra-browser.md +1 -1
  65. package/.docs/reference/browser/stagehand-browser.md +1 -1
  66. package/.docs/reference/channels/slack-provider.md +2 -0
  67. package/.docs/reference/client-js/observability.md +22 -0
  68. package/.docs/reference/client-js/workflows.md +32 -19
  69. package/.docs/reference/configuration.md +26 -1
  70. package/.docs/reference/core/{addStoredWorkflow.md → addDynamicWorkflow.md} +10 -10
  71. package/.docs/reference/core/{addStoredWorkflows.md → addDynamicWorkflows.md} +9 -9
  72. package/.docs/reference/editor/tool-provider.md +26 -1
  73. package/.docs/reference/file-based-agents/config.md +22 -21
  74. package/.docs/reference/file-based-agents/instructions.md +42 -17
  75. package/.docs/reference/file-based-agents/schedules.md +232 -0
  76. package/.docs/reference/index.md +7 -3
  77. package/.docs/reference/observability/metrics/automatic-metrics.md +10 -8
  78. package/.docs/reference/rag/metadata-filters.md +13 -4
  79. package/.docs/reference/server/register-api-route.md +2 -0
  80. package/.docs/reference/server/routes.md +38 -24
  81. package/.docs/reference/storage/composite.md +58 -0
  82. package/.docs/reference/storage/oracledb.md +239 -0
  83. package/.docs/reference/storage/overview.md +9 -9
  84. package/.docs/reference/storage/retention.md +1 -1
  85. package/.docs/reference/streaming/agents/stream.md +1 -1
  86. package/.docs/reference/tools/bedrock-kb-tool.md +117 -0
  87. package/.docs/reference/tools/mcp-client.md +54 -0
  88. package/.docs/reference/vectors/oracledb.md +347 -0
  89. package/.docs/reference/voice/google.md +19 -3
  90. package/.docs/reference/workflows/{stored-workflow-definition.md → dynamic-workflow-definition.md} +7 -7
  91. package/.docs/reference/workflows/step.md +40 -0
  92. package/.docs/reference/workflows/workflow-methods/agent.md +3 -3
  93. package/.docs/reference/workflows/workflow-methods/tool.md +3 -3
  94. package/.docs/reference/workspace/daytona-sandbox.md +21 -0
  95. package/.docs/reference/workspace/workspace-class.md +2 -0
  96. package/CHANGELOG.md +51 -0
  97. package/package.json +6 -6
@@ -0,0 +1,347 @@
1
+ > Discover all available pages from the documentation index: https://mastra.ai/llms.txt
2
+
3
+ # OracleDB vector store
4
+
5
+ `OracleVector` stores embeddings in Oracle Database `VECTOR` columns and exposes them through Mastra's vector interface. Each logical Mastra vector index is mapped to an Oracle vector table through a registry table, while metadata is stored as Oracle JSON for structured filtering.
6
+
7
+ ## Installation
8
+
9
+ **npm**:
10
+
11
+ ```bash
12
+ npm install @mastra/oracledb@latest
13
+ ```
14
+
15
+ **pnpm**:
16
+
17
+ ```bash
18
+ pnpm add @mastra/oracledb@latest
19
+ ```
20
+
21
+ **Yarn**:
22
+
23
+ ```bash
24
+ yarn add @mastra/oracledb@latest
25
+ ```
26
+
27
+ **Bun**:
28
+
29
+ ```bash
30
+ bun add @mastra/oracledb@latest
31
+ ```
32
+
33
+ ## Usage
34
+
35
+ ```ts
36
+ import { OracleVector } from '@mastra/oracledb'
37
+
38
+ const vector = new OracleVector({
39
+ id: 'oracle-vector',
40
+ user: process.env.ORACLE_DATABASE_USER,
41
+ password: process.env.ORACLE_DATABASE_PASSWORD,
42
+ connectString: process.env.ORACLE_DATABASE_CONNECT_STRING,
43
+ })
44
+
45
+ await vector.createIndex({
46
+ indexName: 'memory_messages',
47
+ dimension: 1536,
48
+ metric: 'cosine',
49
+ })
50
+
51
+ await vector.upsert({
52
+ indexName: 'memory_messages',
53
+ vectors: [embedding],
54
+ metadata: [{ resource_id: 'user-1', thread_id: 'thread-1' }],
55
+ })
56
+
57
+ const results = await vector.query({
58
+ indexName: 'memory_messages',
59
+ queryVector,
60
+ topK: 5,
61
+ filter: { resource_id: 'user-1' },
62
+ })
63
+ ```
64
+
65
+ By default, `OracleVector` uses exact search with no approximate vector index. Configure IVF or HNSW when your dataset and latency requirements need approximate search.
66
+
67
+ ## Constructor options
68
+
69
+ Pass Oracle connection options (`user`, `password`, `connectString`, `pool`, wallet options, or `externalAuth`) directly, or pass `poolManager` to share the pool used by `OracleStore`. The vector-specific options are:
70
+
71
+ **id** (`string`): Unique identifier for this vector store instance.
72
+
73
+ **poolManager** (`OraclePoolManager`): Shared Oracle pool manager. Use this to share one Oracle pool with OracleStore.
74
+
75
+ **schemaName** (`string`): Oracle schema name used to qualify the vector registry and vector tables.
76
+
77
+ **tablePrefix** (`string`): Prefix used for physical Oracle vector tables. (Default: `'MASTRA_VEC'`)
78
+
79
+ **registryTableName** (`string`): Oracle table used to map Mastra logical index names to physical vector tables. (Default: `'MASTRA_VECTOR_INDEXES'`)
80
+
81
+ **defaultIndexConfig** (`OracleVectorIndexConfig`): Default Oracle vector index configuration. (Default: `{ type: 'none', accuracy: 95 }`)
82
+
83
+ **defaultMetadataIndexes** (`string[]`): Metadata fields to index automatically when vector tables are created. (Default: `['thread_id', 'resource_id', 'message_id', 'source_id']`)
84
+
85
+ **defaultVectorFormat** (`'vector' | 'bit' | 'int8'`): Default Oracle vector format for dense, binary, and int8 embeddings. (Default: `'vector'`)
86
+
87
+ **upsertBatchSize** (`number`): Number of vectors sent per Oracle executeMany call. The full upsert commits once after all batches succeed. (Default: `200`)
88
+
89
+ ## Constructor examples
90
+
91
+ ### Shared pool with OracleStore
92
+
93
+ ```ts
94
+ import { OracleStore, OracleVector } from '@mastra/oracledb'
95
+
96
+ const storage = new OracleStore({ id: 'oracle-storage', user, password, connectString })
97
+
98
+ const vector = new OracleVector({
99
+ id: 'oracle-vector',
100
+ poolManager: storage.getPoolManager(),
101
+ })
102
+ ```
103
+
104
+ For Autonomous Database and mTLS connections, pass `walletLocation`, `walletPassword`, and `configDir` in the same constructor.
105
+
106
+ ## Methods
107
+
108
+ ### `createIndex()`
109
+
110
+ Creates the registry row, physical Oracle vector table, metadata indexes, and optionally an Oracle vector index.
111
+
112
+ **indexName** (`string`): Logical Mastra index name. The provider maps this to a valid Oracle table name internally.
113
+
114
+ **dimension** (`number`): Vector dimension. This must match the embedding model output size.
115
+
116
+ **metric** (`'cosine' | 'euclidean' | 'dotproduct' | 'hamming' | 'jaccard'`): Distance metric for similarity search. Binary vectors support hamming and jaccard. (Default: `cosine`)
117
+
118
+ **vectorFormat** (`'vector' | 'bit' | 'int8'`): Oracle vector storage format. (Default: `vector`)
119
+
120
+ **indexConfig** (`OracleVectorIndexConfig`): Oracle vector index configuration. none means exact search with no approximate vector index. (Default: `{ type: 'none', accuracy: 95 }`)
121
+
122
+ **buildIndex** (`boolean`): Whether to build the Oracle vector index when indexConfig.type is ivf or hnsw. (Default: `true`)
123
+
124
+ **metadataIndexes** (`string[]`): Metadata field names to index for faster JSON metadata filtering.
125
+
126
+ #### `OracleVectorIndexConfig`
127
+
128
+ **type** (`'none' | 'ivf' | 'hnsw'`): Oracle vector index type. (Default: `'none'`)
129
+
130
+ **accuracy** (`number`): Target accuracy for approximate vector search. (Default: `95`)
131
+
132
+ **ivf.neighborPartitions** (`number`): Oracle IVF neighbor partitions setting.
133
+
134
+ **hnsw\.neighbors** (`number`): Oracle HNSW neighbor setting.
135
+
136
+ **hnsw\.efConstruction** (`number`): Oracle HNSW build-time construction setting.
137
+
138
+ #### Index configuration
139
+
140
+ ```ts
141
+ await vector.createIndex({
142
+ indexName: 'support_articles',
143
+ dimension: 1536,
144
+ metric: 'cosine',
145
+ indexConfig: {
146
+ type: 'ivf',
147
+ accuracy: 95,
148
+ ivf: {
149
+ neighborPartitions: 32,
150
+ },
151
+ },
152
+ })
153
+ ```
154
+
155
+ The default is `indexConfig: { type: 'none' }`, which uses exact search and requires no approximate index tuning. Use IVF or HNSW only when your data volume and latency requirements justify approximate search. HNSW is configured with `indexConfig: { type: 'hnsw', hnsw: { neighbors, efConstruction } }` and requires Oracle Vector Pool memory, which `configureVectorMemory()` can allocate for local or self-managed databases.
156
+
157
+ ### `upsert()`
158
+
159
+ **indexName** (`string`): Name of the index to upsert vectors into.
160
+
161
+ **vectors** (`number[][]`): Array of embedding vectors.
162
+
163
+ **metadata** (`Record<string, any>[]`): Metadata stored as Oracle JSON. Must align by position with vectors.
164
+
165
+ **ids** (`string[]`): Optional vector IDs. IDs are generated when omitted.
166
+
167
+ ### `query()`
168
+
169
+ **indexName** (`string`): Name of the index to query.
170
+
171
+ **queryVector** (`number[]`): Query vector.
172
+
173
+ **topK** (`number`): Number of results to return. (Default: `10`)
174
+
175
+ **filter** (`Record<string, any>`): Mastra metadata filter translated to Oracle JSON predicates.
176
+
177
+ **includeVector** (`boolean`): Whether to include the vector in each result. (Default: `false`)
178
+
179
+ **minScore** (`number`): Minimum similarity score threshold. (Default: `-1`)
180
+
181
+ **queryMode** (`'exact' | 'approx'`): Oracle query mode. Exact search is used by default when no approximate vector index is configured.
182
+
183
+ **targetAccuracy** (`number`): Target accuracy for approximate Oracle vector queries.
184
+
185
+ ### `listIndexes()`
186
+
187
+ Returns the logical Mastra index names recorded in the Oracle vector registry table.
188
+
189
+ ### `describeIndex()`
190
+
191
+ Returns Oracle index metadata, including the physical table name, dimension, vector count, metric, index type, vector format, and configured accuracy.
192
+
193
+ ### `deleteIndex()`
194
+
195
+ Deletes the Oracle vector table and removes the registry entry for the logical index.
196
+
197
+ ### `updateVector()`
198
+
199
+ Update vectors by ID or metadata filter. Either `id` or `filter` must be provided, but not both. The `update` object may include `vector`, `metadata`, or both.
200
+
201
+ ```ts
202
+ await vector.updateVector({
203
+ indexName: 'support_articles',
204
+ id: 'doc-1',
205
+ update: { metadata: { status: 'reviewed' } },
206
+ })
207
+ ```
208
+
209
+ ### `deleteVector()`
210
+
211
+ Deletes a single vector by ID.
212
+
213
+ ### `deleteVectors()`
214
+
215
+ Deletes multiple vectors by IDs or by metadata filter. Either `ids` or `filter` must be provided, but not both.
216
+
217
+ ### `buildIndex()`
218
+
219
+ Builds an Oracle vector index for an existing logical index. If the resolved index type is `none`, this method is a no-op.
220
+
221
+ ### `rebuildIndex()`
222
+
223
+ Drops and recreates the Oracle vector index for an existing logical index, typically after changing approximate-index tuning.
224
+
225
+ ### Index diagnostics
226
+
227
+ Use `getIndexStatus({ indexName })` to inspect Oracle catalog status, and `indexAccuracyQuery({ indexName, queryVector, topK, targetAccuracy })` to run `DBMS_VECTOR.INDEX_ACCURACY_QUERY` for approximate indexes.
228
+
229
+ ### `configureVectorMemory()`
230
+
231
+ Allocates Oracle Vector Pool memory, which HNSW indexes require. This calls `ALTER SYSTEM SET VECTOR_MEMORY_SIZE`, so it requires a privileged connection such as `SYSDBA` or `SYSTEM`.
232
+
233
+ **size** (`string`): Vector pool size, as an integer optionally followed by K, M, or G (for example "512M").
234
+
235
+ **scope** (`'MEMORY' | 'SPFILE' | 'BOTH'`): Oracle ALTER SYSTEM scope. Use 'SPFILE' or 'BOTH' so the setting survives a database restart. (Default: `'MEMORY'`)
236
+
237
+ ### `disconnect()`
238
+
239
+ Closes the Oracle pool when `OracleVector` created the pool manager. If you provide `pool` or `poolManager`, you own that lifecycle.
240
+
241
+ ## Metadata filters
242
+
243
+ `OracleVector` accepts Mastra's standard metadata filter syntax. Filters are translated into Oracle JSON predicates with bound values:
244
+
245
+ - scalar comparisons use `JSON_VALUE`
246
+ - array, existence, and element-match checks use `JSON_EXISTS`
247
+ - regex filters use `REGEXP_LIKE`
248
+ - string contains filters use case-insensitive `LIKE`
249
+
250
+ ```ts
251
+ const results = await vector.query({
252
+ indexName: 'memory_messages',
253
+ queryVector,
254
+ topK: 5,
255
+ filter: {
256
+ resource_id: 'user-1',
257
+ tags: { $contains: 'support' },
258
+ score: { $gte: 0.8 },
259
+ $or: [{ source: 'docs' }, { source: 'tickets' }],
260
+ },
261
+ })
262
+ ```
263
+
264
+ Metadata is stored as native Oracle JSON, so the rows are also readable directly with standard Oracle JDBC tools such as DBeaver and SQL Developer.
265
+
266
+ Use `ORACLEDB_PROMPT` when an agent should generate Oracle-compatible metadata filters for `createVectorQueryTool()`:
267
+
268
+ ```ts
269
+ import { Agent } from '@mastra/core/agent'
270
+ import { createVectorQueryTool } from '@mastra/rag'
271
+ import { fastembed } from '@mastra/fastembed'
272
+ import { ORACLEDB_PROMPT } from '@mastra/oracledb'
273
+
274
+ const vectorQueryTool = createVectorQueryTool({
275
+ vectorStoreName: 'oracle',
276
+ indexName: 'support_articles',
277
+ model: fastembed,
278
+ enableFilter: true,
279
+ })
280
+
281
+ export const ragAgent = new Agent({
282
+ id: 'oracle-rag-agent',
283
+ name: 'Oracle RAG Agent',
284
+ model: 'openai/gpt-5.6-sol',
285
+ instructions: `
286
+ Use the retrieval tool when you need source context.
287
+ Available metadata fields: resource_id, thread_id, source, category, tags.
288
+ ${ORACLEDB_PROMPT}
289
+ `,
290
+ tools: { vectorQueryTool },
291
+ })
292
+ ```
293
+
294
+ ## Response types
295
+
296
+ Query results are returned in this format:
297
+
298
+ ```ts
299
+ interface QueryResult {
300
+ id: string
301
+ score: number
302
+ metadata: Record<string, any>
303
+ vector?: number[]
304
+ }
305
+ ```
306
+
307
+ ## Usage example
308
+
309
+ ```ts
310
+ import { Agent } from '@mastra/core/agent'
311
+ import { Memory } from '@mastra/memory'
312
+ import { fastembed } from '@mastra/fastembed'
313
+ import { OracleStore, OracleVector } from '@mastra/oracledb'
314
+
315
+ const storage = new OracleStore({
316
+ id: 'oracle-storage',
317
+ user: process.env.ORACLE_DATABASE_USER,
318
+ password: process.env.ORACLE_DATABASE_PASSWORD,
319
+ connectString: process.env.ORACLE_DATABASE_CONNECT_STRING,
320
+ })
321
+
322
+ const vector = new OracleVector({
323
+ id: 'oracle-vector',
324
+ poolManager: storage.getPoolManager(),
325
+ })
326
+
327
+ export const oracleAgent = new Agent({
328
+ id: 'oracle-agent',
329
+ name: 'Oracle Agent',
330
+ instructions: 'You are an assistant with OracleDB-backed memory and semantic recall.',
331
+ model: 'openai/gpt-5.6-sol',
332
+ memory: new Memory({
333
+ storage,
334
+ vector,
335
+ embedder: fastembed,
336
+ options: {
337
+ semanticRecall: { topK: 3, messageRange: 2 },
338
+ },
339
+ }),
340
+ })
341
+ ```
342
+
343
+ ## Related
344
+
345
+ - [OracleDB storage](https://mastra.ai/reference/storage/oracledb)
346
+ - [Metadata Filters](https://mastra.ai/reference/rag/metadata-filters)
347
+ - [Vector databases](https://mastra.ai/guides/rag/vector-databases)
@@ -109,7 +109,17 @@ Converts speech to text using Google Cloud Speech-to-Text service. Supports both
109
109
 
110
110
  Pass `v2: true` to use the Cloud Speech-to-Text v2 API, which supports additional audio formats like AAC-in-MP4 (iOS Safari).
111
111
 
112
+ The v2 `recognize` call is IAM-authorized and does not accept API-key-only authentication. Configure service account credentials on the `listeningModel` (or set `GOOGLE_APPLICATION_CREDENTIALS`) and set `GOOGLE_CLOUD_PROJECT` so the recognizer path can be resolved, even when `vertexAI` is not enabled.
113
+
112
114
  ```typescript
115
+ import { GoogleVoice } from '@mastra/voice-google'
116
+
117
+ // v2 listen() requires service account credentials, not just GOOGLE_API_KEY.
118
+ // Set GOOGLE_CLOUD_PROJECT so the recognizer path can be resolved.
119
+ const voice = new GoogleVoice({
120
+ listeningModel: { keyFilename: process.env.GOOGLE_APPLICATION_CREDENTIALS },
121
+ })
122
+
113
123
  const transcript = await voice.listen(iosSafariAacStream, {
114
124
  v2: true,
115
125
  config: {
@@ -118,6 +128,8 @@ const transcript = await voice.listen(iosSafariAacStream, {
118
128
  })
119
129
  ```
120
130
 
131
+ > **Note:** `listen({ v2: true })` fails with `PERMISSION_DENIED` on `speech.recognizers.recognize` when only `GOOGLE_API_KEY` is set. An API-key request carries no OAuth identity, so granting `roles/speech.client` to a user account does not help — the role must be granted to the service account presented in the request. This applies regardless of the `vertexAI` setting; `speak()` and v1 `listen()` still work with an API key alone.
132
+
121
133
  **audioStream** (`NodeJS.ReadableStream`): Audio stream to transcribe
122
134
 
123
135
  **options** (`GoogleListenOptionsV2`): v2 recognition options
@@ -162,7 +174,7 @@ The Google Voice provider supports two authentication methods:
162
174
 
163
175
  ### Standard Mode (API Key)
164
176
 
165
- Uses a Google Cloud API key for authentication. Suitable for development and basic use cases.
177
+ Uses a Google Cloud API key for authentication. Covers `speak()` and v1 `listen()`. It does not cover `listen({ v2: true })`, which is IAM-authorized and requires service account credentials (see [v2](#v2)).
166
178
 
167
179
  ```typescript
168
180
  // Using environment variable (GOOGLE_API_KEY)
@@ -238,6 +250,8 @@ For Speech-to-Text:
238
250
 
239
251
  - `roles/speech.client` - Speech-to-Text Client
240
252
 
253
+ Grant `roles/speech.client` to the service account whose credentials the request presents (via `keyFilename`, `credentials`, or `GOOGLE_APPLICATION_CREDENTIALS`). This role is required for `listen({ v2: true })` specifically, not only for Vertex AI mode. Granting it to a user account has no effect on API-key-only requests, which carry no identity to authorize.
254
+
241
255
  #### OAuth Scopes
242
256
 
243
257
  For synchronous Text-to-Speech synthesis:
@@ -269,6 +283,8 @@ For long-audio Text-to-Speech operations:
269
283
 
270
284
  6. The `listen()` method supports various recognition configurations through the Google Cloud Speech-to-Text API.
271
285
 
272
- 7. Available voices can be filtered by language code using the `getSpeakers()` method.
286
+ 7. `listen({ v2: true })` requires service account credentials and `GOOGLE_CLOUD_PROJECT`; it fails with `PERMISSION_DENIED` when only `GOOGLE_API_KEY` is set. `speak()` and v1 `listen()` work with an API key alone.
287
+
288
+ 8. Available voices can be filtered by language code using the `getSpeakers()` method.
273
289
 
274
- 8. Vertex AI mode provides enterprise features including IAM control, audit logs, and project-level billing.
290
+ 9. Vertex AI mode provides enterprise features including IAM control, audit logs, and project-level billing.
@@ -1,12 +1,12 @@
1
1
  > Discover all available pages from the documentation index: https://mastra.ai/llms.txt
2
2
 
3
- # Stored workflow definition
3
+ # Dynamic workflow definition
4
4
 
5
- > **Beta:** Stored workflows are in beta. Breaking changes may occur without a major version bump until the API is stable.
5
+ > **Beta:** Dynamic workflows are in beta. Breaking changes may occur without a major version bump until the API is stable.
6
6
 
7
- A stored workflow definition is a JSON-compatible `StoredWorkflowGraph` accepted by [`Mastra.addStoredWorkflow()`](https://mastra.ai/reference/core/addStoredWorkflow), the stored-workflow server routes, and the Client SDK workflows API.
7
+ A dynamic workflow definition is a JSON-compatible `DynamicWorkflowGraph` accepted by [`Mastra.addDynamicWorkflow()`](https://mastra.ai/reference/core/addDynamicWorkflow), the stored-workflow server routes, and the Client SDK workflows API.
8
8
 
9
- See [Stored workflows](https://mastra.ai/docs/workflows/stored-workflows) for a complete setup and usage example.
9
+ See [Dynamic workflows](https://mastra.ai/docs/workflows/dynamic-workflows) for a complete setup and usage example.
10
10
 
11
11
  ## Definition fields
12
12
 
@@ -286,7 +286,7 @@ Validation errors include a dotted path, such as `graph.2.steps.0`, that identif
286
286
 
287
287
  ## Related
288
288
 
289
- - [Use stored workflows](https://mastra.ai/docs/workflows/stored-workflows)
290
- - [`Mastra.addStoredWorkflow()`](https://mastra.ai/reference/core/addStoredWorkflow)
291
- - [`Mastra.addStoredWorkflows()`](https://mastra.ai/reference/core/addStoredWorkflows)
289
+ - [Use dynamic workflows](https://mastra.ai/docs/workflows/dynamic-workflows)
290
+ - [`Mastra.addDynamicWorkflow()`](https://mastra.ai/reference/core/addDynamicWorkflow)
291
+ - [`Mastra.addDynamicWorkflows()`](https://mastra.ai/reference/core/addDynamicWorkflows)
292
292
  - [Client SDK workflows API](https://mastra.ai/reference/client-js/workflows)
@@ -191,8 +191,48 @@ const agentStep = createStep(testAgent, {
191
191
 
192
192
  **execute.retryCount** (`number`): The retry count for this specific step, it automatically increases each time the step is retried
193
193
 
194
+ **scorers** (`MastraScorers | (({ requestContext }) => MastraScorers | Promise<MastraScorers>)`): Scorers that run automatically after the step completes successfully. Each scorer evaluates the step's own input and output, and the results are stored and attached to the step's trace. Provide a map of { \[name]: { scorer, sampling? } }, or a function that returns one. Scoring runs asynchronously and doesn't block the workflow. See Scoring step output.
195
+
196
+ **retries** (`number`): Number of times to retry the step's execute function if it throws.
197
+
194
198
  **metadata** (`Record<string, any>`): Optional key-value pairs for storing additional step information. Values must be serializable (no functions, circular references, etc.).
195
199
 
200
+ ## Scoring step output
201
+
202
+ Attach `scorers` to a step to evaluate that step's output automatically, at the point it runs, instead of only scoring the workflow's final answer. This is useful for multi-step and RAG workflows, where you want to see which step degraded quality, for example whether a retrieval step returned relevant chunks before later steps reason over them.
203
+
204
+ Each scorer receives the step's own `input` and `output`. Scoring runs asynchronously after the step succeeds, and the result is stored against the step's trace. Use `sampling` to control how often a scorer runs.
205
+
206
+ The following example attaches a scorer to a retrieval step so every execution is scored:
207
+
208
+ ```typescript
209
+ import { createStep } from '@mastra/core/workflows'
210
+ import { z } from 'zod'
211
+ import { retrievalRelevanceScorer } from '../scorers/retrieval-relevance'
212
+
213
+ const retrievalStep = createStep({
214
+ id: 'retrieval',
215
+ inputSchema: z.object({ query: z.string() }),
216
+ outputSchema: z.object({ query: z.string(), chunks: z.array(z.string()) }),
217
+ scorers: {
218
+ retrievalRelevance: {
219
+ scorer: retrievalRelevanceScorer(),
220
+ sampling: { type: 'ratio', rate: 1 },
221
+ },
222
+ },
223
+ execute: async ({ inputData }) => {
224
+ const chunks = await retrieve(inputData.query)
225
+ return { query: inputData.query, chunks }
226
+ },
227
+ })
228
+ ```
229
+
230
+ Attach a scorer to each step you want to measure to build per-step scores across a multi-step workflow. Because scoring is scoped to a single step, you don't need a dedicated cross-step metric to see where quality changes.
231
+
232
+ Agent and tool steps added with [`Workflow.agent()`](https://mastra.ai/reference/workflows/workflow-methods/agent) and [`Workflow.tool()`](https://mastra.ai/reference/workflows/workflow-methods/tool) accept the same `scorers` option in their step options.
233
+
234
+ > **Note:** Visit the [Scorers overview](https://mastra.ai/docs/evals/overview) to learn how live evaluations run and where results are stored, and [Custom scorers](https://mastra.ai/docs/evals/custom-scorers) to build your own.
235
+
196
236
  ## Related
197
237
 
198
238
  - [Workflow state](https://mastra.ai/docs/workflows/workflow-state)
@@ -4,7 +4,7 @@
4
4
 
5
5
  The `.agent()` method adds an agent as a declarative step. The step accepts `{ prompt: string }` as input and returns `{ text: string }` by default. Use `.map()` before the agent to build the prompt from workflow data.
6
6
 
7
- Unlike wrapping an agent with `createStep()`, `.agent()` records a declarative entry in the workflow graph. This makes the workflow portable: the same graph can be serialized and persisted as a [stored workflow](https://mastra.ai/docs/workflows/stored-workflows).
7
+ Unlike wrapping an agent with `createStep()`, `.agent()` records a declarative entry in the workflow graph. This makes the workflow portable: the same graph can be serialized and persisted as a [dynamic workflow](https://mastra.ai/docs/workflows/dynamic-workflows).
8
8
 
9
9
  ## Usage example
10
10
 
@@ -53,10 +53,10 @@ workflow.agent("test-agent", { maxSteps: 3 }).commit();
53
53
 
54
54
  ## Persisting agent steps
55
55
 
56
- Workflows built with `.agent()` serialize to the same declarative entries that [stored workflows](https://mastra.ai/docs/workflows/stored-workflows) use. Only `retries` and `metadata` round-trip through storage. Options that hold functions, such as `onFinish` or a function-valued `toolChoice`, throw an error when the workflow is stored.
56
+ Workflows built with `.agent()` serialize to the same declarative entries that [dynamic workflows](https://mastra.ai/docs/workflows/dynamic-workflows) use. Only `retries` and `metadata` round-trip through storage. Options that hold functions, such as `onFinish` or a function-valued `toolChoice`, throw an error when the workflow is stored.
57
57
 
58
58
  ## Related
59
59
 
60
60
  - [Agents and Tools](https://mastra.ai/docs/workflows/agents-and-tools)
61
- - [Stored workflows](https://mastra.ai/docs/workflows/stored-workflows)
61
+ - [Dynamic workflows](https://mastra.ai/docs/workflows/dynamic-workflows)
62
62
  - [Workflow.tool()](https://mastra.ai/reference/workflows/workflow-methods/tool)
@@ -4,7 +4,7 @@
4
4
 
5
5
  The `.tool()` method adds a tool as a declarative step. The tool's own input and output schemas apply, so the previous step's output must satisfy the tool's input schema. Use `.map()` to transform the data if they don't match.
6
6
 
7
- Unlike wrapping a tool with `createStep()`, `.tool()` records a declarative entry in the workflow graph. This makes the workflow portable: the same graph can be serialized and persisted as a [stored workflow](https://mastra.ai/docs/workflows/stored-workflows).
7
+ Unlike wrapping a tool with `createStep()`, `.tool()` records a declarative entry in the workflow graph. This makes the workflow portable: the same graph can be serialized and persisted as a [dynamic workflow](https://mastra.ai/docs/workflows/dynamic-workflows).
8
8
 
9
9
  ## Usage example
10
10
 
@@ -34,10 +34,10 @@ workflow.tool("lookup-customer", { retries: 2 }).commit();
34
34
 
35
35
  ## Persisting tool steps
36
36
 
37
- Workflows built with `.tool()` serialize to the same declarative entries that [stored workflows](https://mastra.ai/docs/workflows/stored-workflows) use. Only `retries` and `metadata` round-trip through storage. A function-valued `scorers` option throws an error when the workflow is stored.
37
+ Workflows built with `.tool()` serialize to the same declarative entries that [dynamic workflows](https://mastra.ai/docs/workflows/dynamic-workflows) use. Only `retries` and `metadata` round-trip through storage. A function-valued `scorers` option throws an error when the workflow is stored.
38
38
 
39
39
  ## Related
40
40
 
41
41
  - [Agents and Tools](https://mastra.ai/docs/workflows/agents-and-tools)
42
- - [Stored workflows](https://mastra.ai/docs/workflows/stored-workflows)
42
+ - [Dynamic workflows](https://mastra.ai/docs/workflows/dynamic-workflows)
43
43
  - [Workflow.agent()](https://mastra.ai/reference/workflows/workflow-methods/agent)
@@ -263,6 +263,25 @@ const workspace = new Workspace({
263
263
  })
264
264
  ```
265
265
 
266
+ Use `domainAllowList` for services whose IP addresses change, such as package registries and hosted APIs:
267
+
268
+ ```typescript
269
+ const workspace = new Workspace({
270
+ sandbox: new DaytonaSandbox({
271
+ networkBlockAll: true,
272
+ domainAllowList: 'registry.npmjs.org,*.githubusercontent.com',
273
+ }),
274
+ })
275
+ ```
276
+
277
+ Both allow lists are applied at sandbox creation and are preserved by `clone()`. To change the policy after the sandbox has started, use the underlying Daytona sandbox:
278
+
279
+ ```typescript
280
+ await sandbox.instance.updateNetworkSettings({
281
+ domainAllowList: 'api.example.com',
282
+ })
283
+ ```
284
+
266
285
  ## Constructor parameters
267
286
 
268
287
  **id** (`string`): Unique identifier for this sandbox instance. (Default: `Auto-generated`)
@@ -307,6 +326,8 @@ const workspace = new Workspace({
307
326
 
308
327
  **networkAllowList** (`string`): Comma-separated list of allowed CIDR addresses when network access is restricted.
309
328
 
329
+ **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
+
310
331
  ## Properties
311
332
 
312
333
  **id** (`string`): Sandbox instance identifier.
@@ -67,6 +67,8 @@ const workspace = new Workspace({
67
67
 
68
68
  **tools.maxOutputTokens** (`number`): Maximum tokens for tool output. Output exceeding this limit is truncated using tiktoken.
69
69
 
70
+ **tools.writeLockTimeoutMs** (`number`): Maximum time in milliseconds a write tool waits to acquire the per-file write lock before failing. Raise this for slow or cold-starting filesystems (e.g. remote sandboxes).
71
+
70
72
  **tools.hooks** (`WorkspaceToolHooks`): Hooks that run before and after every enabled workspace tool call. See Tool hooks below.
71
73
 
72
74
  **operationTimeout** (`number`): Timeout for operations in milliseconds
package/CHANGELOG.md CHANGED
@@ -1,5 +1,56 @@
1
1
  # @mastra/mcp-docs-server
2
2
 
3
+ ## 1.2.15-alpha.10
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`f59032a`](https://github.com/mastra-ai/mastra/commit/f59032a73699443555a08a479e7ac578975784f2), [`bf936e2`](https://github.com/mastra-ai/mastra/commit/bf936e2c89b2ff0dad5695b873ddc009ba96d41e)]:
8
+ - @mastra/core@1.58.0-alpha.6
9
+
10
+ ## 1.2.15-alpha.8
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`6445eba`](https://github.com/mastra-ai/mastra/commit/6445eba6020abac681aba1cc9289f446cb400cbe), [`df31eb0`](https://github.com/mastra-ai/mastra/commit/df31eb0c7087d782a0d9346e467f9a4af4b0eef6), [`fcd0667`](https://github.com/mastra-ai/mastra/commit/fcd0667a4e378be35c9a1b1eb19cce78fbfd7282), [`bab06b1`](https://github.com/mastra-ai/mastra/commit/bab06b18923873a584bdfc71a6b4ec7fb4727fb7)]:
15
+ - @mastra/core@1.58.0-alpha.5
16
+
17
+ ## 1.2.15-alpha.7
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [[`76e5132`](https://github.com/mastra-ai/mastra/commit/76e51328dbc0749c8304e6b3f21e4401f451b081), [`0282e16`](https://github.com/mastra-ai/mastra/commit/0282e16115538c8e9b248b90f0748eb01cb5dc98)]:
22
+ - @mastra/core@1.58.0-alpha.4
23
+
24
+ ## 1.2.15-alpha.6
25
+
26
+ ### Patch Changes
27
+
28
+ - Updated dependencies [[`cdd5c33`](https://github.com/mastra-ai/mastra/commit/cdd5c33ac6c7118a9f139e6dc0e14e6a8ae31658), [`d7cf7fa`](https://github.com/mastra-ai/mastra/commit/d7cf7fafc1ae1b50bd8462dd0e6c671a8606db93), [`0f9a448`](https://github.com/mastra-ai/mastra/commit/0f9a448502157e59f7b76f24360ad497168f5ef8), [`289f4ce`](https://github.com/mastra-ai/mastra/commit/289f4ce16e3293370440172132c52ee787cbc09f), [`4f16ff8`](https://github.com/mastra-ai/mastra/commit/4f16ff824bf2f9b0ddc93f210477c10c8a4fb1ab), [`1c67d85`](https://github.com/mastra-ai/mastra/commit/1c67d85e9da8285662f4dbbf47e0378c3fee0747), [`ba24be6`](https://github.com/mastra-ai/mastra/commit/ba24be662439c331ab23a600041f93803c89eca8), [`842b5fe`](https://github.com/mastra-ai/mastra/commit/842b5fe22b6a7fa811bd14e48eb9af523ac989f2), [`80bdf3a`](https://github.com/mastra-ai/mastra/commit/80bdf3ae16ade6ff63bde0cb16fa2df8ab7dd4dd), [`9ba1247`](https://github.com/mastra-ai/mastra/commit/9ba12470c77f1c03642d720ce67e517e878f666e), [`fd96298`](https://github.com/mastra-ai/mastra/commit/fd96298a8367622f4ebfcaa97b5b6c1fbbd14564), [`6a84954`](https://github.com/mastra-ai/mastra/commit/6a84954a2667f85b6d59da652dab1bbff007ccb0), [`52d8ef0`](https://github.com/mastra-ai/mastra/commit/52d8ef03801f1deb7ee48532fc4190dd4a33916c), [`cdd5c33`](https://github.com/mastra-ai/mastra/commit/cdd5c33ac6c7118a9f139e6dc0e14e6a8ae31658), [`289f4ce`](https://github.com/mastra-ai/mastra/commit/289f4ce16e3293370440172132c52ee787cbc09f), [`efd5c81`](https://github.com/mastra-ai/mastra/commit/efd5c81cc25fde3c2ddd86fc1178deb4ec176e19), [`0976933`](https://github.com/mastra-ai/mastra/commit/0976933142333ec78451feef265b68bcb45aa5e7), [`242b945`](https://github.com/mastra-ai/mastra/commit/242b94558777bfbdeb42cbfea84afff0b6ad0633), [`fea5cae`](https://github.com/mastra-ai/mastra/commit/fea5caedc7e2cfea51784a15e015952692027abf), [`4b59f78`](https://github.com/mastra-ai/mastra/commit/4b59f786cbc9a7d1ef07a07517dbd4b96865e99d), [`9ba1247`](https://github.com/mastra-ai/mastra/commit/9ba12470c77f1c03642d720ce67e517e878f666e), [`7010c5d`](https://github.com/mastra-ai/mastra/commit/7010c5d15728bf9c5dfe4fb6b1bf80ce23bf143a)]:
29
+ - @mastra/core@1.58.0-alpha.3
30
+ - @mastra/mcp@1.16.0-alpha.1
31
+
32
+ ## 1.2.15-alpha.4
33
+
34
+ ### Patch Changes
35
+
36
+ - Updated dependencies [[`b4c89b4`](https://github.com/mastra-ai/mastra/commit/b4c89b4371b0c86da57403ad1a3b3ef0681f3128), [`e44e8f3`](https://github.com/mastra-ai/mastra/commit/e44e8f370b66c339ddcaba946d33da6d3c3f06cd), [`c967a5e`](https://github.com/mastra-ai/mastra/commit/c967a5eec150c5dc5418c4a4388982d1fb7ad27c), [`f53d5bd`](https://github.com/mastra-ai/mastra/commit/f53d5bd4885b29e4ac29a428a6044088ea8d6aa3), [`bda2235`](https://github.com/mastra-ai/mastra/commit/bda22353ee28f2df0eaea555f7cae1549f979c0b), [`a7eb4a1`](https://github.com/mastra-ai/mastra/commit/a7eb4a11450f6170274ed5141bffe821d4fdd5a6), [`2f9ef3f`](https://github.com/mastra-ai/mastra/commit/2f9ef3f4ca06fc2dcdd5088c26b7f4da6a016791), [`e7eefcb`](https://github.com/mastra-ai/mastra/commit/e7eefcb162cda7c493e8c3bf43050ead0efbcb2c), [`4d7aca2`](https://github.com/mastra-ai/mastra/commit/4d7aca2fe75f225c83d1502d63079568e6ec163f), [`c4ec889`](https://github.com/mastra-ai/mastra/commit/c4ec889561c0264c43f66d04d587bee4ce35e792), [`9be8878`](https://github.com/mastra-ai/mastra/commit/9be8878dcf0388e84fc4873e0eec27bd49b881a4)]:
37
+ - @mastra/core@1.58.0-alpha.2
38
+
39
+ ## 1.2.15-alpha.2
40
+
41
+ ### Patch Changes
42
+
43
+ - Updated dependencies [[`e7109ee`](https://github.com/mastra-ai/mastra/commit/e7109ee6f731bacc79c885906f3c7dca8d8f013a), [`772c0c8`](https://github.com/mastra-ai/mastra/commit/772c0c897cec383258de2e6178147f8014767c7b), [`578bf2e`](https://github.com/mastra-ai/mastra/commit/578bf2e6a88e9d5b8bf502204e15a95dfbb679ae), [`06b2d87`](https://github.com/mastra-ai/mastra/commit/06b2d87e63bcdd0ed59215c6789692b9b12de376), [`ac01d63`](https://github.com/mastra-ai/mastra/commit/ac01d6355974aec73fdb8781449ed12bac582094), [`a810a05`](https://github.com/mastra-ai/mastra/commit/a810a058f62ad407cfc1701e0be36ae91145d7cf), [`f8da216`](https://github.com/mastra-ai/mastra/commit/f8da21633e7eb0e31c9ce0fc30567870d19416d3), [`e7a5da4`](https://github.com/mastra-ai/mastra/commit/e7a5da4ef8e4dd452d2f232961b4e682a85ffe43), [`c71e307`](https://github.com/mastra-ai/mastra/commit/c71e3077e69eae3f25aa628e3778f153a9d6ab36), [`e7a5da4`](https://github.com/mastra-ai/mastra/commit/e7a5da4ef8e4dd452d2f232961b4e682a85ffe43), [`6104347`](https://github.com/mastra-ai/mastra/commit/61043473ba6bfd0a25156824e853e13165562e6c), [`45bfb88`](https://github.com/mastra-ai/mastra/commit/45bfb88fd52f1dd3be20e2a38905777c96499c90), [`e3b9307`](https://github.com/mastra-ai/mastra/commit/e3b9307098daefbfae2a52ae2ef51bc9fc701190), [`d6834c5`](https://github.com/mastra-ai/mastra/commit/d6834c5a7866b16734d23900163c2414ed70d791), [`c52d346`](https://github.com/mastra-ai/mastra/commit/c52d3462ec831a5d95926ecd3d3373f5928ad2e5), [`0023e79`](https://github.com/mastra-ai/mastra/commit/0023e7919431078280abd11c89d1edeae35fcc69), [`c2ad51e`](https://github.com/mastra-ai/mastra/commit/c2ad51e2467f901eecba8c9f4a45e22a50bd7c18), [`3dc97ea`](https://github.com/mastra-ai/mastra/commit/3dc97ea415fad353b48a13095fad1835933cc12a), [`3d01cd3`](https://github.com/mastra-ai/mastra/commit/3d01cd387321b6f9c5cac31d487c84bf51b19c78), [`7bf3086`](https://github.com/mastra-ai/mastra/commit/7bf308663f0115ca74ad20554ade740f06640859), [`a8dd139`](https://github.com/mastra-ai/mastra/commit/a8dd1391a9fe9a6632c25809ef236980afa9a020), [`e5786be`](https://github.com/mastra-ai/mastra/commit/e5786be02bb903073082bd9d6da880ebaacc343f), [`2093fbd`](https://github.com/mastra-ai/mastra/commit/2093fbd53bb744bae19ec89f6d73db9a66fbe8a7), [`e7a5da4`](https://github.com/mastra-ai/mastra/commit/e7a5da4ef8e4dd452d2f232961b4e682a85ffe43), [`7b4393d`](https://github.com/mastra-ai/mastra/commit/7b4393d557411fdcf07b0e30e5acaf7cc85154ae)]:
44
+ - @mastra/core@1.58.0-alpha.1
45
+ - @mastra/mcp@1.16.0-alpha.0
46
+
47
+ ## 1.2.15-alpha.0
48
+
49
+ ### Patch Changes
50
+
51
+ - Updated dependencies [[`45a9147`](https://github.com/mastra-ai/mastra/commit/45a914741f578754d79d8b7de7b4e4f304d8e14a), [`990611b`](https://github.com/mastra-ai/mastra/commit/990611ba76eb876d86c9c594371ae5f02f94b432), [`ed5d606`](https://github.com/mastra-ai/mastra/commit/ed5d606739c5e3fbdfa9f272df7809aa5ab43b1d)]:
52
+ - @mastra/core@1.58.0-alpha.0
53
+
3
54
  ## 1.2.14
4
55
 
5
56
  ### Patch Changes