@mastra/mcp-docs-server 1.3.7 → 1.3.8-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/docs/agents/processors.md +2 -0
- package/.docs/docs/agents/tools.md +3 -2
- package/.docs/docs/connections/mcp.md +2 -0
- package/.docs/docs/guides/mcp-authentication-authorization.md +10 -1
- package/.docs/docs/harness/agent-controller.md +2 -1
- package/.docs/docs/harness/background-tasks.md +13 -10
- package/.docs/docs/harness/signals.md +22 -0
- package/.docs/docs/mastra-platform/connect/providers.md +28 -113
- package/.docs/docs/mastra-platform/observability.md +23 -2
- package/.docs/docs/memory/overview.md +31 -0
- package/.docs/docs/server/middleware.md +4 -0
- package/.docs/docs/server/request-context.md +29 -5
- package/.docs/integrations/databases/clickhouse.md +1 -1
- package/.docs/models/environment-variables.md +2 -0
- package/.docs/models/gateways/neon.md +11 -1
- package/.docs/models/gateways/netlify.md +3 -1
- package/.docs/models/gateways/openrouter.md +1 -1
- package/.docs/models/index.md +3 -1
- package/.docs/models/providers/agnes.md +3 -3
- package/.docs/models/providers/aimlapi.md +3 -7
- package/.docs/models/providers/aixy.md +17 -13
- package/.docs/models/providers/boundless.md +96 -0
- package/.docs/models/providers/cortecs.md +2 -1
- package/.docs/models/providers/crossmodel.md +2 -1
- package/.docs/models/providers/digitalocean.md +1 -1
- package/.docs/models/providers/edenai.md +15 -11
- package/.docs/models/providers/kilo.md +18 -17
- package/.docs/models/providers/llmgateway-providers.md +5 -13
- package/.docs/models/providers/llmgateway.md +5 -6
- package/.docs/models/providers/lowrouter.md +21 -2
- package/.docs/models/providers/nano-gpt.md +11 -16
- package/.docs/models/providers/nvidia.md +1 -1
- package/.docs/models/providers/ofox.md +2 -1
- package/.docs/models/providers/opencode-go.md +34 -35
- package/.docs/models/providers/opencode.md +2 -4
- package/.docs/models/providers/ovhcloud.md +1 -2
- package/.docs/models/providers/poe.md +6 -1
- package/.docs/models/providers/prime.md +2 -1
- package/.docs/models/providers/sambanova.md +82 -0
- package/.docs/models/providers/scaleway.md +2 -1
- package/.docs/models/providers/sensenova.md +2 -1
- package/.docs/models/providers/wandb.md +2 -2
- package/.docs/models/providers.md +2 -0
- package/.docs/reference/agent-controller/session.md +13 -0
- package/.docs/reference/agents/agent.md +22 -2
- package/.docs/reference/agents/generate.md +2 -0
- package/.docs/reference/cli/mastra.md +12 -4
- package/.docs/reference/client-js/agents.md +17 -0
- package/.docs/reference/client-js/observability.md +11 -92
- package/.docs/reference/code-sdk/mount-agent-controller.md +2 -0
- package/.docs/reference/index.md +1 -1
- package/.docs/reference/memory/observational-memory.md +13 -0
- package/.docs/reference/observability/tracing/trace-query.md +198 -443
- package/.docs/reference/processors/provider-history-compat.md +1 -1
- package/.docs/reference/processors/stream-error-retry-processor.md +1 -1
- package/.docs/reference/processors/tool-search-processor.md +3 -3
- package/.docs/reference/server/routes.md +17 -6
- package/.docs/reference/storage/retention.md +15 -12
- package/.docs/reference/streaming/ChunkType.md +4 -0
- package/.docs/reference/streaming/agents/stream.md +2 -0
- package/.docs/reference/tools/create-tool.md +2 -0
- package/.docs/reference/tools/mcp-server.md +1 -1
- package/package.json +5 -5
|
@@ -165,6 +165,8 @@ new Agent({
|
|
|
165
165
|
|
|
166
166
|
An `errorProcessors` list passed to a single `generate()` or `stream()` call works differently: it replaces the agent's resolved list for that call, defaults included.
|
|
167
167
|
|
|
168
|
+
An agent's memory can contribute error processors of its own, for example to recover when a request exceeds the model's context window. They run after the processors above and stay in place when a call passes its own `errorProcessors` list.
|
|
169
|
+
|
|
168
170
|
Each array also accepts a function that returns an array, so processors can be built per-request from `RequestContext`:
|
|
169
171
|
|
|
170
172
|
```typescript
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Tools
|
|
6
6
|
|
|
7
|
-
Agents use tools to call APIs or query databases. They can also run custom functions from your codebase. Tools give agents capabilities beyond language generation by providing structured access to data and performing clearly defined operations. You can also load tools from remote [MCP servers](https://mastra.ai/docs/connections/mcp) to expand an agent's capabilities.
|
|
7
|
+
Agents use tools to call APIs or query databases. They can also run custom functions from your codebase. Tools give agents capabilities beyond language generation by providing structured access to data and performing clearly defined operations. You can also load tools from remote [MCP servers](https://mastra.ai/docs/connections/mcp) to expand an agent's capabilities. For services like Linear, Slack, and GitHub, [Connect](https://mastra.ai/docs/mastra-platform/connect/tools) on Mastra platform supplies ready-made tools with managed credentials, which you can combine with your own.
|
|
8
8
|
|
|
9
9
|
**For AI agents:** `execute` has exactly one signature: `execute(inputData, context)`. The first parameter is validated against `inputSchema`. The runtime always provides the second parameter with `requestContext`, `tracingContext`, `abortSignal`, and other execution metadata. You may omit it when unused. Other shapes are outdated. Run `npx mastra api tool execute weather-tool '{"location":"San Francisco"}'` to test this tool directly instead of writing a temporary script. The command requires a running Mastra server; start the local server with `npx mastra dev`, or pass the reachable server's base URL with `--url`. Run `npx mastra api tool execute --schema` before constructing different input. 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.
|
|
10
10
|
|
|
@@ -328,7 +328,7 @@ Subagents can't run client tools. When a subagent calls a tool without `execute`
|
|
|
328
328
|
|
|
329
329
|
Use `transform` when a tool returns raw data your application needs, but browser-facing streams or user-visible transcript messages should receive a smaller or safer shape. `transform` is separate from `toModelOutput`: `toModelOutput` shapes the payload sent back to the model, while `transform` shapes tool input, output, errors, approval payloads, and suspension payloads for `display` and `transcript` targets.
|
|
330
330
|
|
|
331
|
-
If a transform is configured and it fails, Mastra doesn't fall back to the raw payload for display or transcript targets. Input deltas are suppressed when no safe `inputDelta` transform is available.
|
|
331
|
+
A tool-level transform only changes the phases it defines. In the example below, only `output` is transformed, so the stored tool input stays unchanged. If a transform is configured and it fails, Mastra doesn't fall back to the raw payload for display or transcript targets. Input deltas are suppressed when no safe `inputDelta` transform is available.
|
|
332
332
|
|
|
333
333
|
The following example redacts a secret from both targets:
|
|
334
334
|
|
|
@@ -698,6 +698,7 @@ The [AgentController](https://mastra.ai/docs/harness/agent-controller) automatic
|
|
|
698
698
|
- [`Agent.generate()` reference](https://mastra.ai/reference/agents/generate): Runtime options for tool selection, steps, and callbacks
|
|
699
699
|
- [Background tasks](https://mastra.ai/docs/harness/background-tasks): Run long-running tools without blocking the agent loop
|
|
700
700
|
- [MCP overview](https://mastra.ai/docs/connections/mcp)
|
|
701
|
+
- [Connect tools](https://mastra.ai/docs/mastra-platform/connect/tools): Ready-made tools for providers connected to a Mastra platform project
|
|
701
702
|
- [Dynamic tool search](https://mastra.ai/reference/processors/tool-search-processor): Load tools on demand for agents with large tool libraries
|
|
702
703
|
- [Tools with structured output](https://mastra.ai/docs/agents/structured-output): Model compatibility when combining tools and structured output
|
|
703
704
|
- [Agent approval](https://mastra.ai/docs/agents/human-in-the-loop)
|
|
@@ -8,6 +8,8 @@ Mastra supports the [Model Context Protocol (MCP)](https://modelcontextprotocol.
|
|
|
8
8
|
|
|
9
9
|
Use [`MCPClient`](https://mastra.ai/reference/tools/mcp-client) to connect to MCP servers. Use [`MCPServer`](https://mastra.ai/reference/tools/mcp-server) to expose Mastra agents, tools, workflows, prompts, and resources to other MCP-compatible systems. Both speak the MCP `2026-07-28` revision over stdio and Streamable HTTP.
|
|
10
10
|
|
|
11
|
+
For hosted MCP servers such as Neon and Canva, [Connect](https://mastra.ai/docs/mastra-platform/connect/providers) on Mastra platform can manage the OAuth flow and credentials for you, so agents get the server's tools through [`tools()`](https://mastra.ai/docs/mastra-platform/connect/tools) without a hand-configured `MCPClient`.
|
|
12
|
+
|
|
11
13
|
> **Note:** Upgrading from `@mastra/mcp` 1.x? See the [migration guide](https://mastra.ai/reference/migrations/mcp-v2).
|
|
12
14
|
|
|
13
15
|
For credential choices and permission boundaries, see [Authentication and authorization with MCP](https://mastra.ai/docs/guides/mcp-authentication-authorization).
|
|
@@ -93,6 +93,14 @@ Configure validation appropriate to your issuer, including audience and expiry c
|
|
|
93
93
|
|
|
94
94
|
Protecting Mastra routes with `server.auth` and providing interoperable OAuth discovery are different tasks. Don't assume configuring one supplies the other.
|
|
95
95
|
|
|
96
|
+
### Routes Mastra registers for an MCP server
|
|
97
|
+
|
|
98
|
+
Alongside the MCP transport, Mastra registers REST routes used by Studio to list servers, inspect tools, execute tools, and read resources. See the [MCP routes reference](https://mastra.ai/reference/server/routes) for the full list. These paths use the default `/api` prefix.
|
|
99
|
+
|
|
100
|
+
The `POST /api/mcp/:serverId/tools/:toolId/execute` route calls `executeTool()` directly, without a protocol client. With a Mastra FGA provider configured, `MCPServer.executeTool()` enforces tool execution permission using the user in `requestContext`. The REST tool list also filters tools through FGA. These permission checks don't replace route authentication.
|
|
101
|
+
|
|
102
|
+
Built-in authentication for these routes depends on `server.auth`. Without it, `requiresAuth: true` doesn't enforce authentication. Custom middleware that checks only the `/mcp` or `/sse` transport paths leaves the REST routes open. If you use custom middleware instead of `server.auth`, default-deny `/api/mcp/*` and allow access only after authentication.
|
|
103
|
+
|
|
96
104
|
### Pass verified identity to tools
|
|
97
105
|
|
|
98
106
|
When a Mastra server handles an MCP request, its auth bridge preserves an existing `req.auth`. Otherwise, it uses `server.mcpOptions.setRequestAuth` when configured, or builds `authInfo` from the request context. With the default bridge, the authenticated user is available in `authInfo.extra.user`.
|
|
@@ -121,9 +129,10 @@ Keep access tokens, refresh tokens, and service credentials outside model-visibl
|
|
|
121
129
|
|
|
122
130
|
- [ ] **Validate tokens:** Configure validation for your issuer, including audience and expiry checks, and confirm an unvalidated token is rejected.
|
|
123
131
|
- [ ] **Challenge missing tokens:** Confirm every protected server path returns `401` without a bearer token.
|
|
132
|
+
- [ ] **Protect MCP REST routes:** If you don't use `server.auth`, confirm `/api/mcp/:serverId/tools*`, `/api/mcp/:serverId/resources*`, and `/api/mcp/v0/servers*` aren't reachable without authentication. Use your configured API prefix if it differs from `/api`.
|
|
124
133
|
- [ ] **Isolate users:** Confirm one user's provider, connection, and stored credentials aren't reused for another user.
|
|
125
134
|
- [ ] **Bind credentials to the issuer:** Confirm registration and tokens aren't reused when the authorization server changes.
|
|
126
|
-
- [ ] **Deny unauthorized operations:** Confirm a caller without permission is denied `tools/call`, including for a tool it never listed.
|
|
135
|
+
- [ ] **Deny unauthorized operations:** Confirm a caller without permission is denied both `tools/call` and `POST /api/mcp/:serverId/tools/:toolId/execute`, including for a tool it never listed.
|
|
127
136
|
- [ ] **Scope records to the caller:** Confirm record lookups resolve the tenant from trusted server context rather than tool arguments.
|
|
128
137
|
- [ ] **Keep tokens at their audience:** Confirm upstream calls use separate credentials and never forward the MCP token.
|
|
129
138
|
- [ ] **Keep secrets out of model data:** Confirm tokens and credentials stay out of instructions, tool arguments, and tool results.
|
|
@@ -431,6 +431,7 @@ channels: {
|
|
|
431
431
|
|
|
432
432
|
return controller.createSession({
|
|
433
433
|
resourceId: thread.resourceId,
|
|
434
|
+
threadId: thread.id,
|
|
434
435
|
scope: install.id,
|
|
435
436
|
ownerId: controller.id,
|
|
436
437
|
requestContext,
|
|
@@ -439,7 +440,7 @@ channels: {
|
|
|
439
440
|
}
|
|
440
441
|
```
|
|
441
442
|
|
|
442
|
-
Create the session under `thread.resourceId`. Because a session can bind only threads it owns, use `resolveResourceId` to assign a different owner to the mapped thread. Sessions are get-or-create for each `resourceId` and `scope` combination. Pass `scope` when one thread needs separate sessions for each installation or principal.
|
|
443
|
+
Create the session under `thread.resourceId`. Because a session can bind only threads it owns, use `resolveResourceId` to assign a different owner to the mapped thread. Pass `threadId: thread.id` so the session opens on the mapped thread. Without it, a session that has tags or a `projectPath` doesn't treat the mapped thread as its own, so it creates an extra empty thread before switching to the mapped one. Sessions are get-or-create for each `resourceId` and `scope` combination. Pass `scope` when one thread needs separate sessions for each installation or principal.
|
|
443
444
|
|
|
444
445
|
Failures that aren't refusals (a storage outage, a bug in your resolver's dependencies) still post an error to the thread, so a broken bot doesn't look like a silent one. If you need to tell them apart in your own code, a refusal is a `ChannelSessionRejectedError` with the original error as its `cause`.
|
|
445
446
|
|
|
@@ -318,14 +318,14 @@ export const mastra = new Mastra({
|
|
|
318
318
|
|
|
319
319
|
### Subscribe to all task events
|
|
320
320
|
|
|
321
|
-
|
|
321
|
+
Pass `allResources: true` to receive every task event in the system, across all resources. On connection, the stream emits a snapshot of all currently running tasks, then forwards live events as they happen.
|
|
322
322
|
|
|
323
323
|
```typescript
|
|
324
324
|
const bgManager = mastra.backgroundTaskManager;
|
|
325
325
|
if (!bgManager) throw new Error('Background tasks are not enabled');
|
|
326
326
|
|
|
327
327
|
const controller = new AbortController();
|
|
328
|
-
const stream = bgManager.stream({ abortSignal: controller.signal });
|
|
328
|
+
const stream = bgManager.stream({ allResources: true, abortSignal: controller.signal });
|
|
329
329
|
|
|
330
330
|
for await (const chunk of stream) {
|
|
331
331
|
switch (chunk.type) {
|
|
@@ -344,6 +344,8 @@ for await (const chunk of stream) {
|
|
|
344
344
|
|
|
345
345
|
The stream stays open until the caller's `AbortSignal` fires. Always pass an `abortSignal` so you can disconnect cleanly.
|
|
346
346
|
|
|
347
|
+
> **Warning:** `allResources: true` delivers task arguments and results for every user. Use it only in trusted server-side code, never to serve a single user's request. Without `resourceId` or `allResources`, `stream()` only delivers tasks that have no `resourceId`. Agent tasks dispatched with memory always have a `resourceId`, so they won't appear in that stream.
|
|
348
|
+
|
|
347
349
|
### Filter the stream
|
|
348
350
|
|
|
349
351
|
Pass any combination of filter options to narrow the events you receive. Filters apply to both the initial snapshot and the live event subscription.
|
|
@@ -357,14 +359,15 @@ const stream = bgManager.stream({
|
|
|
357
359
|
})
|
|
358
360
|
```
|
|
359
361
|
|
|
360
|
-
| Filter
|
|
361
|
-
|
|
|
362
|
-
| `agentId`
|
|
363
|
-
| `runId`
|
|
364
|
-
| `threadId`
|
|
365
|
-
| `resourceId`
|
|
366
|
-
| `taskId`
|
|
367
|
-
| `
|
|
362
|
+
| Filter | Description |
|
|
363
|
+
| -------------- | --------------------------------------------------------------------------------------------- |
|
|
364
|
+
| `agentId` | Only events from tasks dispatched by this agent |
|
|
365
|
+
| `runId` | Only events from this specific agent run |
|
|
366
|
+
| `threadId` | Only events from tasks scoped to this memory thread |
|
|
367
|
+
| `resourceId` | Only events from tasks scoped to this resource |
|
|
368
|
+
| `taskId` | Only events for a single task |
|
|
369
|
+
| `allResources` | Include tasks from every resource when `resourceId` is omitted. Trusted server-side code only |
|
|
370
|
+
| `abortSignal` | Closes the stream when the signal aborts |
|
|
368
371
|
|
|
369
372
|
### Look up task state directly
|
|
370
373
|
|
|
@@ -100,6 +100,26 @@ agent.queueMessage('Also check whether the tests need updates.', {
|
|
|
100
100
|
|
|
101
101
|
When the thread is idle, `queueMessage()` starts a run immediately. When the thread is active, it preserves turn order by starting a new run after the active run completes.
|
|
102
102
|
|
|
103
|
+
### Queue a typed signal for the next turn
|
|
104
|
+
|
|
105
|
+
Use `queueSignal()` when system-generated input needs the same turn ordering as `queueMessage()` but should keep its own signal type, tag, and attributes. For example, a skill invocation can render as a `<skill>` element instead of a plain user message:
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
agent.queueSignal(
|
|
109
|
+
{
|
|
110
|
+
type: 'reactive',
|
|
111
|
+
tagName: 'skill',
|
|
112
|
+
attributes: { name: 'triage' },
|
|
113
|
+
contents: 'Triage the new issue.',
|
|
114
|
+
},
|
|
115
|
+
{ resourceId: 'user_123', threadId: 'thread_456' },
|
|
116
|
+
)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The model receives `<skill name="triage">Triage the new issue.</skill>`. Queued signals share the `queueMessage()` queue, so they count toward queue-count events and you can cancel them with `cancelQueuedMessages()`.
|
|
120
|
+
|
|
121
|
+
When a signal starts a run, the run's `AGENT_RUN` span records the signal's `id`, `type`, `tagName`, and `attributes` under `attributes.signal`.
|
|
122
|
+
|
|
103
123
|
### Cancel pending input
|
|
104
124
|
|
|
105
125
|
Use [`cancelQueuedMessages()`](https://mastra.ai/reference/agents/agent) to remove selected pending input without stopping the active run. Cancellation is scoped to the memory thread, including input submitted by other Agents sharing the same runtime and PubSub instance.
|
|
@@ -508,12 +528,14 @@ Use heartbeats together with client-side reconnect logic. Heartbeats reduce idle
|
|
|
508
528
|
|
|
509
529
|
- [`Agent.sendMessage()`](https://mastra.ai/reference/agents/agent)
|
|
510
530
|
- [`Agent.queueMessage()`](https://mastra.ai/reference/agents/agent)
|
|
531
|
+
- [`Agent.queueSignal()`](https://mastra.ai/reference/agents/agent)
|
|
511
532
|
- [`Agent.sendSignal()`](https://mastra.ai/reference/agents/agent)
|
|
512
533
|
- [`Agent.sendStateSignal()`](https://mastra.ai/reference/agents/agent)
|
|
513
534
|
- [`Agent.subscribeToThread()`](https://mastra.ai/reference/agents/agent)
|
|
514
535
|
- [`createNotificationInboxTool()`](https://mastra.ai/reference/signals/create-notification-inbox-tool)
|
|
515
536
|
- [`client.getAgent().sendMessage()`](https://mastra.ai/reference/client-js/agents)
|
|
516
537
|
- [`client.getAgent().queueMessage()`](https://mastra.ai/reference/client-js/agents)
|
|
538
|
+
- [`client.getAgent().queueSignal()`](https://mastra.ai/reference/client-js/agents)
|
|
517
539
|
- [`client.getAgent().sendSignal()`](https://mastra.ai/reference/client-js/agents)
|
|
518
540
|
- [Server agent routes](https://mastra.ai/reference/server/routes)
|
|
519
541
|
- [`client.getAgent().subscribeToThread()`](https://mastra.ai/reference/client-js/agents)
|
|
@@ -10,31 +10,31 @@ A provider is a service you can connect to your project, identified by a provide
|
|
|
10
10
|
|
|
11
11
|
This directory covers the generated toolsets and channel setup documented here, rather than every provider in the platform catalog. Run [`mastra connect list`](https://mastra.ai/reference/cli/mastra) to see providers available to your project and their connection status.
|
|
12
12
|
|
|
13
|
-
| Provider ID | Provider
|
|
14
|
-
| ----------------- |
|
|
15
|
-
| `clerk` |  Clerk
|
|
16
|
-
| `discord` |  Discord
|
|
17
|
-
| `fireflies` |  Fireflies.ai
|
|
18
|
-
| `github` |  GitHub
|
|
19
|
-
| `google-calendar` |  Google Calendar
|
|
20
|
-
| `google-docs` |  Google Docs
|
|
21
|
-
| `google-drive` |  Google Drive
|
|
22
|
-
| `google-mail` |  Gmail
|
|
23
|
-
| `google-sheet` |  Google Sheets
|
|
24
|
-
| `hubspot` |  HubSpot
|
|
25
|
-
| `incident-io` | 
|
|
26
|
-
| `jira` |  Jira
|
|
27
|
-
| `linear` |  Linear
|
|
28
|
-
| `notion` |  Notion
|
|
29
|
-
| `openai` |  OpenAI
|
|
30
|
-
| `posthog` | 
|
|
31
|
-
| `resend` | 
|
|
32
|
-
| `slack` |  Slack
|
|
33
|
-
| `slack-channels` |  Slack channels
|
|
34
|
-
| `snowflake` |  Snowflake
|
|
35
|
-
| `supabase` |  Supabase
|
|
36
|
-
| `telegram` |  Telegram
|
|
37
|
-
| `workos` |  WorkOS
|
|
13
|
+
| Provider ID | Provider | Gives you |
|
|
14
|
+
| ----------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
15
|
+
| `clerk` |  Clerk | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
16
|
+
| `discord` |  Discord | [Tools](https://mastra.ai/reference/connect/providers), [Channels](https://mastra.ai/docs/mastra-platform/connect/channels) |
|
|
17
|
+
| `fireflies` |  Fireflies.ai | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
18
|
+
| `github` |  GitHub | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
19
|
+
| `google-calendar` |  Google Calendar | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
20
|
+
| `google-docs` |  Google Docs | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
21
|
+
| `google-drive` |  Google Drive | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
22
|
+
| `google-mail` |  Gmail | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
23
|
+
| `google-sheet` |  Google Sheets | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
24
|
+
| `hubspot` |  HubSpot | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
25
|
+
| `incident-io` |  incident.io | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
26
|
+
| `jira` |  Jira | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
27
|
+
| `linear` |  Linear | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
28
|
+
| `notion` |  Notion | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
29
|
+
| `openai` |  OpenAI | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
30
|
+
| `posthog` |  PostHog | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
31
|
+
| `resend` |  Resend | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
32
|
+
| `slack` |  Slack | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
33
|
+
| `slack-channels` |  Slack channels | [Channels](https://mastra.ai/docs/mastra-platform/connect/channels) |
|
|
34
|
+
| `snowflake` |  Snowflake | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
35
|
+
| `supabase` |  Supabase | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
36
|
+
| `telegram` |  Telegram | [Channels](https://mastra.ai/docs/mastra-platform/connect/channels) |
|
|
37
|
+
| `workos` |  WorkOS | [Tools](https://mastra.ai/reference/connect/providers) |
|
|
38
38
|
|
|
39
39
|
Generated toolsets are included in `@mastra/connect`. Upgrading the package gives you toolsets added in newer releases, but provider availability depends on the platform catalog. The [provider toolsets reference](https://mastra.ai/reference/connect/providers) lists the generated tools.
|
|
40
40
|
|
|
@@ -52,98 +52,13 @@ These providers serve their tools from a hosted Model Context Protocol (MCP) ser
|
|
|
52
52
|
| `robinhood-mcp` |  Robinhood | [Agentic Trading](https://robinhood.com/us/en/support/agentic-trading) |
|
|
53
53
|
| `sanity-mcp` |  Sanity | [Sanity MCP server](https://www.sanity.io/docs/ai/mcp-server) |
|
|
54
54
|
|
|
55
|
-
##
|
|
55
|
+
## Troubleshoot a connection
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
### Set up Resend
|
|
60
|
-
|
|
61
|
-
The `resend` toolset sends and reads email and manages domains, contacts, segments, broadcasts, templates, and webhooks. To send from your own domain, [verify it in Resend](https://resend.com/docs/dashboard/domains/introduction).
|
|
62
|
-
|
|
63
|
-
1. In Resend, open [**API Keys**](https://resend.com/api-keys) and select **Create API Key**.
|
|
64
|
-
2. Enter a name, such as `mastra-agents`, and set **Permission** to **Full access**.
|
|
65
|
-
3. Select **Add** and copy the key. It starts with `re_`, and Resend shows it only once.
|
|
66
|
-
4. Run `mastra connect add resend` and paste the key when it asks for **API Key**.
|
|
67
|
-
|
|
68
|
-
A **Sending access** key fails to connect. Mastra checks a new key by listing your domains, which sending access keys can't do. To expose only the sending tool to an agent, use `allowTools`:
|
|
69
|
-
|
|
70
|
-
```typescript
|
|
71
|
-
tools({
|
|
72
|
-
providers: {
|
|
73
|
-
resend: { allowTools: ['resend_send_email'] },
|
|
74
|
-
},
|
|
75
|
-
})
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
This filter controls which tools the agent receives. It doesn't reduce the Resend key's **Full access** permissions.
|
|
79
|
-
|
|
80
|
-
#### Sending safely
|
|
81
|
-
|
|
82
|
-
`resend_send_email` retries a failed send up to three times only when the call includes an `idempotency_key`. Without one it doesn't retry automatically, but a retry elsewhere in your app can still duplicate an email that failed after Resend accepted it. When duplicates matter, tell the agent to set a stable key per logical email, such as `confirmation/order-1234`. Resend answers a reused key with the original response, and rejects a reused key with a different payload with a `409`.
|
|
83
|
-
|
|
84
|
-
If a send fails with a `proxy_error` and status `403`, check that the `from` address uses a domain verified in Resend.
|
|
85
|
-
|
|
86
|
-
### Set up PostHog
|
|
87
|
-
|
|
88
|
-
The `posthog` toolset runs HogQL queries and reads and edits insights, dashboards, feature flags, experiments, surveys, cohorts, and persons. It works with PostHog Cloud in either region. Self-hosted PostHog isn't supported.
|
|
89
|
-
|
|
90
|
-
1. Check your region in PostHog's address bar: `us.posthog.com` or `eu.posthog.com`.
|
|
91
|
-
2. Open [**Settings** > **Personal API keys**](https://us.posthog.com/settings/user-api-keys) on your region's host and select **Create personal API key**.
|
|
92
|
-
3. Limit the key to the organization or projects the agent should see, and choose scopes from the following table.
|
|
93
|
-
4. Create the key and copy it. It starts with `phx_`, and PostHog shows it only once.
|
|
94
|
-
5. Run `mastra connect add posthog`. Choose `us` or `eu` for **Subdomain** and paste the key when it asks for **API Key**.
|
|
95
|
-
|
|
96
|
-
| Scope | Read gives the agent | Write also allows |
|
|
97
|
-
| ------------------- | --------------------------------------------------------------- | ------------------------------------ |
|
|
98
|
-
| `project` | `posthog_list_projects`, `posthog_get_project` | |
|
|
99
|
-
| `query` | `posthog_run_query`, `posthog_list_events`, `posthog_get_event` | |
|
|
100
|
-
| `insight` | List and get insights | Create, update, delete insights |
|
|
101
|
-
| `dashboard` | List and get dashboards | Create, update, delete dashboards |
|
|
102
|
-
| `feature_flag` | List and get feature flags | Create, update, delete feature flags |
|
|
103
|
-
| `experiment` | List and get experiments | Create and update experiments |
|
|
104
|
-
| `survey` | List and get surveys | Create, update, delete surveys |
|
|
105
|
-
| `cohort` | List and get cohorts | Create, update, delete cohorts |
|
|
106
|
-
| `person` | List and get persons | Update and delete persons |
|
|
107
|
-
| `session_recording` | `posthog_list_session_recordings` | |
|
|
108
|
-
|
|
109
|
-
Most PostHog tools take a `project_id`, so give every key `project:read`. Agents call `posthog_list_projects` to find the ID. A read-only analytics agent needs `project:read`, `query:read`, `insight:read`, and `dashboard:read`.
|
|
110
|
-
|
|
111
|
-
Avoid the `us.i` and `eu.i` subdomains. Those hosts only serve PostHog's event ingestion endpoints, so most tools fail with them. The form also rejects project API keys (`phc_`) and project secret API keys (`phs_`).
|
|
112
|
-
|
|
113
|
-
#### Query limits
|
|
114
|
-
|
|
115
|
-
`posthog_run_query` queries count against PostHog's hourly query budget for personal API keys. Prefer aggregated results over raw event exports.
|
|
116
|
-
|
|
117
|
-
### Set up incident.io
|
|
118
|
-
|
|
119
|
-
The `incident-io` toolset reads and updates incidents, posts incident updates, manages actions and follow-ups, and reads alerts, schedules, the catalog, and postmortems. Tool keys start with `incident_io_`, with an underscore where the provider ID has a hyphen.
|
|
120
|
-
|
|
121
|
-
1. In incident.io, open [**Settings** > **API keys**](https://app.incident.io/~/settings/api-keys) and create a key named `mastra-agents` or similar.
|
|
122
|
-
2. Select permissions from the following table. You can only grant permissions you already have.
|
|
123
|
-
3. Create the key and copy it. It starts with `inc_`, and incident.io shows it only once.
|
|
124
|
-
4. Run `mastra connect add incident-io` and paste the key when it asks for **API Key**.
|
|
125
|
-
|
|
126
|
-
| Agent task | Permission |
|
|
127
|
-
| ------------------------------------------------------------------------- | -------------------------- |
|
|
128
|
-
| Read incidents, updates, timelines, actions, follow-ups, users, and teams | **View data** |
|
|
129
|
-
| Read private incidents too | **View all incident data** |
|
|
130
|
-
| Read the catalog | **View catalog** |
|
|
131
|
-
| Read alerts, schedules, and overrides | **View on-call resources** |
|
|
132
|
-
| Open incidents | **Create incidents** |
|
|
133
|
-
| Update incidents, post updates, and manage actions and follow-ups | **Edit incidents** |
|
|
134
|
-
|
|
135
|
-
A triage agent that reads incidents and posts updates needs **View data** and **Edit incidents**, and the incident.io [permissions reference](https://docs.incident.io/admin/api-keys#permissions-reference) describes each permission.
|
|
136
|
-
|
|
137
|
-
#### Creation and rate limits
|
|
138
|
-
|
|
139
|
-
`incident_io_create_incident` requires an `idempotency_key`, and incident.io rejects a second incident with the same key. An API key can open 10 incidents an hour that create a chat channel. Listing incidents is limited to 60 requests a minute. If the agent hits `429` errors, tell it to filter incidents instead of paging through all of them.
|
|
140
|
-
|
|
141
|
-
## Fix a failing provider
|
|
142
|
-
|
|
143
|
-
A `proxy_error` carries the provider's response in its `status` and `detail` properties.
|
|
57
|
+
Most provider call failures come from the connection's credential or configuration. A `proxy_error` carries the provider's response in its `status` and `detail` properties.
|
|
144
58
|
|
|
145
59
|
- **Status `401`:** Check whether the credential has expired, been revoked, or been rotated. If it needs replacing, [reauthorize the connection](https://mastra.ai/reference/cli/mastra).
|
|
146
60
|
- **Status `403`:** Check the provider's response for missing scopes, resource-access restrictions, or account requirements. Grant only the access the agent needs. You can exclude unsupported operations with `allowTools`, but filtering tools doesn't change the credential's permissions.
|
|
147
61
|
- **No tools from a provider:** Run `mastra connect list` to check the project and connection status. Check provider selection and tool filters, and confirm that your installed `@mastra/connect` version includes the toolset. Connection changes follow the resolver's [caching behavior](https://mastra.ai/reference/connect/tools). Check app logs for `[@mastra/connect] Skipping` warnings when a connection can't be resolved.
|
|
62
|
+
- **Resend won't connect:** Use an API key with **Full access** permission. A **Sending access** key fails to connect because Mastra checks a new key by listing your domains, which sending access keys can't do.
|
|
148
63
|
|
|
149
64
|
See [errors](https://mastra.ai/reference/connect/tools) for every error code.
|
|
@@ -138,7 +138,7 @@ Use a consistent `serviceName` to filter data from a specific application or dep
|
|
|
138
138
|
|
|
139
139
|
## Query observability data
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
Browse hosted traces from the terminal with the Mastra CLI:
|
|
142
142
|
|
|
143
143
|
**npm**:
|
|
144
144
|
|
|
@@ -164,7 +164,28 @@ yarn dlx mastra api trace list
|
|
|
164
164
|
bun x mastra api trace list
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
-
The CLI
|
|
167
|
+
The CLI reads `MASTRA_PLATFORM_ACCESS_TOKEN` and `MASTRA_PROJECT_ID` from your project environment and targets the US observability endpoint by default. See [CLI target resolution](https://mastra.ai/reference/cli/mastra) for other authentication options and regional endpoints.
|
|
168
|
+
|
|
169
|
+
Use `mastra api trace query` to find completed traces by their fields or related spans. For example, find traces whose root span took more than five seconds:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npx mastra api trace query '{
|
|
173
|
+
"timeRange": {
|
|
174
|
+
"from": "2026-08-01T00:00:00.000Z",
|
|
175
|
+
"to": "2026-08-08T00:00:00.000Z"
|
|
176
|
+
},
|
|
177
|
+
"where": {
|
|
178
|
+
"op": "gt",
|
|
179
|
+
"left": { "path": "durationMs" },
|
|
180
|
+
"right": { "literal": 5000 }
|
|
181
|
+
},
|
|
182
|
+
"page": { "limit": 25 }
|
|
183
|
+
}'
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Choose a time range containing your exported traces, up to 31 days. Results appear in `data.traces`.
|
|
187
|
+
|
|
188
|
+
Mastra Platform uses the same trace-query endpoints and request format as Mastra Server. Use the [Trace queries API reference](https://mastra.ai/reference/observability/tracing/trace-query) for HTTP requests, supported filters, pagination, polling, and field discovery.
|
|
168
189
|
|
|
169
190
|
You can query exported feedback over HTTP. See the [Feedback API](https://mastra.ai/docs/mastra-platform/api) for its current status, regional endpoints, authentication, project scoping, and supported query parameters such as `traceId` and `environment`.
|
|
170
191
|
|
|
@@ -151,6 +151,37 @@ const response = await memoryAgent.generate("What's my favorite color?", {
|
|
|
151
151
|
|
|
152
152
|
To list all threads for a resource, or retrieve a specific thread, [use the memory API directly](https://mastra.ai/docs/memory/message-history).
|
|
153
153
|
|
|
154
|
+
### Identify memory with scopes
|
|
155
|
+
|
|
156
|
+
Instead of a `memory` object, you can pass `scopes`: the addresses a run acts as, written as `<type>:<value>`. Memory reads the resource from a `resource:` scope and the thread from a `thread:` scope. Other scopes, such as `org:acme`, are passed to tools and processors.
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
const response = await memoryAgent.generate('Remember my favorite color is blue.', {
|
|
160
|
+
scopes: ['org:acme', 'resource:user-123', 'thread:conversation-123'],
|
|
161
|
+
})
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Scopes can also come from the agent and from the request context. Mastra combines all three sources:
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
export const memoryAgent = new Agent({
|
|
168
|
+
id: 'memory-agent',
|
|
169
|
+
name: 'Memory Agent',
|
|
170
|
+
scopes: ({ requestContext }) => {
|
|
171
|
+
// Set by your auth middleware. Request bodies can fill unreserved keys.
|
|
172
|
+
const orgId = requestContext.get('org-id')
|
|
173
|
+
return orgId ? [`org:${orgId}`] : []
|
|
174
|
+
},
|
|
175
|
+
memory: new Memory(),
|
|
176
|
+
})
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
The resolver's inputs must come from the server, not the client: a request body can set any request context key that isn't reserved. Trusted server middleware can also set scopes directly with the `MASTRA_SCOPES_KEY` request context key. Visit [Request Context](https://mastra.ai/docs/server/request-context) for details. Clients can't send scopes in a request body.
|
|
180
|
+
|
|
181
|
+
You can mix scopes with `memory.resource`, `memory.thread`, or the resource and thread request context keys, as long as they agree. If a `resource:` or `thread:` scope names a different value than another source, the call throws an error.
|
|
182
|
+
|
|
183
|
+
Tools, processors, and subagents receive the run's other scopes, but not its `resource:` and `thread:` scopes. Each nested agent call picks its own resource and thread.
|
|
184
|
+
|
|
154
185
|
## Observational Memory
|
|
155
186
|
|
|
156
187
|
Long conversations can fill the context window with raw message history and reduce agent performance. [Observational Memory](https://mastra.ai/docs/memory/observational-memory) uses background agents to compress older messages into observations. This reduces the context used by message history while retaining information for later turns.
|
|
@@ -86,6 +86,10 @@ Generated servers pass `server.apiPrefix` to the Hono adapter's [`prefix` constr
|
|
|
86
86
|
|
|
87
87
|
This approach can't block routes declared public with `requiresAuth: false`, because Mastra skips user middleware for those routes. With a non-Hono server adapter, register equivalent middleware through the server framework instead.
|
|
88
88
|
|
|
89
|
+
During `mastra dev`, inspect the full built-in route list, including MCP routes, in the [OpenAPI specification](http://localhost:4111/api/openapi.json). See the [server overview](https://mastra.ai/docs/server/overview) for API exploration and production settings.
|
|
90
|
+
|
|
91
|
+
If you use middleware for authentication without `server.auth`, prefer default-deny middleware that authenticates requests before allowing access, rather than enumerating protected paths. Include the full API prefix so REST routes alongside MCP transports are covered.
|
|
92
|
+
|
|
89
93
|
### Using `RequestContext`
|
|
90
94
|
|
|
91
95
|
You can populate `RequestContext` in a runtime server middleware by extracting information from the request. In this example, the `temperature-unit` is set based on the Cloudflare `CF-IPCountry` header to ensure responses match the user's locale.
|
|
@@ -284,11 +284,35 @@ requestContext.set(MASTRA_RESOURCE_ID_KEY, user.id)
|
|
|
284
284
|
requestContext.set(MASTRA_THREAD_ID_KEY, threadId)
|
|
285
285
|
```
|
|
286
286
|
|
|
287
|
-
| Key | Purpose
|
|
288
|
-
| --------------------------- |
|
|
289
|
-
| `MASTRA_RESOURCE_ID_KEY` | Forces all memory operations to use this resource ID. The server validates that accessed threads belong to this resource and returns 403 if not.
|
|
290
|
-
| `MASTRA_THREAD_ID_KEY` | Forces thread operations to use this thread ID, overriding client-provided values
|
|
291
|
-
| `
|
|
287
|
+
| Key | Purpose |
|
|
288
|
+
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
289
|
+
| `MASTRA_RESOURCE_ID_KEY` | Forces all memory operations to use this resource ID. The server validates that accessed threads belong to this resource and returns 403 if not. |
|
|
290
|
+
| `MASTRA_THREAD_ID_KEY` | Forces thread operations to use this thread ID, overriding client-provided values |
|
|
291
|
+
| `MASTRA_SCOPES_KEY` | Sets the [scopes](https://mastra.ai/docs/memory/overview) the agent run acts as, as an array of `<type>:<value>` strings. Combined with the agent's `scopes` and per-call `scopes`. A `resource:` or `thread:` scope that conflicts with another resource or thread value returns a 400 error. |
|
|
292
|
+
| `MASTRA_MESSAGE_AUTHOR_KEY` | Names who sent a user message as `{ id, name?, avatarUrl? }`. Agent-controller sessions persist it at `content.metadata.signal.author` and mirror it to `providerMetadata.mastra.author` for compatibility, so a thread shared by several people can show who wrote what. |
|
|
293
|
+
|
|
294
|
+
Server ownership checks read only `MASTRA_RESOURCE_ID_KEY` and `MASTRA_THREAD_ID_KEY`. If your middleware sets identity through `MASTRA_SCOPES_KEY` and you want those checks, set `MASTRA_RESOURCE_ID_KEY` too:
|
|
295
|
+
|
|
296
|
+
```typescript
|
|
297
|
+
import {
|
|
298
|
+
MASTRA_RESOURCE_ID_KEY,
|
|
299
|
+
MASTRA_THREAD_ID_KEY,
|
|
300
|
+
MASTRA_SCOPES_KEY,
|
|
301
|
+
} from '@mastra/core/request-context'
|
|
302
|
+
|
|
303
|
+
requestContext.set(MASTRA_SCOPES_KEY, [`org:${user.orgId}`, `resource:${user.id}`])
|
|
304
|
+
requestContext.set(MASTRA_RESOURCE_ID_KEY, user.id)
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
The same applies to a `thread:` scope: it sets the run's thread identity, but only `MASTRA_THREAD_ID_KEY` drives the server's thread checks, so set both when middleware pins the thread:
|
|
308
|
+
|
|
309
|
+
```typescript
|
|
310
|
+
requestContext.set(MASTRA_SCOPES_KEY, [`resource:${user.id}`, `thread:${threadId}`])
|
|
311
|
+
requestContext.set(MASTRA_RESOURCE_ID_KEY, user.id)
|
|
312
|
+
requestContext.set(MASTRA_THREAD_ID_KEY, threadId)
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Scopes from the request context and per-call `scopes` need a `@mastra/server` release that reserves them. Older servers pass these values from request bodies through to the agent, so while one is registered, agents throw an `AGENT_SCOPES_SERVER_OUTDATED` error instead of using them. The agent's own `scopes` option still applies.
|
|
292
316
|
|
|
293
317
|
These keys are used to implement user isolation in multi-tenant applications. See [Authorization middleware](https://mastra.ai/docs/server/middleware) for usage examples.
|
|
294
318
|
|
|
@@ -290,7 +290,7 @@ Don't set `replication` on ClickHouse Cloud. Cloud rewrites `MergeTree` to `Shar
|
|
|
290
290
|
|
|
291
291
|
### Observability domain options
|
|
292
292
|
|
|
293
|
-
`ObservabilityStorageClickhouse` and `ObservabilityStorageClickhouseVNext` accept the same connection options as `ClickhouseStore` (`url`, `username`, `password`, or a pre-configured `client`). `ObservabilityStorageClickhouseVNext` also accepts `retention`, the per-signal TTL in days described in [ClickHouse native TTL](https://mastra.ai/reference/storage/retention), and `traceQuery`, the execution limits for [
|
|
293
|
+
`ObservabilityStorageClickhouse` and `ObservabilityStorageClickhouseVNext` accept the same connection options as `ClickhouseStore` (`url`, `username`, `password`, or a pre-configured `client`). `ObservabilityStorageClickhouseVNext` also accepts `retention`, the per-signal TTL in days described in [ClickHouse native TTL](https://mastra.ai/reference/storage/retention), and `traceQuery`, the execution limits for [trace queries](https://mastra.ai/reference/observability/tracing/trace-query).
|
|
294
294
|
|
|
295
295
|
## Hosting options
|
|
296
296
|
|
|
@@ -40,6 +40,7 @@ List of required environment variables for each model provider and gateway suppo
|
|
|
40
40
|
| [Berget.AI](https://mastra.ai/models/providers/berget) | `berget/*` | `BERGET_API_KEY` |
|
|
41
41
|
| [Blue Claw](https://mastra.ai/models/providers/blueclaw) | `blueclaw/*` | `BLUECLAW_API_KEY` |
|
|
42
42
|
| [Bothub](https://mastra.ai/models/providers/bothub) | `bothub/*` | `BOTHUB_API_KEY` |
|
|
43
|
+
| [Boundless](https://mastra.ai/models/providers/boundless) | `boundless/*` | `BOUNDLESS_API_KEY` |
|
|
43
44
|
| [Cerebras](https://mastra.ai/models/providers/cerebras) | `cerebras/*` | `CEREBRAS_API_KEY` |
|
|
44
45
|
| [Charm Hyper](https://mastra.ai/models/providers/hyper) | `hyper/*` | `HYPER_API_KEY` |
|
|
45
46
|
| [Chutes](https://mastra.ai/models/providers/chutes) | `chutes/*` | `CHUTES_API_KEY` |
|
|
@@ -163,6 +164,7 @@ List of required environment variables for each model provider and gateway suppo
|
|
|
163
164
|
| [routing.run](https://mastra.ai/models/providers/routing-run) | `routing-run/*` | `ROUTING_RUN_API_KEY` |
|
|
164
165
|
| [RunInfra](https://mastra.ai/models/providers/runinfra) | `runinfra/*` | `RUNINFRA_GATEWAY_KEY` |
|
|
165
166
|
| [Sakana AI](https://mastra.ai/models/providers/sakana) | `sakana/*` | `SAKANA_API_KEY` |
|
|
167
|
+
| [SambaNova](https://mastra.ai/models/providers/sambanova) | `sambanova/*` | `SAMBANOVA_API_KEY` |
|
|
166
168
|
| [Sarvam AI](https://mastra.ai/models/providers/sarvam) | `sarvam/*` | `SARVAM_API_KEY` |
|
|
167
169
|
| [Scaleway](https://mastra.ai/models/providers/scaleway) | `scaleway/*` | `SCALEWAY_API_KEY` |
|
|
168
170
|
| [SCNet Token Plan](https://mastra.ai/models/providers/scnet-token-plan) | `scnet-token-plan/*` | `SCNET_API_KEY` |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Neon
|
|
6
6
|
|
|
7
|
-
Neon aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
7
|
+
Neon aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 57 models through Mastra's model router.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Neon documentation](https://neon.com/docs).
|
|
10
10
|
|
|
@@ -38,6 +38,7 @@ NEON_AI_GATEWAY_TOKEN=your-gateway-key
|
|
|
38
38
|
| `claude-fable-5` |
|
|
39
39
|
| `claude-fable-5-1` |
|
|
40
40
|
| `claude-haiku-4-5` |
|
|
41
|
+
| `claude-haiku-5-5` |
|
|
41
42
|
| `claude-opus-4-1` |
|
|
42
43
|
| `claude-opus-4-5` |
|
|
43
44
|
| `claude-opus-4-6` |
|
|
@@ -48,14 +49,19 @@ NEON_AI_GATEWAY_TOKEN=your-gateway-key
|
|
|
48
49
|
| `claude-sonnet-4-5` |
|
|
49
50
|
| `claude-sonnet-4-6` |
|
|
50
51
|
| `claude-sonnet-5` |
|
|
52
|
+
| `claude-sonnet-5-5` |
|
|
53
|
+
| `deepseek-v4-1-flash` |
|
|
51
54
|
| `gemini-3-1-flash-lite` |
|
|
52
55
|
| `gemini-3-1-pro` |
|
|
53
56
|
| `gemini-3-5-flash` |
|
|
54
57
|
| `gemini-3-5-flash-lite` |
|
|
55
58
|
| `gemini-3-6-flash` |
|
|
59
|
+
| `gemini-3-7-flash` |
|
|
60
|
+
| `gemini-3-8-flash` |
|
|
56
61
|
| `gemini-3-flash` |
|
|
57
62
|
| `gemma-3-12b` |
|
|
58
63
|
| `glm-5-2` |
|
|
64
|
+
| `glm-5-3` |
|
|
59
65
|
| `glm-5-3-flash` |
|
|
60
66
|
| `gpt-5` |
|
|
61
67
|
| `gpt-5-1` |
|
|
@@ -71,10 +77,14 @@ NEON_AI_GATEWAY_TOKEN=your-gateway-key
|
|
|
71
77
|
| `gpt-5-6-terra` |
|
|
72
78
|
| `gpt-5-mini` |
|
|
73
79
|
| `gpt-5-nano` |
|
|
80
|
+
| `gpt-6-1-sol` |
|
|
74
81
|
| `gpt-6-astra` |
|
|
82
|
+
| `gpt-6-luna` |
|
|
83
|
+
| `gpt-6-sol` |
|
|
75
84
|
| `gpt-oss-120b` |
|
|
76
85
|
| `gpt-oss-20b` |
|
|
77
86
|
| `grok-4-6` |
|
|
87
|
+
| `grok-4-7` |
|
|
78
88
|
| `inkling` |
|
|
79
89
|
| `kimi-k3` |
|
|
80
90
|
| `llama-4-maverick` |
|