@mastra/mcp-docs-server 1.2.19-alpha.4 → 1.2.19

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 (100) hide show
  1. package/.docs/docs/channels.md +28 -1
  2. package/.docs/docs/deployment/cloud-providers.md +1 -0
  3. package/.docs/docs/deployment/mastra-server.md +19 -0
  4. package/.docs/docs/deployment/overview.md +1 -0
  5. package/.docs/docs/deployment/workers.md +2 -2
  6. package/.docs/docs/harness/durable-agents.md +1 -1
  7. package/.docs/docs/mastra-platform/api.md +54 -0
  8. package/.docs/docs/mastra-platform/deploy.md +101 -0
  9. package/.docs/docs/mastra-platform/observability.md +3 -1
  10. package/.docs/docs/mastra-platform/server.md +6 -11
  11. package/.docs/docs/mastra-platform/studio.md +8 -10
  12. package/.docs/docs/memory/semantic-recall.md +19 -0
  13. package/.docs/docs/observability/feedback.md +14 -0
  14. package/.docs/docs/observability/integrations/exporters/mastra-storage.md +19 -14
  15. package/.docs/docs/observability/metrics/overview.md +31 -44
  16. package/.docs/docs/sandbox/overview.md +43 -0
  17. package/.docs/docs/server/middleware.md +30 -0
  18. package/.docs/docs/server/server-adapters.md +109 -34
  19. package/.docs/docs/storage.md +2 -0
  20. package/.docs/docs/subagents.md +6 -6
  21. package/.docs/integrations/channels/github.md +56 -9
  22. package/.docs/integrations/channels/imessage.md +150 -8
  23. package/.docs/integrations/databases/elasticsearch.md +156 -0
  24. package/.docs/integrations/databases/libsql.md +16 -0
  25. package/.docs/integrations/databases/mongodb.md +1 -1
  26. package/.docs/integrations/databases/postgresql.md +26 -0
  27. package/.docs/integrations/databases/valkey.md +99 -0
  28. package/.docs/integrations/deploy/kubernetes-helm.md +332 -0
  29. package/.docs/integrations/deploy/kubernetes.md +1 -1
  30. package/.docs/integrations/deploy/render.md +47 -61
  31. package/.docs/integrations/sandboxes/daytona.md +52 -0
  32. package/.docs/integrations/sandboxes/e2b-desktop.md +128 -0
  33. package/.docs/integrations/sandboxes/e2b.md +6 -0
  34. package/.docs/integrations/sandboxes/vercel.md +2 -2
  35. package/.docs/integrations/tools/parallel.md +240 -0
  36. package/.docs/integrations.md +5 -0
  37. package/.docs/models/environment-variables.md +9 -0
  38. package/.docs/models/gateways/netlify.md +12 -5
  39. package/.docs/models/gateways/openrouter.md +5 -10
  40. package/.docs/models/gateways/vercel.md +5 -5
  41. package/.docs/models/index.md +1 -1
  42. package/.docs/models/providers/agentrouter.md +17 -34
  43. package/.docs/models/providers/agnes.md +75 -0
  44. package/.docs/models/providers/aixy.md +73 -0
  45. package/.docs/models/providers/aki-io.md +14 -13
  46. package/.docs/models/providers/chutes.md +2 -2
  47. package/.docs/models/providers/cline-pass.md +4 -2
  48. package/.docs/models/providers/crof.md +3 -8
  49. package/.docs/models/providers/deepseek.md +4 -6
  50. package/.docs/models/providers/edenai.md +14 -14
  51. package/.docs/models/providers/evroc.md +3 -2
  52. package/.docs/models/providers/gmicloud.md +6 -4
  53. package/.docs/models/providers/huggingface.md +2 -1
  54. package/.docs/models/providers/hyper.md +5 -5
  55. package/.docs/models/providers/inceptron.md +2 -2
  56. package/.docs/models/providers/iteracompute.md +73 -0
  57. package/.docs/models/providers/kilo.md +26 -27
  58. package/.docs/models/providers/llmgateway-providers.md +18 -9
  59. package/.docs/models/providers/llmgateway.md +3 -5
  60. package/.docs/models/providers/llmtech.md +73 -0
  61. package/.docs/models/providers/nano-gpt.md +22 -13
  62. package/.docs/models/providers/neosmith.md +104 -0
  63. package/.docs/models/providers/nvidia.md +3 -1
  64. package/.docs/models/providers/ofox.md +2 -1
  65. package/.docs/models/providers/openai.md +2 -2
  66. package/.docs/models/providers/opencode-go.md +3 -2
  67. package/.docs/models/providers/opper.md +112 -0
  68. package/.docs/models/providers/pendra.md +78 -0
  69. package/.docs/models/providers/requesty.md +1 -1
  70. package/.docs/models/providers/standardcompute.md +73 -0
  71. package/.docs/models/providers/vivgrid.md +2 -1
  72. package/.docs/models/providers/wandb.md +2 -1
  73. package/.docs/models/providers/zai.md +2 -1
  74. package/.docs/models/providers.md +9 -0
  75. package/.docs/reference/agents/channels.md +1 -1
  76. package/.docs/reference/ai-sdk/handle-chat-stream.md +11 -0
  77. package/.docs/reference/ai-sdk/with-sse-heartbeat.md +47 -0
  78. package/.docs/reference/cli/mastra.md +10 -4
  79. package/.docs/reference/client-js/observability.md +1 -1
  80. package/.docs/reference/index.md +5 -0
  81. package/.docs/reference/observability/feedback.md +4 -0
  82. package/.docs/reference/observability/metrics/automatic-metrics.md +1 -1
  83. package/.docs/reference/observability/metrics/queries.md +462 -0
  84. package/.docs/reference/pubsub/valkey-streams.md +84 -0
  85. package/.docs/reference/rag/vector-databases.md +4 -4
  86. package/.docs/reference/server/elysia-adapter.md +184 -0
  87. package/.docs/reference/server/express-adapter.md +6 -8
  88. package/.docs/reference/server/hono-adapter.md +19 -6
  89. package/.docs/reference/storage/turso.md +88 -0
  90. package/.docs/reference/streaming/ChunkType.md +29 -1
  91. package/.docs/reference/streaming/agents/stream.md +1 -3
  92. package/.docs/reference/tools/mcp-client.md +41 -9
  93. package/.docs/reference/vectors/mongodb.md +11 -11
  94. package/.docs/reference/vectors/pg.md +2 -0
  95. package/.docs/reference/workspace/local-sandbox.md +2 -0
  96. package/.docs/reference/workspace/platform-sandbox.md +3 -1
  97. package/.docs/reference/workspace/sandbox.md +143 -3
  98. package/CHANGELOG.md +81 -0
  99. package/package.json +6 -6
  100. package/.docs/docs/observability/metrics/querying.md +0 -314
@@ -0,0 +1,128 @@
1
+ > Discover all available pages from the documentation index: https://mastra.ai/llms.txt
2
+
3
+ # E2B Desktop
4
+
5
+ Runs a full Linux desktop environment in an isolated [E2B](https://e2b.dev) cloud sandbox with screenshot, mouse, and keyboard control. `E2BDesktopSandbox` extends [`E2BSandbox`](https://mastra.ai/integrations/sandboxes/e2b), so everything the base provider supports (command execution, background processes, file upload, pause/resume reconnection) works against the same desktop machine. For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
6
+
7
+ ## Installation
8
+
9
+ **npm**:
10
+
11
+ ```bash
12
+ npm install @mastra/e2b-desktop
13
+ ```
14
+
15
+ **pnpm**:
16
+
17
+ ```bash
18
+ pnpm add @mastra/e2b-desktop
19
+ ```
20
+
21
+ **Yarn**:
22
+
23
+ ```bash
24
+ yarn add @mastra/e2b-desktop
25
+ ```
26
+
27
+ **Bun**:
28
+
29
+ ```bash
30
+ bun add @mastra/e2b-desktop
31
+ ```
32
+
33
+ Set your E2B API key with the `E2B_API_KEY` environment variable or the `apiKey` option.
34
+
35
+ ## Usage
36
+
37
+ Add an `E2BDesktopSandbox` to a workspace and assign it to an agent. Because the sandbox supports the [computer capability](https://mastra.ai/docs/sandbox/overview), the workspace registers the `mastra_workspace_computer_*` tools alongside the shell and process tools:
38
+
39
+ ```typescript
40
+ import { Agent } from '@mastra/core/agent'
41
+ import { Workspace } from '@mastra/core/workspace'
42
+ import { E2BDesktopSandbox } from '@mastra/e2b-desktop'
43
+
44
+ const workspace = new Workspace({
45
+ sandbox: new E2BDesktopSandbox({
46
+ resolution: [1280, 720],
47
+ }),
48
+ })
49
+
50
+ const agent = new Agent({
51
+ id: 'desktop-agent',
52
+ name: 'Desktop Agent',
53
+ instructions: 'You can control a Linux desktop and run shell commands.',
54
+ model: 'anthropic/claude-sonnet-4-6',
55
+ workspace,
56
+ })
57
+
58
+ const response = await agent.generate(
59
+ 'Take a screenshot, then create /tmp/hello.txt with the text "hello" and cat it.',
60
+ )
61
+ ```
62
+
63
+ The agent can mix desktop actions (click, type, screenshot) with shell commands. Both surfaces operate on the same machine.
64
+
65
+ ### Direct desktop control
66
+
67
+ Use the `computer` capability programmatically without an agent:
68
+
69
+ ```typescript
70
+ const sandbox = new E2BDesktopSandbox()
71
+ await sandbox.start()
72
+
73
+ await sandbox.computer.leftClick(100, 200)
74
+ await sandbox.computer.type('hello')
75
+ const { data } = await sandbox.computer.screenshot() // PNG bytes
76
+
77
+ const size = await sandbox.computer.getScreenSize()
78
+ console.log(size) // { width: 1024, height: 768 }
79
+ ```
80
+
81
+ ### Live desktop view
82
+
83
+ `streamUrl()` starts an authenticated noVNC stream inside the sandbox and returns a viewer URL. Open it in a browser to watch the agent work:
84
+
85
+ ```typescript
86
+ const url = await sandbox.computer.streamUrl()
87
+ // https://6080-<sandbox-id>.e2b.app/vnc.html?...&password=<auth-key>
88
+ ```
89
+
90
+ ### Desktop SDK escape hatch
91
+
92
+ Desktop-only APIs such as `launch`, `open`, window helpers, and custom stream control are available on the underlying [`@e2b/desktop`](https://github.com/e2b-dev/desktop) sandbox:
93
+
94
+ ```typescript
95
+ await sandbox.desktop.launch('xfce4-terminal')
96
+ await sandbox.desktop.open('https://mastra.ai')
97
+ ```
98
+
99
+ ## Constructor parameters
100
+
101
+ Accepts all [`E2BSandbox` options](https://mastra.ai/integrations/sandboxes/e2b) plus:
102
+
103
+ **resolution** (`[number, number]`): Desktop display resolution as \[width, height] in pixels. Applies to newly created sandboxes only.
104
+
105
+ **dpi** (`number`): Desktop display DPI. Applies to newly created sandboxes only.
106
+
107
+ When no `template` is provided, the E2B-hosted `desktop` template is used instead of the base provider's mountable template.
108
+
109
+ ## Properties
110
+
111
+ **computer** (`SandboxComputer`): Computer-use capability: screenshot, mouse, keyboard, and stream URL. See SandboxComputer reference.
112
+
113
+ **desktop** (`Sandbox`): The underlying @e2b/desktop SDK sandbox for desktop-only APIs. Throws if the sandbox has not started.
114
+
115
+ **name** (`string`): Provider name ('E2BDesktopSandbox')
116
+
117
+ **provider** (`string`): Provider identifier ('e2b-desktop')
118
+
119
+ ## Cloud storage mounting
120
+
121
+ The default `desktop` template has no FUSE tooling, so [cloud storage mounting](https://mastra.ai/integrations/sandboxes/e2b) requires a custom desktop template with `s3fs` or `gcsfuse` installed. Pass it with the `template` option.
122
+
123
+ ## Related
124
+
125
+ - [Computer-use tools](https://mastra.ai/docs/sandbox/overview)
126
+ - [`E2BSandbox` reference](https://mastra.ai/integrations/sandboxes/e2b)
127
+ - [`WorkspaceSandbox` interface](https://mastra.ai/reference/workspace/sandbox)
128
+ - [Sandbox](https://mastra.ai/docs/sandbox/overview)
@@ -60,12 +60,16 @@ const agent = new Agent({
60
60
 
61
61
  **timeout** (`number`): Execution timeout in milliseconds (Default: `300000 (5 minutes)`)
62
62
 
63
+ **lifecycle** (`SandboxLifecycle`): Controls what happens when the sandbox timeout is reached. Defaults to pausing the sandbox so the next start resumes it. Pass { onTimeout: 'kill' } to destroy idle sandboxes instead, which suits stateless workspaces whose data is persisted outside the sandbox. An explicit stop() always pauses, regardless of this setting. (Default: `{ onTimeout: 'pause' }`)
64
+
63
65
  **template** (`string | TemplateBuilder | function`): Sandbox template specification. Can be a template ID string, a TemplateBuilder, or a function that customizes the default template.
64
66
 
65
67
  **env** (`Record<string, string>`): Environment variables to set in the sandbox
66
68
 
67
69
  **id** (`string`): Unique identifier for this sandbox instance (Default: `Auto-generated`)
68
70
 
71
+ **sandboxId** (`string`): Persisted E2B provider sandbox ID to reattach to deterministically. When set, start() connects to this exact sandbox (resuming it if paused) instead of discovering by logical id metadata. Only a typed "sandbox gone" error (not found, killed, or not running) falls through to the usual logical-id lookup and create ladder; auth, quota, rate-limit, timeout, and network errors propagate without creating a new sandbox. A sandbox tagged with a different logical id is refused. Read the resolved provider ID from the sandboxId property after start.
72
+
69
73
  **domain** (`string`): Domain for self-hosted E2B. Falls back to E2B\_DOMAIN env var.
70
74
 
71
75
  **apiUrl** (`string`): API URL for self-hosted E2B. Falls back to E2B\_API\_URL env var.
@@ -86,6 +90,8 @@ const agent = new Agent({
86
90
 
87
91
  **status** (`ProviderStatus`): 'pending' | 'initializing' | 'ready' | 'starting' | 'running' | 'stopping' | 'stopped' | 'destroying' | 'destroyed' | 'error'
88
92
 
93
+ **sandboxId** (`string | undefined`): The E2B provider sandbox ID resolved after connect or create. Persist it and pass it back via the sandboxId constructor option (or clone({ sandboxId })) to reattach deterministically. Undefined until the sandbox has been started in this process.
94
+
89
95
  **processes** (`E2BProcessManager`): Background process manager. See SandboxProcessManager reference.
90
96
 
91
97
  ## Background processes
@@ -158,7 +158,7 @@ Both callbacks are optional and can be used independently.
158
158
 
159
159
  **instructions** (`string | ((opts) => string)`): Override the default instructions returned by getInstructions(). Pass a string to replace them, or a function to extend the defaults.
160
160
 
161
- **onStart** (`SandboxLifecycleHook`): Lifecycle hook called after the sandbox reaches running status.
161
+ **onStart** (`SandboxStartHook`): Lifecycle hook called after the sandbox reaches running status.
162
162
 
163
163
  **onStop** (`SandboxLifecycleHook`): Lifecycle hook called before the sandbox stops.
164
164
 
@@ -303,7 +303,7 @@ const workspace = new Workspace({
303
303
 
304
304
  **instructions** (`string | ((opts) => string)`): Custom instructions that override the default instructions returned by getInstructions(). Pass a string to fully replace, or a function to extend the defaults.
305
305
 
306
- **onStart** (`SandboxLifecycleHook`): Lifecycle hook called after the sandbox reaches running status.
306
+ **onStart** (`SandboxStartHook`): Lifecycle hook called after the sandbox reaches running status.
307
307
 
308
308
  **onStop** (`SandboxLifecycleHook`): Lifecycle hook called before the sandbox stops.
309
309
 
@@ -0,0 +1,240 @@
1
+ > Discover all available pages from the documentation index: https://mastra.ai/llms.txt
2
+
3
+ # Parallel
4
+
5
+ The `@mastra/parallel` package exposes [Parallel Search](https://docs.parallel.ai/search/search-quickstart) and [Extract](https://docs.parallel.ai/search/extract-quickstart) as Mastra-compatible tools. Each factory returns a tool created with [`createTool()`](https://mastra.ai/reference/tools/create-tool) and a typed Zod input and output schema.
6
+
7
+ ## Installation
8
+
9
+ **npm**:
10
+
11
+ ```bash
12
+ npm install @mastra/parallel parallel-web zod
13
+ ```
14
+
15
+ **pnpm**:
16
+
17
+ ```bash
18
+ pnpm add @mastra/parallel parallel-web zod
19
+ ```
20
+
21
+ **Yarn**:
22
+
23
+ ```bash
24
+ yarn add @mastra/parallel parallel-web zod
25
+ ```
26
+
27
+ **Bun**:
28
+
29
+ ```bash
30
+ bun add @mastra/parallel parallel-web zod
31
+ ```
32
+
33
+ Set `PARALLEL_API_KEY` in your environment. You can also pass an API key directly to any factory.
34
+
35
+ ## Quick start
36
+
37
+ Use `createParallelTools()` to create both tools with shared client configuration:
38
+
39
+ ```typescript
40
+ import { createParallelTools } from '@mastra/parallel'
41
+
42
+ export const parallelTools = createParallelTools()
43
+ // Or pass an explicit API key:
44
+ // export const parallelTools = createParallelTools({ apiKey: 'parallel-api-key' })
45
+ ```
46
+
47
+ The returned object contains `parallelSearch` and `parallelExtract`.
48
+
49
+ Create either tool separately when an agent doesn't need both:
50
+
51
+ ```typescript
52
+ import { createParallelExtractTool, createParallelSearchTool } from '@mastra/parallel'
53
+
54
+ export const searchTool = createParallelSearchTool()
55
+ export const extractTool = createParallelExtractTool({ apiKey: 'parallel-api-key' })
56
+ ```
57
+
58
+ The client isn't initialized until the tool executes. A missing API key therefore fails at execution time with a configuration error.
59
+
60
+ ## Configuration
61
+
62
+ All factories accept `ParallelClientOptions`, an alias of `ClientOptions` from the official `parallel-web` client:
63
+
64
+ **apiKey** (`string`): Parallel API key. Falls back to the PARALLEL\_API\_KEY environment variable.
65
+
66
+ **baseURL** (`string`): Override the Parallel API base URL. The client also reads PARALLEL\_BASE\_URL.
67
+
68
+ **timeout** (`number`): Timeout in milliseconds for one request attempt.
69
+
70
+ **fetch** (`Fetch`): Custom fetch implementation.
71
+
72
+ **fetchOptions** (`RequestInit`): Additional options passed to each fetch call.
73
+
74
+ **maxRetries** (`number`): Maximum retries for temporary failures. (Default: `2`)
75
+
76
+ **defaultHeaders** (`HeadersLike`): Headers included with every request.
77
+
78
+ **defaultQuery** (`Record<string, string | undefined>`): Query parameters included with every request.
79
+
80
+ **logLevel** (`LogLevel`): Client log level. Falls back to PARALLEL\_LOG, then warn.
81
+
82
+ **logger** (`Logger`): Client logger implementation.
83
+
84
+ The package also exports `getParallelClient()` for applications that need the configured official client directly.
85
+
86
+ ## `createParallelSearchTool()`
87
+
88
+ Creates the `parallel-search` tool. Search returns ranked URLs and excerpts focused on the supplied queries and objective.
89
+
90
+ ```typescript
91
+ import { createParallelSearchTool } from '@mastra/parallel'
92
+
93
+ const searchTool = createParallelSearchTool()
94
+ ```
95
+
96
+ ### Search input
97
+
98
+ **searchQueries** (`string[]`): One or more concise keyword queries. Parallel recommends 2-3 queries of 3-6 words each.
99
+
100
+ **objective** (`string`): Self-contained description of the goal driving the search.
101
+
102
+ **mode** (`'turbo' | 'fast' | 'basic' | 'advanced'`): Search mode. (Default: `'advanced'`)
103
+
104
+ **clientModel** (`string`): Model that will consume the results. Parallel uses it to tailor response defaults.
105
+
106
+ **maxResults** (`number`): Maximum number of results to return.
107
+
108
+ **excerptMaxCharsPerResult** (`number`): Maximum excerpt characters for each result.
109
+
110
+ **maxCharsTotal** (`number`): Maximum excerpt characters across all results.
111
+
112
+ **location** (`string`): ISO 3166-1 alpha-2 country code for geo-targeted results.
113
+
114
+ **includeDomains** (`string[]`): Only return results from these domains. Include and exclude lists can contain at most 200 domains combined.
115
+
116
+ **excludeDomains** (`string[]`): Exclude results from these domains. Include and exclude lists can contain at most 200 domains combined.
117
+
118
+ **afterDate** (`string`): Only return content published on or after this YYYY-MM-DD date.
119
+
120
+ **fetchPolicy** (`FetchPolicy`): Controls live fetching and cached-content fallback.
121
+
122
+ **fetchPolicy.maxAgeSeconds** (`number`): Maximum cached-content age before a live fetch. The minimum is 600 seconds.
123
+
124
+ **fetchPolicy.timeoutSeconds** (`number`): Timeout for a live fetch.
125
+
126
+ **fetchPolicy.disableCacheFallback** (`boolean`): Return an error instead of older cached content when a live fetch fails.
127
+
128
+ **sessionId** (`string`): Session identifier shared across related Search and Extract calls.
129
+
130
+ ### Search output
131
+
132
+ Search returns `searchId`, `sessionId`, and `results`. Optional `usage` and `warnings` arrays preserve metadata from Parallel.
133
+
134
+ **searchId** (`string`): Parallel Search request ID.
135
+
136
+ **sessionId** (`string`): Session ID returned by Parallel.
137
+
138
+ **results** (`SearchResult[]`): Results ordered by decreasing relevance.
139
+
140
+ **results.url** (`string`): Result URL.
141
+
142
+ **results.title** (`string`): Page title.
143
+
144
+ **results.publishDate** (`string`): Page publication date.
145
+
146
+ **results.excerpts** (`string[]`): Relevant Markdown excerpts.
147
+
148
+ **usage** (`UsageItem[]`): SKU names and counts for the request.
149
+
150
+ **warnings** (`Warning[]`): Validation or request warnings from Parallel.
151
+
152
+ ## `createParallelExtractTool()`
153
+
154
+ Creates the `parallel-extract` tool. Extract returns relevant excerpts or full content for up to 20 public URLs and reports per-URL failures separately.
155
+
156
+ ```typescript
157
+ import { createParallelExtractTool } from '@mastra/parallel'
158
+
159
+ const extractTool = createParallelExtractTool()
160
+ ```
161
+
162
+ ### Extract input
163
+
164
+ **urls** (`string[]`): One to 20 URLs to extract.
165
+
166
+ **objective** (`string`): Information to focus on while extracting.
167
+
168
+ **searchQueries** (`string[]`): Keyword queries used with the objective to focus excerpts.
169
+
170
+ **clientModel** (`string`): Model that will consume the results. Parallel uses it to tailor response defaults.
171
+
172
+ **excerptMaxCharsPerResult** (`number`): Maximum excerpt characters for each URL.
173
+
174
+ **fullContent** (`boolean | number`): Return full page content. Pass a number to cap characters for each URL.
175
+
176
+ **maxCharsTotal** (`number`): Maximum excerpt characters across all results.
177
+
178
+ **fetchPolicy** (`FetchPolicy`): Controls live fetching and cached-content fallback.
179
+
180
+ **fetchPolicy.maxAgeSeconds** (`number`): Maximum cached-content age before a live fetch. The minimum is 600 seconds.
181
+
182
+ **fetchPolicy.timeoutSeconds** (`number`): Timeout for a live fetch.
183
+
184
+ **fetchPolicy.disableCacheFallback** (`boolean`): Return an error instead of older cached content when a live fetch fails.
185
+
186
+ **sessionId** (`string`): Session identifier shared across related Search and Extract calls.
187
+
188
+ ### Extract output
189
+
190
+ **extractId** (`string`): Parallel Extract request ID.
191
+
192
+ **sessionId** (`string`): Session ID returned by Parallel.
193
+
194
+ **results** (`ExtractResult[]`): Successful URL results.
195
+
196
+ **results.url** (`string`): Extracted URL.
197
+
198
+ **results.title** (`string`): Page title.
199
+
200
+ **results.publishDate** (`string`): Page publication date.
201
+
202
+ **results.excerpts** (`string[]`): Relevant Markdown excerpts.
203
+
204
+ **results.fullContent** (`string`): Full Markdown content when requested.
205
+
206
+ **errors** (`ExtractError[]`): Requested URLs that weren't returned as results.
207
+
208
+ **errors.url** (`string`): URL that failed.
209
+
210
+ **errors.errorType** (`string`): Parallel error type.
211
+
212
+ **errors.httpStatusCode** (`number`): HTTP status code when available.
213
+
214
+ **errors.content** (`string`): Response content when available.
215
+
216
+ **usage** (`UsageItem[]`): SKU names and counts for the request.
217
+
218
+ **warnings** (`Warning[]`): Validation or request warnings from Parallel.
219
+
220
+ ## Use the tools with an agent
221
+
222
+ ```typescript
223
+ import { Agent } from '@mastra/core/agent'
224
+ import { createParallelTools } from '@mastra/parallel'
225
+
226
+ export const researchAgent = new Agent({
227
+ id: 'research-agent',
228
+ name: 'Research Agent',
229
+ model: 'anthropic/claude-sonnet-4-6',
230
+ instructions:
231
+ 'Search the web for current sources, then extract relevant content from the best pages.',
232
+ tools: createParallelTools(),
233
+ })
234
+ ```
235
+
236
+ ## Related
237
+
238
+ - [Parallel Search documentation](https://docs.parallel.ai/search/search-quickstart)
239
+ - [Parallel Extract documentation](https://docs.parallel.ai/search/extract-quickstart)
240
+ - [`createTool()` reference](https://mastra.ai/reference/tools/create-tool)
@@ -40,6 +40,7 @@
40
40
  - [Daytona](https://mastra.ai/integrations/sandboxes/daytona)
41
41
  - [Docker](https://mastra.ai/integrations/sandboxes/docker)
42
42
  - [E2B](https://mastra.ai/integrations/sandboxes/e2b)
43
+ - [E2B Desktop](https://mastra.ai/integrations/sandboxes/e2b-desktop)
43
44
  - [Mastra](https://mastra.ai/reference/workspace/platform-sandbox)
44
45
  - [Modal](https://mastra.ai/integrations/sandboxes/modal)
45
46
  - [Railway](https://mastra.ai/integrations/sandboxes/railway)
@@ -69,6 +70,7 @@
69
70
  - [Convex](https://mastra.ai/integrations/databases/convex)
70
71
  - [DuckDB](https://mastra.ai/integrations/databases/duckdb)
71
72
  - [DynamoDB](https://mastra.ai/integrations/databases/dynamodb)
73
+ - [Elasticsearch](https://mastra.ai/integrations/databases/elasticsearch)
72
74
  - [Google Cloud Spanner](https://mastra.ai/integrations/databases/spanner)
73
75
  - [LanceDB](https://mastra.ai/integrations/databases/lancedb)
74
76
  - [libSQL](https://mastra.ai/integrations/databases/libsql)
@@ -79,6 +81,7 @@
79
81
  - [OracleDB](https://mastra.ai/integrations/databases/oracledb)
80
82
  - [PostgreSQL](https://mastra.ai/integrations/databases/postgresql)
81
83
  - [Redis](https://mastra.ai/integrations/databases/redis)
84
+ - [Valkey](https://mastra.ai/integrations/databases/valkey)
82
85
  - [Upstash](https://mastra.ai/integrations/databases/upstash)
83
86
 
84
87
  ## Deploy
@@ -91,6 +94,7 @@
91
94
  - [Digital Ocean](https://mastra.ai/integrations/deploy/digital-ocean)
92
95
  - [Inngest](https://mastra.ai/integrations/deploy/inngest)
93
96
  - [Kubernetes](https://mastra.ai/integrations/deploy/kubernetes)
97
+ - [Kubernetes (Helm)](https://mastra.ai/integrations/deploy/kubernetes-helm)
94
98
  - [Mastra](https://mastra.ai/docs/mastra-platform/deploy)
95
99
  - [Netlify](https://mastra.ai/integrations/deploy/netlify)
96
100
  - [Render](https://mastra.ai/integrations/deploy/render)
@@ -101,6 +105,7 @@
101
105
 
102
106
  - [Bright Data](https://mastra.ai/integrations/tools/brightdata)
103
107
  - [Firecrawl](https://mastra.ai/integrations/tools/firecrawl)
108
+ - [Parallel](https://mastra.ai/integrations/tools/parallel)
104
109
  - [Perplexity](https://mastra.ai/integrations/tools/perplexity)
105
110
  - [Tavily](https://mastra.ai/integrations/tools/tavily)
106
111
 
@@ -9,8 +9,11 @@ List of required environment variables for each model provider and gateway suppo
9
9
  | [302.AI](https://mastra.ai/models/providers/302ai) | `302ai/*` | `302AI_API_KEY` |
10
10
  | [Abacus](https://mastra.ai/models/providers/abacus) | `abacus/*` | `ABACUS_API_KEY` |
11
11
  | [abliteration.ai](https://mastra.ai/models/providers/abliteration-ai) | `abliteration-ai/*` | `ABLIT_KEY` |
12
+ | [AgentRouter](https://mastra.ai/models/providers/agentrouter) | `agentrouter/*` | `AGENTROUTER_API_KEY` |
13
+ | [Agnes AI](https://mastra.ai/models/providers/agnes) | `agnes/*` | `AGNES_API_KEY` |
12
14
  | [AI-ROUTER](https://mastra.ai/models/providers/ai-router) | `ai-router/*` | `AI_ROUTER_API_KEY` |
13
15
  | [ai&](https://mastra.ai/models/providers/aiand) | `aiand/*` | `AIAND_API_KEY` |
16
+ | [Aixy](https://mastra.ai/models/providers/aixy) | `aixy/*` | `AIXY_API_KEY` |
14
17
  | [AKI.IO](https://mastra.ai/models/providers/aki-io) | `aki-io/*` | `AKI_IO_API_KEY` |
15
18
  | [Alibaba](https://mastra.ai/models/providers/alibaba) | `alibaba/*` | `DASHSCOPE_API_KEY` |
16
19
  | [Alibaba (China)](https://mastra.ai/models/providers/alibaba-cn) | `alibaba-cn/*` | `DASHSCOPE_API_KEY` |
@@ -76,6 +79,7 @@ List of required environment variables for each model provider and gateway suppo
76
79
  | [InferX](https://mastra.ai/models/providers/inferx) | `inferx/*` | `INFERX_API_KEY` |
77
80
  | [Infomaniak](https://mastra.ai/models/providers/infomaniak) | `infomaniak/*` | `INFOMANIAK_PRODUCT_ID`, `INFOMANIAK_API_KEY` |
78
81
  | [IO.NET](https://mastra.ai/models/providers/io-net) | `io-net/*` | `IOINTELLIGENCE_API_KEY` |
82
+ | [IteraCompute](https://mastra.ai/models/providers/iteracompute) | `iteracompute/*` | `ITERACOMPUTE_API_KEY` |
79
83
  | [Jalapeno Cloud](https://mastra.ai/models/providers/jalapeno) | `jalapeno/*` | `JALAPENO_API_KEY` |
80
84
  | [Jiekou.AI](https://mastra.ai/models/providers/jiekou) | `jiekou/*` | `JIEKOU_API_KEY` |
81
85
  | [Kenari](https://mastra.ai/models/providers/kenari) | `kenari/*` | `KENARI_API_KEY` |
@@ -86,6 +90,7 @@ List of required environment variables for each model provider and gateway suppo
86
90
  | [Lilac](https://mastra.ai/models/providers/lilac) | `lilac/*` | `LILAC_API_KEY` |
87
91
  | [Llama](https://mastra.ai/models/providers/llama) | `llama/*` | `LLAMA_API_KEY` |
88
92
  | [LLM Gateway](https://mastra.ai/models/providers/llmgateway-providers) | `llmgateway-providers/*` | `LLMGATEWAY_API_KEY` |
93
+ | [LLM Tech](https://mastra.ai/models/providers/llmtech) | `llmtech/*` | `LLMTECH_API_KEY` |
89
94
  | [LLMTR](https://mastra.ai/models/providers/llmtr) | `llmtr/*` | `LLMTR_API_KEY` |
90
95
  | [LMStudio](https://mastra.ai/models/providers/lmstudio) | `lmstudio/*` | `LMSTUDIO_API_KEY` |
91
96
  | [LongCat](https://mastra.ai/models/providers/longcat) | `longcat/*` | `LONGCAT_API_KEY` |
@@ -110,6 +115,7 @@ List of required environment variables for each model provider and gateway suppo
110
115
  | [NanoGPT](https://mastra.ai/models/providers/nano-gpt) | `nano-gpt/*` | `NANO_GPT_API_KEY` |
111
116
  | [NEAR AI Cloud](https://mastra.ai/models/providers/nearai) | `nearai/*` | `NEARAI_API_KEY` |
112
117
  | [Nebius Token Factory](https://mastra.ai/models/providers/nebius) | `nebius/*` | `NEBIUS_API_KEY` |
118
+ | [NeoSmith](https://mastra.ai/models/providers/neosmith) | `neosmith/*` | `NEOSMITH_API_KEY` |
113
119
  | [Neuralwatt](https://mastra.ai/models/providers/neuralwatt) | `neuralwatt/*` | `NEURALWATT_API_KEY` |
114
120
  | [Nova](https://mastra.ai/models/providers/nova) | `nova/*` | `NOVA_API_KEY` |
115
121
  | [NovitaAI](https://mastra.ai/models/providers/novita-ai) | `novita-ai/*` | `NOVITA_API_KEY` |
@@ -119,8 +125,10 @@ List of required environment variables for each model provider and gateway suppo
119
125
  | [OpenAI](https://mastra.ai/models/providers/openai) | `openai/*` | `OPENAI_API_KEY` |
120
126
  | [OpenCode Go](https://mastra.ai/models/providers/opencode-go) | `opencode-go/*` | `OPENCODE_API_KEY` |
121
127
  | [OpenCode Zen](https://mastra.ai/models/providers/opencode) | `opencode/*` | `OPENCODE_API_KEY` |
128
+ | [Opper](https://mastra.ai/models/providers/opper) | `opper/*` | `OPPER_API_KEY` |
122
129
  | [OrcaRouter](https://mastra.ai/models/providers/orcarouter) | `orcarouter/*` | `ORCAROUTER_API_KEY` |
123
130
  | [OVHcloud AI Endpoints](https://mastra.ai/models/providers/ovhcloud) | `ovhcloud/*` | `OVHCLOUD_API_KEY` |
131
+ | [Pendra](https://mastra.ai/models/providers/pendra) | `pendra/*` | `PENDRA_API_KEY` |
124
132
  | [Perplexity](https://mastra.ai/models/providers/perplexity) | `perplexity/*` | `PERPLEXITY_API_KEY` |
125
133
  | [Perplexity Agent](https://mastra.ai/models/providers/perplexity-agent) | `perplexity-agent/*` | `PERPLEXITY_API_KEY` |
126
134
  | [Pioneer](https://mastra.ai/models/providers/pioneer) | `pioneer/*` | `PIONEER_API_KEY` |
@@ -142,6 +150,7 @@ List of required environment variables for each model provider and gateway suppo
142
150
  | [SiliconFlow (China)](https://mastra.ai/models/providers/siliconflow-cn) | `siliconflow-cn/*` | `SILICONFLOW_CN_API_KEY` |
143
151
  | [Snowflake Cortex](https://mastra.ai/models/providers/snowflake-cortex) | `snowflake-cortex/*` | `SNOWFLAKE_ACCOUNT`, `SNOWFLAKE_CORTEX_PAT` |
144
152
  | [STACKIT](https://mastra.ai/models/providers/stackit) | `stackit/*` | `STACKIT_API_KEY` |
153
+ | [Standard Compute](https://mastra.ai/models/providers/standardcompute) | `standardcompute/*` | `STANDARDCOMPUTE_API_KEY` |
145
154
  | [StepFun (China)](https://mastra.ai/models/providers/stepfun) | `stepfun/*` | `STEPFUN_API_KEY` |
146
155
  | [StepFun (Global)](https://mastra.ai/models/providers/stepfun-ai) | `stepfun-ai/*` | `STEPFUN_API_KEY` |
147
156
  | [StepFun Step Plan (China)](https://mastra.ai/models/providers/stepfun-step-plan) | `stepfun-step-plan/*` | `STEPFUN_API_KEY` |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Netlify
4
4
 
5
- Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access 227 models through Mastra's model router.
5
+ Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access 234 models through Mastra's model router.
6
6
 
7
7
  Learn more in the [Netlify documentation](https://docs.netlify.com/build/ai-gateway/overview/).
8
8
 
@@ -137,16 +137,12 @@ ANTHROPIC_API_KEY=ant-...
137
137
  | `openrouter/google/gemma-3-12b-it` |
138
138
  | `openrouter/google/gemma-3-27b-it` |
139
139
  | `openrouter/google/gemma-3-4b-it` |
140
- | `openrouter/google/gemma-3n-e4b-it` |
141
140
  | `openrouter/google/gemma-4-26b-a4b-it` |
142
141
  | `openrouter/google/gemma-4-31b-it` |
143
142
  | `openrouter/gryphe/mythomax-l2-13b` |
144
143
  | `openrouter/ibm-granite/granite-4.1-8b` |
145
144
  | `openrouter/inception/mercury-2` |
146
- | `openrouter/inclusionai/ling-2.6-1t` |
147
- | `openrouter/inclusionai/ling-2.6-flash` |
148
145
  | `openrouter/inclusionai/ling-3.0-flash` |
149
- | `openrouter/inclusionai/ring-2.6-1t` |
150
146
  | `openrouter/mancer/weaver` |
151
147
  | `openrouter/meta-llama/llama-3.1-70b-instruct` |
152
148
  | `openrouter/meta-llama/llama-3.1-8b-instruct` |
@@ -164,7 +160,16 @@ ANTHROPIC_API_KEY=ant-...
164
160
  | `openrouter/minimax/minimax-m2.5` |
165
161
  | `openrouter/minimax/minimax-m2.7` |
166
162
  | `openrouter/minimax/minimax-m3` |
163
+ | `openrouter/mistralai/codestral-2508` |
164
+ | `openrouter/mistralai/devstral-2512` |
165
+ | `openrouter/mistralai/ministral-14b-2512` |
166
+ | `openrouter/mistralai/ministral-3b-2512` |
167
167
  | `openrouter/mistralai/ministral-8b` |
168
+ | `openrouter/mistralai/ministral-8b-2512` |
169
+ | `openrouter/mistralai/mistral-large-2512` |
170
+ | `openrouter/mistralai/mistral-medium-3` |
171
+ | `openrouter/mistralai/mistral-medium-3-5` |
172
+ | `openrouter/mistralai/mistral-medium-3.1` |
168
173
  | `openrouter/mistralai/mistral-nemo` |
169
174
  | `openrouter/mistralai/mistral-small-24b-instruct-2501` |
170
175
  | `openrouter/mistralai/mistral-small-2603` |
@@ -238,6 +243,7 @@ ANTHROPIC_API_KEY=ant-...
238
243
  | `openrouter/stepfun/step-3.7-flash` |
239
244
  | `openrouter/tencent/hy-mt2-1.8b` |
240
245
  | `openrouter/tencent/hy-mt2-30b-a3b` |
246
+ | `openrouter/tencent/hy-mt2-7b` |
241
247
  | `openrouter/tencent/hy3` |
242
248
  | `openrouter/thedrummer/cydonia-24b-v4.1` |
243
249
  | `openrouter/thedrummer/rocinante-12b` |
@@ -246,6 +252,7 @@ ANTHROPIC_API_KEY=ant-...
246
252
  | `openrouter/thinkingmachines/inkling` |
247
253
  | `openrouter/thinkingmachines/inkling-small` |
248
254
  | `openrouter/undi95/remm-slerp-l2-13b` |
255
+ | `openrouter/upstage/solar-pro4` |
249
256
  | `openrouter/x-ai/grok-4.20` |
250
257
  | `openrouter/x-ai/grok-4.20-multi-agent` |
251
258
  | `openrouter/x-ai/grok-4.3` |
@@ -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 360 models through Mastra's model router.
5
+ OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 355 models through Mastra's model router.
6
6
 
7
7
  Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
8
8
 
@@ -131,7 +131,6 @@ ANTHROPIC_API_KEY=ant-...
131
131
  | `google/gemma-3-12b-it` |
132
132
  | `google/gemma-3-27b-it` |
133
133
  | `google/gemma-3-4b-it` |
134
- | `google/gemma-3n-e4b-it` |
135
134
  | `google/gemma-4-26b-a4b-it` |
136
135
  | `google/gemma-4-26b-a4b-it:free` |
137
136
  | `google/gemma-4-31b-it` |
@@ -142,10 +141,7 @@ ANTHROPIC_API_KEY=ant-...
142
141
  | `ibm-granite/granite-4.0-h-micro` |
143
142
  | `ibm-granite/granite-4.1-8b` |
144
143
  | `inception/mercury-2` |
145
- | `inclusionai/ling-2.6-1t` |
146
- | `inclusionai/ling-2.6-flash` |
147
144
  | `inclusionai/ling-3.0-flash` |
148
- | `inclusionai/ring-2.6-1t` |
149
145
  | `kwaipilot/kat-coder-air-v2.5` |
150
146
  | `kwaipilot/kat-coder-pro-v2` |
151
147
  | `kwaipilot/kat-coder-pro-v2.5` |
@@ -173,8 +169,11 @@ ANTHROPIC_API_KEY=ant-...
173
169
  | `minimax/minimax-m2.1` |
174
170
  | `minimax/minimax-m2.5` |
175
171
  | `minimax/minimax-m2.7` |
172
+ | `minimax/minimax-m2.7:free` |
176
173
  | `minimax/minimax-m3` |
174
+ | `minimax/minimax-m3:free` |
177
175
  | `mistralai/codestral-2508` |
176
+ | `mistralai/devstral-2512` |
178
177
  | `mistralai/ministral-14b-2512` |
179
178
  | `mistralai/ministral-3b-2512` |
180
179
  | `mistralai/ministral-8b` |
@@ -209,7 +208,6 @@ ANTHROPIC_API_KEY=ant-...
209
208
  | `nousresearch/hermes-4-405b` |
210
209
  | `nousresearch/hermes-4-70b` |
211
210
  | `nvidia/nemotron-3-nano-30b-a3b` |
212
- | `nvidia/nemotron-3-nano-30b-a3b:free` |
213
211
  | `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free` |
214
212
  | `nvidia/nemotron-3-super-120b-a12b` |
215
213
  | `nvidia/nemotron-3-super-120b-a12b:free` |
@@ -218,8 +216,6 @@ ANTHROPIC_API_KEY=ant-...
218
216
  | `nvidia/nemotron-3.5-content-safety:free` |
219
217
  | `nvidia/nemotron-3.5-lightning` |
220
218
  | `nvidia/nemotron-3.5-lightning:free` |
221
- | `nvidia/nemotron-nano-12b-v2-vl:free` |
222
- | `nvidia/nemotron-nano-9b-v2:free` |
223
219
  | `openai/gpt-3.5-turbo` |
224
220
  | `openai/gpt-3.5-turbo-0613` |
225
221
  | `openai/gpt-3.5-turbo-16k` |
@@ -269,7 +265,6 @@ ANTHROPIC_API_KEY=ant-...
269
265
  | `openai/gpt-chat-latest` |
270
266
  | `openai/gpt-oss-120b` |
271
267
  | `openai/gpt-oss-20b` |
272
- | `openai/gpt-oss-20b:free` |
273
268
  | `openai/gpt-oss-safeguard-20b` |
274
269
  | `openai/o1` |
275
270
  | `openai/o1-pro` |
@@ -299,7 +294,6 @@ ANTHROPIC_API_KEY=ant-...
299
294
  | `qwen/qwen-2.5-coder-32b-instruct` |
300
295
  | `qwen/qwen-plus` |
301
296
  | `qwen/qwen-plus-2025-07-28` |
302
- | `qwen/qwen-plus-2025-07-28:thinking` |
303
297
  | `qwen/qwen2.5-vl-72b-instruct` |
304
298
  | `qwen/qwen3-14b` |
305
299
  | `qwen/qwen3-235b-a22b` |
@@ -360,6 +354,7 @@ ANTHROPIC_API_KEY=ant-...
360
354
  | `tencent/hunyuan-a13b-instruct` |
361
355
  | `tencent/hy-mt2-1.8b` |
362
356
  | `tencent/hy-mt2-30b-a3b` |
357
+ | `tencent/hy-mt2-7b` |
363
358
  | `tencent/hy3` |
364
359
  | `tencent/hy3-preview` |
365
360
  | `thedrummer/cydonia-24b-v4.1` |