@mastra/mcp-docs-server 1.2.16-alpha.3 → 1.2.16-alpha.4

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 (134) hide show
  1. package/.docs/docs/agents/a2a.md +1 -1
  2. package/.docs/docs/agents/overview.md +2 -0
  3. package/.docs/docs/agents/processors.md +4 -4
  4. package/.docs/docs/agents/structured-output.md +1 -1
  5. package/.docs/docs/agents/using-tools.md +15 -11
  6. package/.docs/docs/browser/overview.md +22 -3
  7. package/.docs/docs/capabilities/subagents.md +2 -2
  8. package/.docs/docs/datasets/running-experiments.md +2 -2
  9. package/.docs/docs/deployment/overview.md +3 -3
  10. package/.docs/docs/deployment/sandbox.md +1 -1
  11. package/.docs/docs/deployment/workers.md +5 -5
  12. package/.docs/docs/deployment/workflow-runners.md +1 -1
  13. package/.docs/docs/editor/overview.md +3 -1
  14. package/.docs/docs/evals/custom-scorers.md +1 -1
  15. package/.docs/docs/evals/multi-turn.md +1 -1
  16. package/.docs/docs/evals/overview.md +3 -3
  17. package/.docs/docs/getting-started/develop.md +1 -1
  18. package/.docs/docs/harness/agent-controller.md +2 -2
  19. package/.docs/docs/harness/overview.md +1 -1
  20. package/.docs/docs/long-running-agents/background-tasks.md +2 -2
  21. package/.docs/docs/long-running-agents/goals.md +3 -2
  22. package/.docs/docs/long-running-agents/signals.md +2 -2
  23. package/.docs/docs/mastra-platform/deploy.md +1 -1
  24. package/.docs/docs/mastra-platform/github.md +1 -1
  25. package/.docs/docs/mastra-platform/observability.md +1 -1
  26. package/.docs/docs/mastra-platform/overview.md +3 -3
  27. package/.docs/docs/mastra-platform/server.md +2 -2
  28. package/.docs/docs/mastra-platform/trace-intelligence.md +3 -3
  29. package/.docs/docs/memory/memory-processors.md +1 -1
  30. package/.docs/docs/memory/message-history.md +2 -2
  31. package/.docs/docs/memory/observational-memory.md +13 -13
  32. package/.docs/docs/memory/semantic-recall.md +1 -1
  33. package/.docs/docs/memory/working-memory.md +1 -1
  34. package/.docs/docs/observability/logging.md +1 -1
  35. package/.docs/docs/observability/metrics/querying.md +1 -1
  36. package/.docs/docs/observability/tracing/overview.md +3 -3
  37. package/.docs/docs/server/custom-adapters.md +2 -2
  38. package/.docs/docs/server/custom-api-routes.md +1 -1
  39. package/.docs/docs/server/mastra-client.md +1 -1
  40. package/.docs/docs/server/server-adapters.md +1 -1
  41. package/.docs/docs/studio/deployment.md +2 -2
  42. package/.docs/docs/studio/observability.md +1 -1
  43. package/.docs/docs/studio/overview.md +2 -0
  44. package/.docs/docs/workflows/dynamic-workflows.md +1 -1
  45. package/.docs/docs/workflows/scheduled-workflows.md +1 -1
  46. package/.docs/docs/workflows/suspend-and-resume.md +1 -1
  47. package/.docs/docs/workspace/overview.md +2 -1
  48. package/.docs/docs/workspace/search.md +1 -1
  49. package/.docs/docs/workspace/skills.md +1 -1
  50. package/.docs/integrations/browsers/agent-browser.md +2 -3
  51. package/.docs/integrations/browsers/firecrawl.md +0 -1
  52. package/.docs/integrations/browsers/stagehand.md +2 -3
  53. package/.docs/models/gateways/openrouter.md +1 -2
  54. package/.docs/models/index.md +1 -1
  55. package/.docs/models/providers/kilo.md +6 -7
  56. package/.docs/models/providers/nano-gpt.md +2 -1
  57. package/.docs/reference/acp/acp-agent.md +1 -1
  58. package/.docs/reference/agent-controller/session.md +1 -1
  59. package/.docs/reference/agents/channels.md +1 -1
  60. package/.docs/reference/agents/inngest-agent.md +1 -1
  61. package/.docs/reference/ai-sdk/overview.md +1 -1
  62. package/.docs/reference/auth/auth0.md +1 -1
  63. package/.docs/reference/auth/google.md +1 -1
  64. package/.docs/reference/browser/agent-browser.md +2 -2
  65. package/.docs/reference/browser/browser-viewer.md +1 -1
  66. package/.docs/reference/browser/stagehand-browser.md +2 -2
  67. package/.docs/reference/channels/channel-provider.md +1 -1
  68. package/.docs/reference/channels/slack-provider.md +1 -1
  69. package/.docs/reference/cli/mastra.md +5 -5
  70. package/.docs/reference/code-sdk/mount-agent-controller.md +1 -1
  71. package/.docs/reference/coding-agent/build-base-prompt.md +2 -1
  72. package/.docs/reference/configuration.md +3 -3
  73. package/.docs/reference/core/getAgentById.md +1 -1
  74. package/.docs/reference/core/getWorkflow.md +2 -2
  75. package/.docs/reference/core/mastra-class.md +1 -1
  76. package/.docs/reference/deployer/netlify.md +1 -1
  77. package/.docs/reference/deployer.md +1 -1
  78. package/.docs/reference/editor/prompt-blocks.md +1 -1
  79. package/.docs/reference/editor/tools.md +1 -1
  80. package/.docs/reference/evals/completeness.md +1 -1
  81. package/.docs/reference/evals/noise-sensitivity.md +1 -1
  82. package/.docs/reference/evals/summarization.md +1 -1
  83. package/.docs/reference/file-based-agents/config.md +1 -1
  84. package/.docs/reference/file-based-agents/skills.md +5 -5
  85. package/.docs/reference/file-based-agents/workspace.md +1 -1
  86. package/.docs/reference/logging/pino-logger.md +1 -1
  87. package/.docs/reference/memory/observational-memory.md +12 -4
  88. package/.docs/reference/migrations/upgrade-to-v1/agent.md +3 -3
  89. package/.docs/reference/migrations/upgrade-to-v1/client.md +1 -1
  90. package/.docs/reference/migrations/upgrade-to-v1/evals.md +1 -1
  91. package/.docs/reference/migrations/upgrade-to-v1/mastra.md +1 -1
  92. package/.docs/reference/migrations/upgrade-to-v1/mcp.md +1 -1
  93. package/.docs/reference/migrations/upgrade-to-v1/overview.md +1 -1
  94. package/.docs/reference/migrations/upgrade-to-v1/processors.md +1 -1
  95. package/.docs/reference/migrations/upgrade-to-v1/storage.md +5 -5
  96. package/.docs/reference/migrations/upgrade-to-v1/tools.md +1 -1
  97. package/.docs/reference/observability/tracing/bridges/datadog.md +1 -1
  98. package/.docs/reference/observability/tracing/bridges/otel.md +1 -1
  99. package/.docs/reference/observability/tracing/exporters/arize.md +1 -1
  100. package/.docs/reference/observability/tracing/exporters/cloud-exporter.md +2 -2
  101. package/.docs/reference/observability/tracing/exporters/mastra-platform-exporter.md +1 -1
  102. package/.docs/reference/observability/tracing/exporters/otel.md +1 -1
  103. package/.docs/reference/observability/tracing/exporters/sentry.md +1 -1
  104. package/.docs/reference/observability/tracing/processors/sensitive-data-filter.md +27 -3
  105. package/.docs/reference/processors/batch-parts-processor.md +1 -1
  106. package/.docs/reference/processors/language-detector.md +1 -2
  107. package/.docs/reference/processors/processor-interface.md +16 -16
  108. package/.docs/reference/processors/stream-error-retry-processor.md +2 -2
  109. package/.docs/reference/rag/chunking-and-embedding.md +1 -1
  110. package/.docs/reference/rag/metadata-filters.md +1 -1
  111. package/.docs/reference/server/koa-adapter.md +1 -1
  112. package/.docs/reference/signals/webhook-signal-provider.md +1 -1
  113. package/.docs/reference/storage/retention.md +1 -1
  114. package/.docs/reference/tools/bedrock-kb-tool.md +1 -1
  115. package/.docs/reference/tools/mcp-client.md +3 -3
  116. package/.docs/reference/tools/mcp-server.md +5 -5
  117. package/.docs/reference/tools/task-tools.md +1 -1
  118. package/.docs/reference/tools/vector-query-tool.md +1 -1
  119. package/.docs/reference/vectors/chroma.md +1 -1
  120. package/.docs/reference/vectors/convex.md +1 -1
  121. package/.docs/reference/vectors/couchbase.md +1 -1
  122. package/.docs/reference/vectors/mongodb.md +2 -2
  123. package/.docs/reference/vectors/pg.md +1 -1
  124. package/.docs/reference/vectors/qdrant.md +2 -2
  125. package/.docs/reference/voice/overview.md +1 -1
  126. package/.docs/reference/voice/speech-to-speech.md +1 -1
  127. package/.docs/reference/voice/speech-to-text.md +1 -1
  128. package/.docs/reference/voice/voice.on.md +1 -1
  129. package/.docs/reference/voice/voice.updateConfig.md +1 -1
  130. package/.docs/reference/workspace/local-sandbox.md +1 -1
  131. package/.docs/reference/workspace/workspace-class.md +1 -1
  132. package/CHANGELOG.md +7 -0
  133. package/package.json +4 -4
  134. package/.docs/docs/browser/recording.md +0 -120
@@ -418,7 +418,7 @@ With default settings, the context window doesn't grow unbounded. It oscillates
418
418
  3. **Repeat**: History grows from \~6k back toward 30k and shrinks again. Each cycle appends to the observation log, which grows much more slowly than raw history.
419
419
  4. **Observations reach 40k**: The Reflector creates a smaller log from the current observations and any earlier reflections.
420
420
 
421
- In the normal buffered cycle, raw history oscillates between roughly 6k and 30k tokens. The observation log stays around 40k tokens, however long the conversation runs. These are activation thresholds rather than hard caps. If background buffering doesn't keep pace, history can grow past the threshold until `blockAfter` (default `1.2`) forces a synchronous observation at \~36k tokens (\~48k for reflection) as a safety ceiling.
421
+ In the normal buffered cycle, raw history oscillates between roughly 6k and 30k tokens. The observation log stays around 40k tokens, however long the conversation runs. These are activation thresholds rather than hard caps, so history can grow past the threshold whenever background buffering doesn't keep pace. Above `blockAfter` (default `1.2`, \~36k tokens) activation is allowed to overshoot the retention target instead of activating fewer chunks. It doesn't drain the buffer, and with the default settings it removes the same amount of history as below the threshold. Reflection falls back to a synchronous run above its own `blockAfter` (\~48k tokens).
422
422
 
423
423
  With [`shareTokenBudget`](https://mastra.ai/reference/memory/observational-memory) enabled, the two budgets pool together. While the observation log is small, message history can expand into the unused observation space (up to \~70k tokens with the defaults) before observation triggers. It then shrinks as observations accumulate.
424
424
 
@@ -714,23 +714,23 @@ When message tokens reach the `messageTokens` threshold, buffered chunks activat
714
714
 
715
715
  Buffered observations also include continuation hints, a suggested next response and the current task, so the main agent maintains conversational continuity after activation shrinks the context window.
716
716
 
717
- If the agent produces messages faster than the Observer can process them, a `blockAfter` safety threshold forces a synchronous observation as a last resort. Buffered activation still preserves a minimum remaining context (the smaller of \~1k tokens or the configured retention floor).
717
+ If the agent produces messages faster than the Observer can process them, the `blockAfter` safety threshold lets activation overshoot the retention target instead of activating fewer chunks. It never activates more chunks than are needed to reach that target, and with the default settings it changes nothing. A synchronous observation runs when the `messageTokens` threshold is reached and buffered activation didn't happen. Buffered activation usually preserves a minimum remaining context (the smaller of \~1k tokens or the configured retention floor), but a single buffered chunk that covers the whole pending window still activates and can leave less.
718
718
 
719
719
  Reflection works similarly, the Reflector runs in the background when observations reach a fraction of the reflection threshold.
720
720
 
721
721
  ### Settings
722
722
 
723
- | Setting | Default | What it controls |
724
- | ------------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
725
- | `observation.bufferTokens` | `0.2` | How often to buffer. `0.2` means every 20% of `messageTokens`. With the default 30k threshold, that's roughly every 6k tokens. Can also be an absolute token count (e.g. `5000`). |
726
- | `observation.bufferActivation` | `0.8` | How aggressively to clear the message window on activation. `0.8` means remove enough messages to keep only 20% of `messageTokens` remaining. Lower values keep more message history. |
727
- | `observation.blockAfter` | `1.2` | Safety net if buffering can't keep up. Values from 1 up to (but not including) 100 multiply `messageTokens`: at `1.2`, synchronous observation is forced at 36k tokens (1.2 × 30k). Values of 100 or more are absolute token counts (e.g. `50_000`). |
728
- | `activateAfterIdle` | none | Forces buffered observations to activate after a period of inactivity, even before `observation.messageTokens` is reached. Accepts a numeric millisecond value such as `300_000`, duration strings like `"5m"` or `"1hr"`, or `"auto"` for a provider-aware prompt cache TTL. |
729
- | `activateOnProviderChange` | `false` | Forces buffered observations to activate when the next step uses a different `provider/model` than the one that produced the latest assistant step. Use this when switching providers or models would invalidate prompt cache reuse. |
730
- | `reflection.bufferActivation` | `0.5` | When to start background reflection. `0.5` means reflection begins when observations reach 50% of the `observationTokens` threshold. |
731
- | `reflection.activateAfterIdle` | none | Opts buffered reflections into idle activation. Reflections don't inherit top-level `activateAfterIdle`. |
732
- | `reflection.activateOnProviderChange` | `false` | Opts buffered reflections into provider-change activation. Reflections don't inherit top-level `activateOnProviderChange`. |
733
- | `reflection.blockAfter` | `1.2` | Safety threshold for reflection, same logic as observation. |
723
+ | Setting | Default | What it controls |
724
+ | ------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
725
+ | `observation.bufferTokens` | `0.2` | How often to buffer. `0.2` means every 20% of `messageTokens`. With the default 30k threshold, that's roughly every 6k tokens. Can also be an absolute token count (e.g. `5000`). |
726
+ | `observation.bufferActivation` | `0.8` | How aggressively to clear the message window on activation. `0.8` means remove enough messages to keep only 20% of `messageTokens` remaining. Lower values keep more message history. |
727
+ | `observation.blockAfter` | `1.2` | Safety net if buffering can't keep up. Values from 1 up to (but not including) 100 multiply `messageTokens`: at `1.2`, the threshold is 36k tokens (1.2 × 30k). Above it, activation may overshoot the retention target instead of activating fewer chunks. Values of 100 or more are absolute token counts (e.g. `50_000`) and must be greater than `messageTokens`. |
728
+ | `activateAfterIdle` | none | Forces buffered observations to activate after a period of inactivity, even before `observation.messageTokens` is reached. Accepts a numeric millisecond value such as `300_000`, duration strings like `"5m"` or `"1hr"`, or `"auto"` for a provider-aware prompt cache TTL. |
729
+ | `activateOnProviderChange` | `false` | Forces buffered observations to activate when the next step uses a different `provider/model` than the one that produced the latest assistant step. Use this when switching providers or models would invalidate prompt cache reuse. |
730
+ | `reflection.bufferActivation` | `0.5` | When to start background reflection. `0.5` means reflection begins when observations reach 50% of the `observationTokens` threshold. |
731
+ | `reflection.activateAfterIdle` | none | Opts buffered reflections into idle activation. Reflections don't inherit top-level `activateAfterIdle`. |
732
+ | `reflection.activateOnProviderChange` | `false` | Opts buffered reflections into provider-change activation. Reflections don't inherit top-level `activateOnProviderChange`. |
733
+ | `reflection.blockAfter` | `1.2` | Safety threshold for reflection. Same value format as observation (absolute values must be greater than `observationTokens`), but above it reflection runs synchronously when no buffered reflection is ready to activate. |
734
734
 
735
735
  If you're relying on prompt caching, set `activateAfterIdle` to `"auto"` or to a specific cache TTL. That way, once a thread has been idle long enough for the cache to expire, the next request can activate buffered observations first and send a smaller compressed context window.
736
736
 
@@ -270,7 +270,7 @@ Supported embedding models:
270
270
 
271
271
  - **OpenAI**: `text-embedding-3-small`, `text-embedding-3-large`, `text-embedding-ada-002`
272
272
  - **Google**: `gemini-embedding-001`
273
- - **OpenRouter**: Access embedding models from various providers
273
+ - **OpenRouter**: Access embedding models from multiple providers
274
274
 
275
275
  ```ts
276
276
  import { Agent } from '@mastra/core/agent'
@@ -213,7 +213,7 @@ const paragraphMemory = new Memory({
213
213
 
214
214
  ## Structured working memory
215
215
 
216
- Working memory can also be defined using a structured schema instead of a Markdown template. This allows you to specify the exact fields and types that should be tracked, using a [Standard JSON Schema](https://standardschema.dev/json-schema) ([Zod](https://zod.dev/), [Valibot](https://valibot.dev/), [ArkType](https://arktype.io/), etc.). When using a schema, the agent will see and update working memory as a JSON object matching your schema.
216
+ Working memory can also be defined using a structured schema instead of a Markdown template. A [Standard JSON Schema](https://standardschema.dev/json-schema) ([Zod](https://zod.dev/), [Valibot](https://valibot.dev/), [ArkType](https://arktype.io/), etc.). When using a schema, the agent will see and update working memory as a JSON object matching your schema.
217
217
 
218
218
  **Requirement:** You must specify either `template` or `schema`, but not both.
219
219
 
@@ -28,7 +28,7 @@ Visit [PinoLogger](https://mastra.ai/reference/logging/pino-logger) for all avai
28
28
 
29
29
  ## Logging to observability storage
30
30
 
31
- When [observability](https://mastra.ai/docs/observability/overview) is configured, all logger calls are automatically forwarded to your observability storage. This means every `debug`, `info`, `warn`, `error`, and `trackException` call from your application and from Mastra's internal components is stored alongside your traces.
31
+ When [observability](https://mastra.ai/docs/observability/overview) is configured, all logger calls are automatically forwarded to your observability storage. Every `debug`, `info`, `warn`, `error`, and `trackException` call from your application and from Mastra's internal components is stored alongside your traces.
32
32
 
33
33
  No code changes are required. Mastra wraps the configured logger so that it writes to both the original logger (console, file, or custom transport) and the observability system simultaneously.
34
34
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Querying metrics
4
4
 
5
- Mastra exposes the same five OLAP queries (`getMetricAggregate`, `getMetricBreakdown`, `getMetricTimeSeries`, `getMetricPercentiles`, and discovery helpers) through three surfaces: an in-process store accessor, the runtime HTTP API, and the `mastra api metric` CLI. All three accept the same Zod-validated input shapes, so you can move from a one-off CLI investigation to a programmatic dashboard tool without re-learning the API.
5
+ Mastra exposes the same five OLAP queries (`getMetricAggregate`, `getMetricBreakdown`, `getMetricTimeSeries`, `getMetricPercentiles`, and discovery helpers) through three surfaces: an in-process store accessor and the runtime HTTP API, plus the `mastra api metric` CLI. All three accept the same Zod-validated input shapes, so you can move from a one-off CLI investigation to a programmatic dashboard tool without re-learning the API.
6
6
 
7
7
  **For AI agents:** Run `npx mastra api metric aggregate '{"name":"mastra_agent_duration_ms","aggregation":"avg"}'` to query average agent latency directly instead of writing a temporary script. Querying local metrics requires a running Mastra server with an OLAP-capable observability store; start the local server with `npx mastra dev`, or pass the reachable server's base URL with `--url`. Run `npx mastra api metric aggregate --schema` before constructing a different query. Install Mastra's skill with `npx skills add mastra-ai/skills --skill mastra` for complete API CLI discovery, targeting, schema, authentication, and error-handling guidance.
8
8
 
@@ -148,7 +148,7 @@ Per-call `tracingOptions.metadata.environment` always takes precedence, so indiv
148
148
 
149
149
  ### Automatic metadata from `RequestContext`
150
150
 
151
- Instead of manually adding metadata to each span, you can configure Mastra to automatically extract values from RequestContext and attach them as metadata to all spans in a trace. This is useful for consistently tracking user identifiers, environment information, feature flags, or any request-scoped data across your entire trace.
151
+ Instead of manually adding metadata to each span, you can configure Mastra to automatically extract values from RequestContext and attach them as metadata to all spans in a trace. This is useful for consistently tracking user identifiers and environment information, along with feature flags or other request-scoped data across your entire trace.
152
152
 
153
153
  #### Configuration-level extraction
154
154
 
@@ -365,7 +365,7 @@ You get fine-grained control over which child spans include RequestContext metad
365
365
 
366
366
  ## Creating child spans
367
367
 
368
- Child spans allow you to track fine-grained operations within your workflow steps or tools. They provide visibility into sub-operations like database queries, API calls, file operations, or complex calculations. This hierarchical structure helps you identify performance bottlenecks and understand the exact sequence of operations.
368
+ Child spans allow you to track fine-grained operations within your workflow steps or tools. They provide visibility into sub-operations like database queries and API calls, as well as file operations or complex calculations. This hierarchical structure helps you identify performance bottlenecks and understand the exact sequence of operations.
369
369
 
370
370
  Create child spans inside a tool call or workflow step to track specific operations:
371
371
 
@@ -681,7 +681,7 @@ export const mastra = new Mastra({
681
681
 
682
682
  ### Use cases
683
683
 
684
- **Increasing limits for debugging**: If your agents or tools work with large documents, API responses, or data structures, increase these limits to capture more context in your traces:
684
+ **Increasing limits for debugging**: Increase these limits to capture more context for large documents and API responses, as well as other data structures:
685
685
 
686
686
  ```ts
687
687
  serializationOptions: {
@@ -176,7 +176,7 @@ async getParams(
176
176
 
177
177
  ### `sendResponse()`
178
178
 
179
- Send the response back to the client based on the route's response type. Mastra routes can return different response types: JSON for most API responses, streams for agent generation, and special types for MCP transports. Your implementation should handle each type appropriately for your framework.
179
+ Send the response back to the client based on the route's response type. Mastra routes can return different response types: JSON for most API responses and streams for agent generation, plus special types for MCP transports. Your implementation should handle each type appropriately for your framework.
180
180
 
181
181
  ```typescript
182
182
  async sendResponse(
@@ -211,7 +211,7 @@ async sendResponse(
211
211
 
212
212
  ### `stream()`
213
213
 
214
- Handle streaming responses for agent generation. When an agent generates a response, it produces a stream of chunks that should be sent to the client as they become available. This method reads from the stream, optionally applies redaction to hide sensitive data, and writes chunks to the response in the appropriate format (SSE or newline-delimited JSON).
214
+ Handle streaming responses for agent generation. When an agent generates a response, it produces a stream of chunks that should be sent to the client as they become available. This method reads from the stream and optionally applies redaction to hide sensitive data before writing chunks to the response in the appropriate format (SSE or newline-delimited JSON).
215
215
 
216
216
  ```typescript
217
217
  async stream(
@@ -37,7 +37,7 @@ Each route's handler receives the Hono `Context`. Within the handler you can acc
37
37
 
38
38
  ## Schema validation
39
39
 
40
- Use [`createRoute()`](https://mastra.ai/reference/server/create-route) in `apiRoutes` to parse and validate path parameters, query parameters, and request bodies with Zod. The schemas also infer the handler parameters and generate OpenAPI metadata.
40
+ Use [`createRoute()`](https://mastra.ai/reference/server/create-route) in `apiRoutes` to parse and validate path and query parameters, along with request bodies, using Zod. The schemas also infer the handler parameters and generate OpenAPI metadata.
41
41
 
42
42
  ```typescript
43
43
  import { Mastra } from '@mastra/core'
@@ -71,7 +71,7 @@ The Mastra Client SDK exposes all resources served by the Mastra Server.
71
71
 
72
72
  ## Create and run dynamic workflows
73
73
 
74
- Use `upsertDynamicWorkflow()` to create or replace a persisted workflow definition. A successful upsert validates the complete definition, registers it with the running Mastra instance, and makes it available through the standard workflow execution API.
74
+ Use `upsertDynamicWorkflow()` to create or replace a persisted workflow definition. A successful upsert validates the complete definition and registers it with the running Mastra instance. The workflow then becomes available through the standard execution API.
75
75
 
76
76
  The following example shows the full lifecycle of a mapping workflow, from creation and inspection through execution and deletion:
77
77
 
@@ -480,7 +480,7 @@ With this prefix, Mastra routes become `/api/v2/agents`, `/api/v2/workflows`, et
480
480
 
481
481
  ## OpenAPI spec
482
482
 
483
- Mastra can generate an OpenAPI specification for all registered routes. This is useful for documentation, client generation, or integration with API tools. Enable it by setting the `openapiPath` option:
483
+ Mastra can generate an OpenAPI specification for all registered routes. This is useful for documentation or client generation, including integration with API tools. Enable it by setting the `openapiPath` option:
484
484
 
485
485
  ```typescript
486
486
  const server = new MastraServer({
@@ -15,7 +15,7 @@ On this page you'll learn how to deploy Studio on your own infrastructure. As th
15
15
 
16
16
  The easiest way to run Studio is the [`mastra studio`](https://mastra.ai/reference/cli/mastra) command.
17
17
 
18
- Whereas `mastra dev` runs both Studio and an API for development purposes, the purpose of `mastra studio` is to serve a standalone, static UI that connects to an already-running Mastra server. This allows you to deploy Studio on its own, separate from the Mastra server, if desired.
18
+ Whereas `mastra dev` runs both Studio and an API for development purposes, the purpose of `mastra studio` is to serve a standalone, static UI that connects to an already-running Mastra server. You can deploy Studio separately from the Mastra server.
19
19
 
20
20
  Open a terminal and install the `mastra` CLI globally:
21
21
 
@@ -67,7 +67,7 @@ For hosted Studio on Mastra platform, see [Studio on Mastra platform](https://ma
67
67
 
68
68
  ## Running a server
69
69
 
70
- Running `mastra studio` as a long-running process is no different from running any other Node.js service. All the best practices, tools, and options for deployment apply here as well. You can use process managers like PM2, use Docker, or cloud services that support Node.js applications. You'll need to ensure CORS is configured correctly and errors are monitored, as with any web service.
70
+ Running `mastra studio` as a long-running process is no different from running any other Node.js service. The same deployment practices and tools apply here. Use process managers such as PM2 or Docker. Cloud services that support Node.js applications are another option. As with any web service, configure CORS correctly and monitor errors.
71
71
 
72
72
  > **Warning:** Once Studio is connected to your Mastra server, it has full access to your agents, workflows, and tools. Be sure to secure it properly in production (e.g. behind authentication, VPN, etc.) to prevent unauthorized access.
73
73
  >
@@ -106,7 +106,7 @@ To export a trace, select **Download trace JSON** in the trace panel header. Thi
106
106
 
107
107
  ## Logs
108
108
 
109
- Browse internal Mastra logs forwarded to your observability storage. Logs provide full-text search (across message content, entity names, and trace IDs), date presets (last 24 hours to 30 days), and multi-select filters for level, entity type, and entity name. Selecting a log opens a detail panel showing the full message, structured data, and metadata. If the log is correlated with a trace, you can move through directly to the trace and span timeline.
109
+ Browse internal Mastra logs forwarded to your observability storage. Logs provide full-text search across message content and entity names, including trace IDs. Date presets range from the last 24 hours to 30 days. Multi-select filters cover level and entity type, along with entity name. Selecting a log opens a detail panel showing the full message, structured data, and metadata. If the log is correlated with a trace, you can move through directly to the trace and span timeline.
110
110
 
111
111
  Log forwarding is enabled by default when you configure observability. See [logging](https://mastra.ai/docs/observability/logging) for level configuration, query examples, and customization details.
112
112
 
@@ -59,6 +59,8 @@ You can send a follow-up message in the same thread during an agent response str
59
59
 
60
60
  Use [Editor](https://mastra.ai/docs/editor/overview) to let non-technical team members iterate on agents and version every change, plus run experiments without redeploying.
61
61
 
62
+ Use [Agent Builder](https://agent-builder.mastra.ai) to create and manage fully stored agents through a separate browser-based interface.
63
+
62
64
  ### Workflows
63
65
 
64
66
  Visualize your workflow as a graph and run it step by step with a custom input. During execution, the interface updates in real time to show the active step and the path taken.
@@ -6,7 +6,7 @@
6
6
 
7
7
  Dynamic workflows are workflow definitions expressed as data instead of code. A definition is a JSON document that describes the workflow's schemas and step graph. Mastra validates the definition and registers it as a runnable workflow, then persists it in storage so it survives process restarts.
8
8
 
9
- Because a definition contains no JavaScript closures, anything that can produce JSON can author a workflow: an HTTP client, an LLM, a visual editor, or your own tooling. Once registered, a dynamic workflow runs through the same execution API as a code-defined workflow.
9
+ Because a definition contains no JavaScript closures, anything that produces JSON can author a workflow. Sources include an HTTP client or LLM. A visual editor or your own tooling can also produce the definition. Once registered, a dynamic workflow runs through the same execution API as a code-defined workflow.
10
10
 
11
11
  ## When to use dynamic workflows
12
12
 
@@ -161,7 +161,7 @@ Deploy targets such as Fly Machines, Railway, Render, AWS ECS, GKE, or your own
161
161
 
162
162
  ### Serverless platforms
163
163
 
164
- Functions-as-a-service platforms such as Vercel, Netlify, AWS Lambda, and Cloudflare Workers shut the process down after each request. Because the tick loop doesn't get a second tick, schedules declared in code don't fire on these platforms with the built-in scheduler today.
164
+ Functions-as-a-service platforms such as Vercel, Netlify, AWS Lambda, and Cloudflare Workers shut the process down after each request, so the tick loop doesn't get a second tick and schedules declared in code don't fire with the built-in scheduler today.
165
165
 
166
166
  On these platforms, use [`@mastra/inngest`](#inngest-workflows) instead. Inngest is serverless-native and holds the cron state for you.
167
167
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Suspend and resume
4
4
 
5
- Workflows can be paused at any step to collect additional data, wait for API callbacks, throttle costly operations, or request [human-in-the-loop](https://mastra.ai/docs/workflows/human-in-the-loop) input. When a workflow is suspended, its current execution state is saved as a snapshot. You can later resume the workflow from a [specific step ID](https://mastra.ai/docs/workflows/snapshots), restoring the exact state captured in that snapshot. [Snapshots](https://mastra.ai/docs/workflows/snapshots) are stored in your configured storage provider and persist across deployments and application restarts.
5
+ Workflows can be paused at any step to collect additional data or wait for API callbacks. Pauses can also throttle costly operations or request [human-in-the-loop](https://mastra.ai/docs/workflows/human-in-the-loop) input. When a workflow is suspended, its current execution state is saved as a snapshot. You can later resume the workflow from a [specific step ID](https://mastra.ai/docs/workflows/snapshots), restoring the exact state captured in that snapshot. [Snapshots](https://mastra.ai/docs/workflows/snapshots) are stored in your configured storage provider and persist across deployments and application restarts.
6
6
 
7
7
  ## Pausing a workflow with `suspend()`
8
8
 
@@ -412,4 +412,5 @@ External providers may perform additional setup like establishing connections or
412
412
  - [Skills](https://mastra.ai/docs/workspace/skills)
413
413
  - [Search and indexing](https://mastra.ai/docs/workspace/search)
414
414
  - [Workspace class reference](https://mastra.ai/reference/workspace/workspace-class)
415
- - 📹 [Introduction to Mastra Workspaces workshop](https://www.youtube.com/watch?v=QcQLiYlJuNQ)
415
+ - 📹 [Introduction to Mastra Workspaces workshop](https://www.youtube.com/watch?v=QcQLiYlJuNQ)
416
+ - [Mastra Factory](https://factory.mastra.ai) and [Mastra Code](https://code.mastra.ai) are examples of workspace-powered coding agents
@@ -94,7 +94,7 @@ When the provider supports batching (for example, OpenAI's `embedMany`), pass an
94
94
  The following example replaces the single-text embedder with a batched one. The embedder function takes an array and returns an array of embeddings in the same order, plus carries two extra properties:
95
95
 
96
96
  - `batch: true`: marks the function as batch-capable. Without this property, Mastra calls it one text at a time.
97
- - `maxBatchSize`: the largest array the provider accepts in one call. Mastra splits larger requests into chunks of this size and sends them in parallel. Set this to your provider's documented limit (for example, 2048 for OpenAI, 96 for Cohere, 128 for Voyage). Omit it to send every pending text in one request.
97
+ - `maxBatchSize`: the largest array the provider accepts in one call. Mastra splits larger requests into chunks of this size and sends them in parallel. Set this to your provider's documented limit. For example, OpenAI accepts 2048 and Cohere accepts 96. Voyage accepts 128. Omit it to send every pending text in one request.
98
98
 
99
99
  ```typescript
100
100
  import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
@@ -136,7 +136,7 @@ When multiple skill directories contain a skill with the same name, all of them
136
136
  When the agent activates a skill by name, tie-breaking determines which one is returned:
137
137
 
138
138
  1. **Source-type priority**: local skills take precedence over managed (`.mastra/`) skills, which take precedence over external (`node_modules/`) skills.
139
- 2. **Unresolvable conflicts throw**: if two skills share the same name and the same source type (for example, two local skills both named `brand-guidelines`), `get()` throws an error. Rename one or move it to a different source type to resolve the conflict.
139
+ 2. **Unresolvable conflicts throw**: if two skills share the same name and the same source type (for example, two local skills that both use the name `brand-guidelines`), `get()` throws an error. Rename one or move it to a different source type to resolve the conflict.
140
140
  3. **Path escape hatch**: the agent can pass a skill's full path instead of its name to activate a specific skill, bypassing tie-breaking entirely.
141
141
 
142
142
  ```typescript
@@ -88,7 +88,7 @@ AgentBrowser uses accessibility tree refs to identify elements. When an agent ca
88
88
 
89
89
  ## Recording
90
90
 
91
- AgentBrowser can opt into alpha browser recording tools:
91
+ AgentBrowser can opt into Beta browser recording tools:
92
92
 
93
93
  ```typescript
94
94
  const browser = new AgentBrowser({
@@ -99,12 +99,11 @@ const browser = new AgentBrowser({
99
99
  })
100
100
  ```
101
101
 
102
- This adds `browser_record` and `browser_record_caption` to the agent's toolset. See [Browser recording (alpha)](https://mastra.ai/docs/browser/recording) for details. See [AgentBrowser reference](https://mastra.ai/reference/browser/agent-browser) for all configuration options and tool details.
102
+ This adds `browser_record` and `browser_record_caption` to the agent's toolset. See [Browser recording (Beta)](https://mastra.ai/docs/browser/overview) for details. See [AgentBrowser reference](https://mastra.ai/reference/browser/agent-browser) for all configuration options and tool details.
103
103
 
104
104
  ## Related
105
105
 
106
106
  - [Browser overview](https://mastra.ai/docs/browser/overview)
107
107
  - [Stagehand](https://mastra.ai/integrations/browsers/stagehand)
108
108
  - [Firecrawl](https://mastra.ai/integrations/browsers/firecrawl)
109
- - [Browser recording (alpha)](https://mastra.ai/docs/browser/recording)
110
109
  - [AgentBrowser reference](https://mastra.ai/reference/browser/agent-browser)
@@ -125,5 +125,4 @@ const browser = new FirecrawlBrowser({
125
125
 
126
126
  - [Browser overview](https://mastra.ai/docs/browser/overview)
127
127
  - [AgentBrowser](https://mastra.ai/integrations/browsers/agent-browser)
128
- - [Browser recording (alpha)](https://mastra.ai/docs/browser/recording)
129
128
  - [FirecrawlBrowser reference](https://mastra.ai/reference/browser/firecrawl-browser)
@@ -150,7 +150,7 @@ See [StagehandBrowser reference](https://mastra.ai/reference/browser/stagehand-b
150
150
 
151
151
  ## Recording
152
152
 
153
- Stagehand can opt into alpha browser recording tools:
153
+ Stagehand can opt into Beta browser recording tools:
154
154
 
155
155
  ```typescript
156
156
  const browser = new StagehandBrowser({
@@ -162,11 +162,10 @@ const browser = new StagehandBrowser({
162
162
  })
163
163
  ```
164
164
 
165
- This adds `browser_record` and `browser_record_caption` to the agent's toolset. See [Browser recording (alpha)](https://mastra.ai/docs/browser/recording) for details.
165
+ This adds `browser_record` and `browser_record_caption` to the agent's toolset. See [Browser recording (Beta)](https://mastra.ai/docs/browser/overview) for details.
166
166
 
167
167
  ## Related
168
168
 
169
169
  - [Browser overview](https://mastra.ai/docs/browser/overview)
170
170
  - [AgentBrowser](https://mastra.ai/integrations/browsers/agent-browser)
171
- - [Browser recording (alpha)](https://mastra.ai/docs/browser/recording)
172
171
  - [StagehandBrowser reference](https://mastra.ai/reference/browser/stagehand-browser)
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![OpenRouter logo](https://models.dev/logos/openrouter.svg)OpenRouter
4
4
 
5
- OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 349 models through Mastra's model router.
5
+ OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 348 models through Mastra's model router.
6
6
 
7
7
  Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
8
8
 
@@ -143,7 +143,6 @@ ANTHROPIC_API_KEY=ant-...
143
143
  | `inclusionai/ling-2.6-1t` |
144
144
  | `inclusionai/ling-2.6-flash` |
145
145
  | `inclusionai/ling-3.0-flash` |
146
- | `inclusionai/ling-3.0-tiny:free` |
147
146
  | `inclusionai/ring-2.6-1t` |
148
147
  | `kwaipilot/kat-coder-air-v2.5` |
149
148
  | `kwaipilot/kat-coder-pro-v2` |
@@ -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 5658 models from 171 providers through a single API.
5
+ Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 5657 models from 171 providers through a single API.
6
6
 
7
7
  ## Features
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![Kilo Gateway logo](https://models.dev/logos/kilo.svg)Kilo Gateway
4
4
 
5
- Access 357 Kilo Gateway models through Mastra's model router. Authentication is handled automatically using the `KILO_API_KEY` environment variable.
5
+ Access 356 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
 
@@ -58,7 +58,7 @@ for await (const chunk of stream) {
58
58
  | `kilo/amazon/nova-micro-v1` | 128K | | | | | | $0.04 | $0.14 |
59
59
  | `kilo/amazon/nova-premier-v1` | 1.0M | | | | | | $3 | $13 |
60
60
  | `kilo/amazon/nova-pro-v1` | 300K | | | | | | $0.80 | $3 |
61
- | `kilo/anthracite-org/magnum-v4-72b` | 16K | | | | | | $3 | $5 |
61
+ | `kilo/anthracite-org/magnum-v4-72b` | 33K | | | | | | $3 | $5 |
62
62
  | `kilo/anthropic/claude-3-haiku` | 200K | | | | | | $0.25 | $1 |
63
63
  | `kilo/anthropic/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
64
64
  | `kilo/anthropic/claude-haiku-4.5` | 200K | | | | | | $1 | $5 |
@@ -143,7 +143,6 @@ for await (const chunk of stream) {
143
143
  | `kilo/inclusionai/ling-2.6-1t` | 262K | | | | | | $0.30 | $3 |
144
144
  | `kilo/inclusionai/ling-2.6-flash` | 262K | | | | | | $0.10 | $0.30 |
145
145
  | `kilo/inclusionai/ling-3.0-flash` | 262K | | | | | | $0.06 | $0.18 |
146
- | `kilo/inclusionai/ling-3.0-tiny:free` | 262K | | | | | | — | — |
147
146
  | `kilo/inclusionai/ring-2.6-1t` | 262K | | | | | | $0.30 | $3 |
148
147
  | `kilo/kilo-auto/balanced` | 1.0M | | | | | | $0.33 | $2 |
149
148
  | `kilo/kilo-auto/efficient` | 1.0M | | | | | | $0.33 | $2 |
@@ -217,7 +216,7 @@ for await (const chunk of stream) {
217
216
  | `kilo/nvidia/nemotron-3-ultra-550b-a55b` | 512K | | | | | | $0.50 | $2 |
218
217
  | `kilo/nvidia/nemotron-3-ultra-550b-a55b:free` | 1.0M | | | | | | — | — |
219
218
  | `kilo/nvidia/nemotron-3.5-content-safety:free` | 128K | | | | | | — | — |
220
- | `kilo/nvidia/nemotron-3.5-lightning` | 262K | | | | | | $0.05 | $0.20 |
219
+ | `kilo/nvidia/nemotron-3.5-lightning` | 262K | | | | | | $0.08 | $0.20 |
221
220
  | `kilo/nvidia/nemotron-3.5-lightning:free` | 1.0M | | | | | | — | — |
222
221
  | `kilo/openai/gpt-3.5-turbo` | 16K | | | | | | $0.50 | $2 |
223
222
  | `kilo/openai/gpt-3.5-turbo-0613` | 4K | | | | | | $1 | $2 |
@@ -315,7 +314,7 @@ for await (const chunk of stream) {
315
314
  | `kilo/qwen/qwen3-max` | 262K | | | | | | $0.78 | $4 |
316
315
  | `kilo/qwen/qwen3-max-thinking` | 262K | | | | | | $0.78 | $4 |
317
316
  | `kilo/qwen/qwen3-next-80b-a3b-instruct` | 262K | | | | | | $0.10 | $0.78 |
318
- | `kilo/qwen/qwen3-next-80b-a3b-thinking` | 262K | | | | | | $0.15 | $1 |
317
+ | `kilo/qwen/qwen3-next-80b-a3b-thinking` | 131K | | | | | | $0.15 | $1 |
319
318
  | `kilo/qwen/qwen3-vl-235b-a22b-instruct` | 131K | | | | | | $0.26 | $1 |
320
319
  | `kilo/qwen/qwen3-vl-235b-a22b-thinking` | 131K | | | | | | $0.40 | $4 |
321
320
  | `kilo/qwen/qwen3-vl-30b-a3b-instruct` | 262K | | | | | | $0.13 | $0.52 |
@@ -384,14 +383,14 @@ for await (const chunk of stream) {
384
383
  | `kilo/z-ai/glm-4.5` | 131K | | | | | | $0.60 | $2 |
385
384
  | `kilo/z-ai/glm-4.5-air` | 131K | | | | | | $0.13 | $0.85 |
386
385
  | `kilo/z-ai/glm-4.5v` | 66K | | | | | | $0.60 | $2 |
387
- | `kilo/z-ai/glm-4.6` | 205K | | | | | | $0.55 | $2 |
386
+ | `kilo/z-ai/glm-4.6` | 203K | | | | | | $0.55 | $2 |
388
387
  | `kilo/z-ai/glm-4.6v` | 131K | | | | | | $0.30 | $0.90 |
389
388
  | `kilo/z-ai/glm-4.7` | 203K | | | | | | $0.60 | $2 |
390
389
  | `kilo/z-ai/glm-4.7-flash` | 203K | | | | | | $0.07 | $0.40 |
391
390
  | `kilo/z-ai/glm-5` | 205K | | | | | | $1 | $3 |
392
391
  | `kilo/z-ai/glm-5-turbo` | 203K | | | | | | $1 | $4 |
393
392
  | `kilo/z-ai/glm-5.1` | 203K | | | | | | $1 | $4 |
394
- | `kilo/z-ai/glm-5.2` | 1.0M | | | | | | $1 | $4 |
393
+ | `kilo/z-ai/glm-5.2` | 262K | | | | | | $1 | $4 |
395
394
  | `kilo/z-ai/glm-5v-turbo` | 203K | | | | | | $1 | $4 |
396
395
 
397
396
  ## Advanced configuration
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ![NanoGPT logo](https://models.dev/logos/nano-gpt.svg)NanoGPT
4
4
 
5
- Access 598 NanoGPT models through Mastra's model router. Authentication is handled automatically using the `NANO_GPT_API_KEY` environment variable.
5
+ Access 599 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
 
@@ -547,6 +547,7 @@ for await (const chunk of stream) {
547
547
  | `nano-gpt/TEE/kimi-k3` | 1.0M | | | | | | $3 | $15 |
548
548
  | `nano-gpt/TEE/llama3-3-70b` | 128K | | | | | | $2 | $3 |
549
549
  | `nano-gpt/TEE/minimax-m2.5` | 197K | | | | | | $0.20 | $1 |
550
+ | `nano-gpt/TEE/muse-glimmer-30b` | 131K | | | | | | $0.35 | $2 |
550
551
  | `nano-gpt/TEE/qwen2.5-vl-72b-instruct` | 66K | | | | | | $0.70 | $0.70 |
551
552
  | `nano-gpt/TEE/qwen3.5-122b-a10b` | 262K | | | | | | $0.46 | $4 |
552
553
  | `nano-gpt/TEE/qwen3.5-27b` | 262K | | | | | | $0.30 | $2 |
@@ -98,7 +98,7 @@ export const claudeCodeAgent = new AcpAgent({
98
98
 
99
99
  #### `generate(messages, options?)`
100
100
 
101
- Sends the prompt to the ACP agent, buffers text chunks from the ACP response, and returns a Mastra subagent generate result.
101
+ Sends the prompt to the ACP agent and buffers text chunks from the response before returning a Mastra subagent generate result.
102
102
 
103
103
  ```typescript
104
104
  const result = await codeAgent.generate('Inspect the repository and summarize the test setup')
@@ -249,7 +249,7 @@ const usage = session.getTokenUsage()
249
249
 
250
250
  ## Identity
251
251
 
252
- `session.identity` owns the stable identifiers for the conversation: the resource ID, a session `id`, and an `ownerId`. The `id` and `ownerId` are stable for the life of the session and don't change when the resource ID is switched. They mirror the `id` and `ownerId` fields on `SessionRecord` in storage.
252
+ `session.identity` owns the stable identifiers for the conversation: the resource ID and session `id`, plus an `ownerId`. The `id` and `ownerId` are stable for the life of the session and don't change when the resource ID is switched. They mirror the `id` and `ownerId` fields on `SessionRecord` in storage.
253
253
 
254
254
  ### `session.identity.getId()`
255
255
 
@@ -309,7 +309,7 @@ The `ResolveResourceIdContext` passed to the function:
309
309
 
310
310
  ## Thread ID resolution
311
311
 
312
- By default a new channel thread gets a random UUID as its internal Mastra thread id. Pass `resolveThreadId` to pick the id yourself: for example, give the thread the same id as the session it belongs to, matching how your app names threads it creates itself.
312
+ By default a new channel thread gets a random UUID as its internal Mastra thread id. Pass `resolveThreadId` to pick the id yourself: for example, give the thread the same id as its session to match the names your app assigns to threads it creates.
313
313
 
314
314
  The hook runs after `resolveResourceId`, so the resolved owner is available on the context. Like `resolveResourceId` it runs only when a new thread is created: reused threads keep their stored id and never call the hook. The returned id must be unique across the memory store. If it already belongs to an existing thread, Mastra logs a warning and uses a generated id instead so the existing thread is never overwritten. Return `ctx.defaultThreadId` to keep the built-in behavior.
315
315
 
@@ -121,7 +121,7 @@ Returns: [`Promise<InngestAgentStreamResult>`](#inngestagentstreamresult)
121
121
 
122
122
  #### `resume(runId, resumeData, options?)`
123
123
 
124
- Resumes a suspended Inngest run, for example after a tool approval. Loads the workflow snapshot from storage, finds the suspended step, and sends a resume event to Inngest.
124
+ Resumes a suspended Inngest run, for example after a tool approval. Loads the workflow snapshot from storage and finds the suspended step before sending a resume event to Inngest.
125
125
 
126
126
  ```typescript
127
127
  const { output, cleanup } = await durableAgent.resume(
@@ -2,7 +2,7 @@
2
2
 
3
3
  # AI SDK
4
4
 
5
- If you're already using the [Vercel AI SDK](https://sdk.vercel.ai) directly and want to add Mastra capabilities like [processors](https://mastra.ai/docs/agents/processors) or [memory](https://mastra.ai/docs/memory/memory-processors) without switching to the full Mastra agent API, [`withMastra()`](https://mastra.ai/reference/ai-sdk/with-mastra) lets you wrap any AI SDK model with these features. This is useful when you want to keep your existing AI SDK code but add input/output processing, conversation persistence, or content filtering.
5
+ If you're already using the [Vercel AI SDK](https://sdk.vercel.ai) directly and want to add Mastra capabilities like [processors](https://mastra.ai/docs/agents/processors) or [memory](https://mastra.ai/docs/memory/memory-processors) without switching to the full Mastra agent API, [`withMastra()`](https://mastra.ai/reference/ai-sdk/with-mastra) lets you wrap any AI SDK model with these features. This is useful when you want to keep your existing AI SDK code but add input/output processing and conversation persistence, including content filtering.
6
6
 
7
7
  > **Tip:** If you want to use Mastra together with AI SDK UI (e.g. `useChat()`), visit the [AI SDK UI guide](https://mastra.ai/integrations/agentic-ui/ai-sdk-ui).
8
8
 
@@ -26,7 +26,7 @@ export const mastra = new Mastra({
26
26
 
27
27
  **domain** (`string`): Your Auth0 domain (e.g., your-tenant.auth0.com). This is used to verify JWT tokens issued by your Auth0 tenant. (Default: `process.env.AUTH0_DOMAIN`)
28
28
 
29
- **audience** (`string`): Your Auth0 API identifier/audience. This ensures tokens are intended for your specific API. (Default: `process.env.AUTH0_AUDIENCE`)
29
+ **audience** (`string`): Your Auth0 API identifier/audience, which restricts tokens to your API. (Default: `process.env.AUTH0_AUDIENCE`)
30
30
 
31
31
  **name** (`string`): Custom name for the auth provider instance. (Default: `"auth0"`)
32
32
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## MastraAuthGoogle class
6
6
 
7
- The `MastraAuthGoogle` class provides authentication for Mastra using Google Workspace. It implements an OAuth 2.0 / OIDC login flow with encrypted session cookies, verifies Google ID tokens, and integrates with the Mastra server using the `auth` option.
7
+ The `MastraAuthGoogle` class provides authentication for Mastra using Google Workspace. It implements an OAuth 2.0 / OIDC login flow with encrypted session cookies and verifies Google ID tokens. It integrates with the Mastra server through the `auth` option.
8
8
 
9
9
  ### Usage example
10
10
 
@@ -46,7 +46,7 @@ then interact with elements using their refs (e.g., @e5).`,
46
46
 
47
47
  **screencast** (`ScreencastOptions`): Configuration for streaming browser frames to Studio.
48
48
 
49
- **recording** (`BrowserRecordingOptions`): Alpha option for adding browser recording tools. Provide outputDir to add browser\_record and browser\_record\_caption to the toolset. You can also set maxDurationMs, maxWidth, and maxHeight as defaults for every recording.
49
+ **recording** (`BrowserRecordingOptions`): Beta option for adding browser recording tools. Provide outputDir to add browser\_record and browser\_record\_caption to the toolset. You can also set maxDurationMs, maxWidth, and maxHeight as defaults for every recording.
50
50
 
51
51
  **excludeTools** (`BrowserToolName[]`): Tool names to exclude from the browser toolset. Use this to disable specific tools for models that do not support certain capabilities, such as vision.
52
52
 
@@ -54,7 +54,7 @@ then interact with elements using their refs (e.g., @e5).`,
54
54
 
55
55
  `AgentBrowser` provides 16 deterministic tools for browser automation. All tools that interact with elements use refs from the accessibility tree snapshot.
56
56
 
57
- When `recording` is configured, `AgentBrowser` also adds the alpha `browser_record` and `browser_record_caption` tools. See [Browser recording (alpha)](https://mastra.ai/docs/browser/recording).
57
+ When `recording` is configured, `AgentBrowser` also adds the Beta `browser_record` and `browser_record_caption` tools. See [Browser recording (Beta)](https://mastra.ai/docs/browser/overview).
58
58
 
59
59
  ### Core tools
60
60
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # BrowserViewer
4
4
 
5
- The `BrowserViewer` class provides browser automation for CLI-based tools. It launches Chrome via Playwright, exposes a Chrome DevTools Protocol (CDP) URL, and automatically injects it into CLI commands run through workspace tools.
5
+ The `BrowserViewer` class provides browser automation for CLI-based tools. It launches Chrome through Playwright and exposes a Chrome DevTools Protocol (CDP) URL. It automatically injects that URL into CLI commands run through workspace tools.
6
6
 
7
7
  Use `BrowserViewer` when your agent drives a browser through a CLI tool like `browser-use`, `agent-browser`, or `browse`. For SDK-based browser automation, use [`AgentBrowser`](https://mastra.ai/reference/browser/agent-browser) or [`StagehandBrowser`](https://mastra.ai/reference/browser/stagehand-browser).
8
8
 
@@ -63,7 +63,7 @@ Use stagehand_extract to get data from pages.`,
63
63
 
64
64
  **screencast** (`ScreencastOptions`): Configuration for streaming browser frames to Studio.
65
65
 
66
- **recording** (`BrowserRecordingOptions`): Alpha option for adding browser recording tools. Provide outputDir to add browser\_record and browser\_record\_caption to the toolset. You can also set maxDurationMs, maxWidth, and maxHeight as defaults for every recording.
66
+ **recording** (`BrowserRecordingOptions`): Beta option for adding browser recording tools. Provide outputDir to add browser\_record and browser\_record\_caption to the toolset. You can also set maxDurationMs, maxWidth, and maxHeight as defaults for every recording.
67
67
 
68
68
  **excludeTools** (`StagehandToolName[]`): Tool names to exclude from the browser toolset. Use this to disable specific tools for models that do not support certain capabilities, such as vision.
69
69
 
@@ -71,7 +71,7 @@ Use stagehand_extract to get data from pages.`,
71
71
 
72
72
  `StagehandBrowser` provides 7 AI-powered tools for browser automation.
73
73
 
74
- When `recording` is configured, `StagehandBrowser` also adds the alpha `browser_record` and `browser_record_caption` tools. See [Browser recording (alpha)](https://mastra.ai/docs/browser/recording).
74
+ When `recording` is configured, `StagehandBrowser` also adds the Beta `browser_record` and `browser_record_caption` tools. See [Browser recording (Beta)](https://mastra.ai/docs/browser/overview).
75
75
 
76
76
  Core tools:
77
77