@mastra/mcp-docs-server 1.2.23-alpha.10 → 1.2.23-alpha.13
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/integrations/voice/livekit.md +51 -1
- package/.docs/models/gateways/merge-gateway.md +2 -1
- package/.docs/models/gateways/netlify.md +1 -2
- package/.docs/models/gateways/openrouter.md +2 -1
- package/.docs/models/gateways/vercel.md +1 -1
- package/.docs/models/index.md +1 -1
- package/.docs/models/providers/digitalocean.md +2 -1
- package/.docs/models/providers/edenai.md +10 -7
- package/.docs/models/providers/fireworks-ai.md +1 -1
- package/.docs/models/providers/kilo.md +3 -2
- package/.docs/models/providers/llmgateway-providers.md +2 -1
- package/.docs/models/providers/llmgateway.md +2 -1
- package/.docs/models/providers/nano-gpt.md +2 -1
- package/.docs/models/providers/opencode.md +1 -2
- package/.docs/models/providers/requesty.md +3 -1
- package/.docs/reference/agents/channels.md +2 -2
- package/package.json +5 -5
|
@@ -414,7 +414,7 @@ See [Realtime voice](#quickstart) for setup and concepts.
|
|
|
414
414
|
The package has three entry points:
|
|
415
415
|
|
|
416
416
|
- `@mastra/livekit`: server-side APIs, [`liveKitConnectionRoute()`](#livekitconnectionroute), [`dispatchVoiceSession()`](#dispatchvoicesession), [`pipeAgentReplyToWriter()`](#pipeagentreplytowriter), [`serializeSessionMetadata()`](#livekitsessionmetadata), and [`createEndCallTool()`](#createendcalltool). Import these from Mastra server code. This entry never loads the LiveKit agents runtime.
|
|
417
|
-
- `@mastra/livekit/worker`: the worker runtime, [`createLiveKitWorker()`](#createlivekitworker), [`runLiveKitWorker()`](#runlivekitworker), [`chatContextToMessages()`](#chatcontexttomessages), and the session helpers [`speakGreeting()`](#speakgreeting), [`waitForAgentDoneSpeaking()`](#waitforagentdonespeaking), and [`runEndCall()`](#runendcall). Import it only from the worker entry file.
|
|
417
|
+
- `@mastra/livekit/worker`: the worker runtime, [`createLiveKitWorker()`](#createlivekitworker), [`runLiveKitWorker()`](#runlivekitworker), [`chatContextToMessages()`](#chatcontexttomessages), the per-session agent class [`MastraVoiceAgent`](#mastravoiceagent), and the session helpers [`speakGreeting()`](#speakgreeting), [`waitForAgentDoneSpeaking()`](#waitforagentdonespeaking), and [`runEndCall()`](#runendcall). Import it only from the worker entry file.
|
|
418
418
|
- `@mastra/livekit/plugin`: the LLM-component plugin, [`MastraLLM`](#mastrallm) and [`createRemoteAgentReplyGenerator()`](#createremoteagentreplygenerator). Import it in workers that build their own `voice.AgentSession`. `createRemoteAgentReplyGenerator()` is also exported from `@mastra/livekit/worker` because it plugs into `createLiveKitWorker()`'s `generate` option. `MastraLLM` is plugin-only.
|
|
419
419
|
|
|
420
420
|
### `createLiveKitWorker()`
|
|
@@ -551,6 +551,56 @@ export default createLiveKitWorker({
|
|
|
551
551
|
|
|
552
552
|
Returns: `VoiceTurnMessage[]`, where each entry is `{ role: 'system' | 'user' | 'assistant'; content: string; id?: string }`.
|
|
553
553
|
|
|
554
|
+
### `MastraVoiceAgent`
|
|
555
|
+
|
|
556
|
+
The LiveKit `voice.Agent` subclass that [`createLiveKitWorker()`](#createlivekitworker) builds for every session. Replies come from a Mastra agent (or a custom `generate` source) through the agent's `llmNode`; LiveKit keeps the audio loop, turn detection, and barge-in. Construct it yourself when you own the `voice.AgentSession`, for example to test a Mastra-backed agent with `@livekit/agents`' `voice.testing` harness without speech-to-text, text-to-speech, or a live worker. `createMastraVoiceAgent(options)` is an equivalent factory.
|
|
557
|
+
|
|
558
|
+
```typescript
|
|
559
|
+
import { initializeLogger, voice } from '@livekit/agents'
|
|
560
|
+
import { MastraVoiceAgent } from '@mastra/livekit/worker'
|
|
561
|
+
import { supportAgent } from './agents/support'
|
|
562
|
+
|
|
563
|
+
// Required outside a LiveKit worker: AgentSession needs the LiveKit logger initialized.
|
|
564
|
+
initializeLogger({ level: 'silent', pretty: false })
|
|
565
|
+
|
|
566
|
+
const session = new voice.AgentSession()
|
|
567
|
+
await session.start({ agent: new MastraVoiceAgent({ agent: supportAgent, memory: false }) })
|
|
568
|
+
|
|
569
|
+
// run() returns a RunResult, not a promise; wait() resolves when the turn completes.
|
|
570
|
+
const result = session.run({ userInput: 'What are your opening hours?' })
|
|
571
|
+
await result.wait()
|
|
572
|
+
result.expect.nextEvent().isMessage({ role: 'assistant' })
|
|
573
|
+
result.expect.noMoreEvents()
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
The agent carries its own placeholder `llm.LLM` so LiveKit runs the reply pipeline; generation always goes through `llmNode`, so a `FakeLLM` in the session's `llm` slot is ignored and calling the placeholder's `chat()` throws. To stub the model in tests, give the Mastra agent a mock model or pass a custom `generate` function.
|
|
577
|
+
|
|
578
|
+
#### Options
|
|
579
|
+
|
|
580
|
+
Provide exactly one reply source: `agent` or `generate`.
|
|
581
|
+
|
|
582
|
+
**agent** (`Agent`): In-process Mastra agent. Tools and memory run inside it.
|
|
583
|
+
|
|
584
|
+
**generate** (`VoiceReplyGenerator`): Custom reply source, for example from createRemoteAgentReplyGenerator(). A generate source owns its own hooks; toolFeedback, onToolCall, onTurnComplete, and streamOptions only apply to the agent source.
|
|
585
|
+
|
|
586
|
+
**memory** (`MastraVoiceAgentMemory | false`): Conversation persistence as { thread, resource? }. When set, only messages new since the agent last spoke are sent each turn and Mastra Memory supplies history. When false, the full in-session LiveKit context is sent every turn. (Default: `false`)
|
|
587
|
+
|
|
588
|
+
**requestContext** (`RequestContext | Record<string, unknown>`): Request context entries forwarded to every generation.
|
|
589
|
+
|
|
590
|
+
**toolFeedback** (`(toolCall: VoiceToolCall) => string | undefined | void`): Return a short phrase to speak while a tool runs. Agent source only.
|
|
591
|
+
|
|
592
|
+
**onToolCall** (`(toolCall: VoiceToolCall) => void`): Called as each tool call starts, before its result is known. Keep it cheap and non-throwing. Agent source only.
|
|
593
|
+
|
|
594
|
+
**onTurnComplete** (`VoiceTurnCompleteHook`): Called once per turn after the reply finished streaming to text-to-speech. Fire-and-forget; errors are logged. Agent source only.
|
|
595
|
+
|
|
596
|
+
**greetingReminder** (`{ everyMs: number; text?: string }`): Periodic AI re-disclosure: once everyMs has elapsed, the next reply is prefixed with text (spoken at the turn boundary). The worker derives this from configuration.greeting.repeatEvery / repeatText.
|
|
597
|
+
|
|
598
|
+
**streamOptions** (`MastraStreamOptions`): Extra options merged into every agent.stream() call. Agent source only.
|
|
599
|
+
|
|
600
|
+
**instructions** (`string`): LiveKit agent instructions. Not used for reply generation; the Mastra agent applies its own.
|
|
601
|
+
|
|
602
|
+
**id / stt / vad / tts / turnHandling** (`voice.AgentOptions['id' | 'stt' | 'vad' | 'tts' | 'turnHandling']`): Passed through to the LiveKit voice.Agent constructor. Use them to set per-agent speech components or turn handling.
|
|
603
|
+
|
|
554
604
|
### `MastraLLM`
|
|
555
605
|
|
|
556
606
|
A standard LiveKit LLM plugin (`llm.LLM`) backed by a Mastra agent. Use it when you build the `voice.AgentSession` yourself and want Mastra in the `llm` slot. [`createLiveKitWorker()`](#createlivekitworker) is the managed alternative. See [Use Mastra as the LLM component](#use-mastra-as-the-llm-component) for how to choose.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Merge Gateway
|
|
6
6
|
|
|
7
|
-
Merge Gateway aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
7
|
+
Merge Gateway aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 178 models through Mastra's model router.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Merge Gateway documentation](https://docs.merge.dev/merge-gateway).
|
|
10
10
|
|
|
@@ -40,6 +40,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
40
40
|
| ------------------------------------------------ |
|
|
41
41
|
| `anthropic/claude-3-7-sonnet-20250219` |
|
|
42
42
|
| `anthropic/claude-fable-5` |
|
|
43
|
+
| `anthropic/claude-fable-5-1` |
|
|
43
44
|
| `anthropic/claude-haiku-4-5-20251001` |
|
|
44
45
|
| `anthropic/claude-opus-4-1-20250805` |
|
|
45
46
|
| `anthropic/claude-opus-4-20250514` |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Netlify
|
|
6
6
|
|
|
7
|
-
Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access
|
|
7
|
+
Netlify AI Gateway provides unified access to multiple providers with built-in caching and observability. Access 236 models through Mastra's model router.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Netlify documentation](https://docs.netlify.com/build/ai-gateway/overview/).
|
|
10
10
|
|
|
@@ -253,7 +253,6 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
253
253
|
| `openrouter/thedrummer/unslopnemo-12b` |
|
|
254
254
|
| `openrouter/thinkingmachines/inkling` |
|
|
255
255
|
| `openrouter/thinkingmachines/inkling-small` |
|
|
256
|
-
| `openrouter/thinkingmachines/inkling-small:free` |
|
|
257
256
|
| `openrouter/undi95/remm-slerp-l2-13b` |
|
|
258
257
|
| `openrouter/upstage/solar-pro4` |
|
|
259
258
|
| `openrouter/x-ai/grok-4.20` |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# OpenRouter
|
|
6
6
|
|
|
7
|
-
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
7
|
+
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 353 models through Mastra's model router.
|
|
8
8
|
|
|
9
9
|
Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
|
|
10
10
|
|
|
@@ -62,6 +62,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
62
62
|
| `anthracite-org/magnum-v4-72b` |
|
|
63
63
|
| `anthropic/claude-3-haiku` |
|
|
64
64
|
| `anthropic/claude-fable-5` |
|
|
65
|
+
| `anthropic/claude-fable-5.1` |
|
|
65
66
|
| `anthropic/claude-haiku-4.5` |
|
|
66
67
|
| `anthropic/claude-opus-4` |
|
|
67
68
|
| `anthropic/claude-opus-4.1` |
|
|
@@ -88,6 +88,7 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
88
88
|
| `amazon/titan-embed-text-v2` |
|
|
89
89
|
| `anthropic/claude-3-haiku` |
|
|
90
90
|
| `anthropic/claude-fable-5` |
|
|
91
|
+
| `anthropic/claude-fable-5.1` |
|
|
91
92
|
| `anthropic/claude-haiku-4.5` |
|
|
92
93
|
| `anthropic/claude-opus-4` |
|
|
93
94
|
| `anthropic/claude-opus-4.5` |
|
|
@@ -132,7 +133,6 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
132
133
|
| `cohere/rerank-v4-fast` |
|
|
133
134
|
| `cohere/rerank-v4-pro` |
|
|
134
135
|
| `deepseek/deepseek-r1` |
|
|
135
|
-
| `deepseek/deepseek-v3` |
|
|
136
136
|
| `deepseek/deepseek-v3.1` |
|
|
137
137
|
| `deepseek/deepseek-v3.1-terminus` |
|
|
138
138
|
| `deepseek/deepseek-v3.2` |
|
package/.docs/models/index.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Model Providers
|
|
6
6
|
|
|
7
|
-
Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to
|
|
7
|
+
Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 7035 models from 199 providers through a single API.
|
|
8
8
|
|
|
9
9
|
## Features
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# DigitalOcean
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 95 DigitalOcean models through Mastra's model router. Authentication is handled automatically using the `DIGITALOCEAN_ACCESS_TOKEN` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [DigitalOcean documentation](https://docs.digitalocean.com/products/gradient-ai-platform/details/models/).
|
|
10
10
|
|
|
@@ -46,6 +46,7 @@ for await (const chunk of stream) {
|
|
|
46
46
|
| `digitalocean/anthropic-claude-4.6-sonnet` | 200K | | | | | | $3 | $15 |
|
|
47
47
|
| `digitalocean/anthropic-claude-5-sonnet` | 1.0M | | | | | | $2 | $10 |
|
|
48
48
|
| `digitalocean/anthropic-claude-fable-5` | 1.0M | | | | | | $10 | $50 |
|
|
49
|
+
| `digitalocean/anthropic-claude-fable-5.1` | 1.0M | | | | | | $10 | $50 |
|
|
49
50
|
| `digitalocean/anthropic-claude-haiku-4.5` | 200K | | | | | | $1 | $5 |
|
|
50
51
|
| `digitalocean/anthropic-claude-opus-4` | 200K | | | | | | $15 | $75 |
|
|
51
52
|
| `digitalocean/anthropic-claude-opus-4.5` | 200K | | | | | | $5 | $25 |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Eden AI
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 243 Eden AI models through Mastra's model router. Authentication is handled automatically using the `EDENAI_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Eden AI documentation](https://docs.edenai.co).
|
|
10
10
|
|
|
@@ -43,6 +43,7 @@ for await (const chunk of stream) {
|
|
|
43
43
|
| `edenai/amazon/zai.glm-4.7-flash` | 200K | | | | | | $0.07 | $0.40 |
|
|
44
44
|
| `edenai/amazon/zai.glm-4.7-flash@us` | 200K | | | | | | $0.07 | $0.40 |
|
|
45
45
|
| `edenai/anthropic/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
|
|
46
|
+
| `edenai/anthropic/claude-fable-5-1` | 1.0M | | | | | | $10 | $50 |
|
|
46
47
|
| `edenai/anthropic/claude-fable-latest` | 1.0M | | | | | | $10 | $50 |
|
|
47
48
|
| `edenai/anthropic/claude-opus-4-5` | 200K | | | | | | $5 | $25 |
|
|
48
49
|
| `edenai/anthropic/claude-opus-4-5-20251101` | 200K | | | | | | $5 | $25 |
|
|
@@ -71,6 +72,8 @@ for await (const chunk of stream) {
|
|
|
71
72
|
| `edenai/cohere/command-r-08-2024` | 128K | | | | | | $0.15 | $0.60 |
|
|
72
73
|
| `edenai/cohere/command-r-plus-08-2024` | 128K | | | | | | $3 | $10 |
|
|
73
74
|
| `edenai/cohere/command-r7b-12-2024` | 132K | | | | | | $0.04 | $0.15 |
|
|
75
|
+
| `edenai/databricks/databricks-deepseek-v4-flash-0731` | 1.0M | | | | | | $0.14 | $0.28 |
|
|
76
|
+
| `edenai/databricks/databricks-deepseek-v4-pro-0813` | 1.0M | | | | | | $1 | $4 |
|
|
74
77
|
| `edenai/databricks/databricks-gpt-oss-120b` | 131K | | | | | | $0.15 | $0.60 |
|
|
75
78
|
| `edenai/databricks/databricks-gpt-oss-120b@eu` | 131K | | | | | | $0.15 | $0.60 |
|
|
76
79
|
| `edenai/databricks/databricks-gpt-oss-20b` | 131K | | | | | | $0.07 | $0.30 |
|
|
@@ -127,8 +130,8 @@ for await (const chunk of stream) {
|
|
|
127
130
|
| `edenai/google/gemini-3.5-flash` | 1.0M | | | | | | $2 | $9 |
|
|
128
131
|
| `edenai/google/gemini-3.5-flash-lite` | 1.0M | | | | | | $0.30 | $3 |
|
|
129
132
|
| `edenai/google/gemini-3.6-flash` | 1.0M | | | | | | $0.75 | $4 |
|
|
130
|
-
| `edenai/google/gemini-3.7-flash` | 1.0M | | | | | | $
|
|
131
|
-
| `edenai/google/gemini-flash-latest` | 1.0M | | | | | | $
|
|
133
|
+
| `edenai/google/gemini-3.7-flash` | 1.0M | | | | | | $0.75 | $4 |
|
|
134
|
+
| `edenai/google/gemini-flash-latest` | 1.0M | | | | | | $0.75 | $4 |
|
|
132
135
|
| `edenai/google/gemini-pro-latest` | 1.0M | | | | | | $2 | $12 |
|
|
133
136
|
| `edenai/groq/openai/gpt-oss-120b` | 131K | | | | | | $0.15 | $0.60 |
|
|
134
137
|
| `edenai/groq/openai/gpt-oss-20b` | 131K | | | | | | $0.07 | $0.30 |
|
|
@@ -256,10 +259,10 @@ for await (const chunk of stream) {
|
|
|
256
259
|
| `edenai/vertex/gemini-3.6-flash` | 1.0M | | | | | | $0.75 | $4 |
|
|
257
260
|
| `edenai/vertex/gemini-3.6-flash@eu` | 1.0M | | | | | | $0.75 | $4 |
|
|
258
261
|
| `edenai/vertex/gemini-3.6-flash@us` | 1.0M | | | | | | $0.75 | $4 |
|
|
259
|
-
| `edenai/vertex/gemini-3.7-flash` | 1.0M | | | | | | $
|
|
260
|
-
| `edenai/vertex/gemini-3.7-flash@eu` | 1.0M | | | | | | $
|
|
261
|
-
| `edenai/vertex/gemini-3.7-flash@us` | 1.0M | | | | | | $
|
|
262
|
-
| `edenai/vertex/gemini-flash-latest` | 1.0M | | | | | | $
|
|
262
|
+
| `edenai/vertex/gemini-3.7-flash` | 1.0M | | | | | | $0.75 | $4 |
|
|
263
|
+
| `edenai/vertex/gemini-3.7-flash@eu` | 1.0M | | | | | | $0.75 | $4 |
|
|
264
|
+
| `edenai/vertex/gemini-3.7-flash@us` | 1.0M | | | | | | $0.75 | $4 |
|
|
265
|
+
| `edenai/vertex/gemini-flash-latest` | 1.0M | | | | | | $0.75 | $4 |
|
|
263
266
|
| `edenai/vertex/gemini-pro-latest` | 1.0M | | | | | | $2 | $12 |
|
|
264
267
|
| `edenai/xai/grok-4.20-0309-non-reasoning` | 1.0M | | | | | | $1 | $3 |
|
|
265
268
|
| `edenai/xai/grok-4.20-0309-reasoning` | 1.0M | | | | | | $1 | $3 |
|
|
@@ -38,7 +38,7 @@ for await (const chunk of stream) {
|
|
|
38
38
|
|
|
39
39
|
| Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
|
|
40
40
|
| ----------------------------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
|
|
41
|
-
| `fireworks-ai/accounts/fireworks/models/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.
|
|
41
|
+
| `fireworks-ai/accounts/fireworks/models/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.22 | $0.66 |
|
|
42
42
|
| `fireworks-ai/accounts/fireworks/models/deepseek-v4-pro-0813` | 1.0M | | | | | | $1 | $4 |
|
|
43
43
|
| `fireworks-ai/accounts/fireworks/models/glm-5p2` | 1.0M | | | | | | $1 | $4 |
|
|
44
44
|
| `fireworks-ai/accounts/fireworks/models/glm-5p3` | 1.0M | | | | | | $1 | $4 |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Kilo Gateway
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 362 Kilo Gateway models through Mastra's model router. Authentication is handled automatically using the `KILO_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Kilo Gateway documentation](https://kilo.ai).
|
|
10
10
|
|
|
@@ -62,6 +62,7 @@ for await (const chunk of stream) {
|
|
|
62
62
|
| `kilo/anthracite-org/magnum-v4-72b` | 33K | | | | | | $3 | $5 |
|
|
63
63
|
| `kilo/anthropic/claude-3-haiku` | 200K | | | | | | $0.25 | $1 |
|
|
64
64
|
| `kilo/anthropic/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
|
|
65
|
+
| `kilo/anthropic/claude-fable-5.1` | 1.0M | | | | | | $10 | $50 |
|
|
65
66
|
| `kilo/anthropic/claude-haiku-4.5` | 200K | | | | | | $1 | $5 |
|
|
66
67
|
| `kilo/anthropic/claude-opus-4` | 200K | | | | | | $15 | $75 |
|
|
67
68
|
| `kilo/anthropic/claude-opus-4.1` | 200K | | | | | | $15 | $75 |
|
|
@@ -338,7 +339,7 @@ for await (const chunk of stream) {
|
|
|
338
339
|
| `kilo/qwen/qwen3.7-flash` | 1.0M | | | | | | $0.03 | $0.13 |
|
|
339
340
|
| `kilo/qwen/qwen3.7-max` | 1.0M | | | | | | $1 | $4 |
|
|
340
341
|
| `kilo/qwen/qwen3.7-plus` | 1.0M | | | | | | $0.32 | $1 |
|
|
341
|
-
| `kilo/qwen/qwen3.8-2.4t-a95b` |
|
|
342
|
+
| `kilo/qwen/qwen3.8-2.4t-a95b` | 262K | | | | | | $2 | $6 |
|
|
342
343
|
| `kilo/qwen/qwen3.8-27b` | 1.0M | | | | | | $0.42 | $3 |
|
|
343
344
|
| `kilo/qwen/qwen3.8-flash` | 1.0M | | | | | | $0.15 | $0.47 |
|
|
344
345
|
| `kilo/qwen/qwen3.8-max` | 1.0M | | | | | | $2 | $6 |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# LLM Gateway
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 361 LLM Gateway models through Mastra's model router. Authentication is handled automatically using the `LLMGATEWAY_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [LLM Gateway documentation](https://llmgateway.io/docs).
|
|
10
10
|
|
|
@@ -65,6 +65,7 @@ for await (const chunk of stream) {
|
|
|
65
65
|
| `llmgateway-providers/alibaba/qwen3.8-max` | 1.0M | | | | | | $2 | $6 |
|
|
66
66
|
| `llmgateway-providers/alibaba/qwen35-397b-a17b` | 262K | | | | | | $0.60 | $4 |
|
|
67
67
|
| `llmgateway-providers/anthropic/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
|
|
68
|
+
| `llmgateway-providers/anthropic/claude-fable-5-1` | 1.0M | | | | | | $10 | $50 |
|
|
68
69
|
| `llmgateway-providers/anthropic/claude-haiku-4-5` | 200K | | | | | | $1 | $5 |
|
|
69
70
|
| `llmgateway-providers/anthropic/claude-haiku-4-5-20251001` | 200K | | | | | | $1 | $5 |
|
|
70
71
|
| `llmgateway-providers/anthropic/claude-opus-4-5-20251101` | 200K | | | | | | $5 | $25 |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# DevPass (LLM Gateway)
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 181 DevPass (LLM Gateway) models through Mastra's model router. Authentication is handled automatically using the `LLMGATEWAY_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [DevPass (LLM Gateway) documentation](https://llmgateway.io/docs).
|
|
10
10
|
|
|
@@ -40,6 +40,7 @@ for await (const chunk of stream) {
|
|
|
40
40
|
| ---------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
|
|
41
41
|
| `llmgateway/auto` | 128K | | | | | | — | — |
|
|
42
42
|
| `llmgateway/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
|
|
43
|
+
| `llmgateway/claude-fable-5-1` | 1.0M | | | | | | $10 | $50 |
|
|
43
44
|
| `llmgateway/claude-haiku-4-5` | 200K | | | | | | $1 | $5 |
|
|
44
45
|
| `llmgateway/claude-haiku-4-5-20251001` | 200K | | | | | | $1 | $5 |
|
|
45
46
|
| `llmgateway/claude-opus-4-1-20250805` | 200K | | | | | | $15 | $75 |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# NanoGPT
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 610 NanoGPT models through Mastra's model router. Authentication is handled automatically using the `NANO_GPT_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [NanoGPT documentation](https://docs.nano-gpt.com).
|
|
10
10
|
|
|
@@ -56,6 +56,7 @@ for await (const chunk of stream) {
|
|
|
56
56
|
| `nano-gpt/anthracite-org/magnum-v2-72b` | 16K | | | | | | $2 | $3 |
|
|
57
57
|
| `nano-gpt/anthracite-org/magnum-v4-72b` | 16K | | | | | | $2 | $3 |
|
|
58
58
|
| `nano-gpt/anthropic/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
|
|
59
|
+
| `nano-gpt/anthropic/claude-fable-5.1` | 1.0M | | | | | | $10 | $50 |
|
|
59
60
|
| `nano-gpt/anthropic/claude-fable-latest` | 1.0M | | | | | | $10 | $50 |
|
|
60
61
|
| `nano-gpt/anthropic/claude-haiku-latest` | 200K | | | | | | $1 | $5 |
|
|
61
62
|
| `nano-gpt/anthropic/claude-opus-4.6` | 1.0M | | | | | | $5 | $25 |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# OpenCode Zen
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 94 OpenCode Zen models through Mastra's model router. Authentication is handled automatically using the `OPENCODE_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [OpenCode Zen documentation](https://opencode.ai/docs/zen).
|
|
10
10
|
|
|
@@ -40,7 +40,6 @@ for await (const chunk of stream) {
|
|
|
40
40
|
| ------------------------------------------ | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
|
|
41
41
|
| `opencode/big-pickle` | 200K | | | | | | — | — |
|
|
42
42
|
| `opencode/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
|
|
43
|
-
| `opencode/claude-fable-5-1` | 1.0M | | | | | | $10 | $50 |
|
|
44
43
|
| `opencode/claude-haiku-4-5` | 200K | | | | | | $1 | $5 |
|
|
45
44
|
| `opencode/claude-opus-4-5` | 200K | | | | | | $5 | $25 |
|
|
46
45
|
| `opencode/claude-opus-4-6` | 1.0M | | | | | | $5 | $25 |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Requesty
|
|
6
6
|
|
|
7
|
-
Access
|
|
7
|
+
Access 142 Requesty models through Mastra's model router. Authentication is handled automatically using the `REQUESTY_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
Learn more in the [Requesty documentation](https://requesty.ai/solution/llm-routing/models).
|
|
10
10
|
|
|
@@ -69,7 +69,9 @@ for await (const chunk of stream) {
|
|
|
69
69
|
| `requesty/devstral-latest` | 256K | | | | | | $0.44 | $2 |
|
|
70
70
|
| `requesty/devstral-latest@eu` | 256K | | | | | | $0.44 | $2 |
|
|
71
71
|
| `requesty/fugu-ultra` | 1.0M | | | | | | $5 | $30 |
|
|
72
|
+
| `requesty/gemini-2.5-flash-lite@eu` | 1.0M | | | | | | $0.10 | $0.40 |
|
|
72
73
|
| `requesty/gemini-2.5-flash@eu` | 1.0M | | | | | | $0.30 | $3 |
|
|
74
|
+
| `requesty/gemini-2.5-pro@eu` | 1.0M | | | | | | $1 | $10 |
|
|
73
75
|
| `requesty/gemini-3-pro-image` | 1.0M | | | | | | $2 | $12 |
|
|
74
76
|
| `requesty/gemini-3.1-flash-image` | 131K | | | | | | $0.50 | $2 |
|
|
75
77
|
| `requesty/gemini-3.1-flash-lite` | 1.0M | | | | | | $0.25 | $2 |
|
|
@@ -106,7 +106,7 @@ const agent = new Agent({
|
|
|
106
106
|
|
|
107
107
|
**textFormat** (`'markdown' | 'plain'`): Dialect for the agent's final reply text. 'markdown' (the default) posts replies as markdown: adapters with native markdown rendering (Slack) render it directly, others convert it to their platform format. 'plain' posts replies as literal plain text, restoring the pre-markdown behavior for agents prompted to emit a platform dialect such as Slack mrkdwn. Applies to final reply text only; tool cards, error messages, and tripwire notices are unaffected. Native streaming is always markdown regardless of this setting. (Default: `'markdown'`)
|
|
108
108
|
|
|
109
|
-
**toolDisplay** (`'cards' | 'text' | 'timeline' | 'grouped' | 'hidden' | ToolDisplayFn`): How tool calls are rendered in the channel. "cards" posts per-tool running/result cards as rich Block Kit. "text" posts the same lifecycle as plain text (no Block Kit). "timeline" and "grouped" stream tool state as inline task\_update chunks (requires streaming: true; Slack only today — other adapters may render a placeholder). "hidden" executes tools silently. Pass a function to render tool events yourself; return { kind: "post", message } for a discrete post/edit, { kind: "stream", chunk } to push into the streaming widget, or undefined to skip rendering that event. Add openIfEmpty: false to a stream result when its chunk should only apply to an active streaming session. Approve/deny prompts
|
|
109
|
+
**toolDisplay** (`'cards' | 'text' | 'timeline' | 'grouped' | 'hidden' | ToolDisplayFn`): How tool calls are rendered in the channel. "cards" posts per-tool running/result cards as rich Block Kit. "text" posts the same lifecycle as plain text (no Block Kit). "timeline" and "grouped" stream tool state as inline task\_update chunks (requires streaming: true; Slack only today — other adapters may render a placeholder). "hidden" executes tools silently. Pass a function to render tool events yourself; return { kind: "post", message } for a discrete post/edit, { kind: "stream", chunk } to push into the streaming widget, or undefined to skip rendering that event. Add openIfEmpty: false to a stream result when its chunk should only apply to an active streaming session. Approve/deny prompts render as a separate built-in card in every string mode; a toolDisplay function receives the approval event and may replace the card by returning { kind: "post", message }. (Default: `'cards' ('grouped' for Slack)`)
|
|
110
110
|
|
|
111
111
|
**typingStatus** (`boolean | ((chunk: AgentChunkType, ctx: TypingStatusContext) => string | false | null | undefined | void)`): Control the platform typing indicator. true uses built-in defaults (is typing… on text, is calling {tool}… on tool-call, is waiting for approval… on tool-call-approval). false suppresses typing entirely — useful when a live streaming widget (e.g. toolDisplay: "grouped" in Slack) already conveys progress. Pass a function to set custom status copy per chunk; return a string to set the status, or false/null/undefined to leave it unchanged. Compose with defaultTypingStatus (exported from @mastra/core/channels) to fall back to defaults for chunks you don't handle. (Default: `true`)
|
|
112
112
|
|
|
@@ -139,7 +139,7 @@ toolDisplay: event => {
|
|
|
139
139
|
}
|
|
140
140
|
```
|
|
141
141
|
|
|
142
|
-
Approve/deny prompts (`requireApproval`)
|
|
142
|
+
Approve/deny prompts (`requireApproval`) render as a separate built-in card in every string mode, because inline task entries can't carry interactive buttons. With a `toolDisplay` function, the `approval` event is passed to your function in both streaming and static modes; return a non-blank `{ kind: 'post', message }` to replace the built-in card with your own message (for example, a localized one). Returning `undefined`, a blank message, or `{ kind: 'stream' }` falls back to the built-in card so the approval stays actionable.
|
|
143
143
|
|
|
144
144
|
```typescript
|
|
145
145
|
import { Agent } from '@mastra/core/agent'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/mcp-docs-server",
|
|
3
|
-
"version": "1.2.23-alpha.
|
|
3
|
+
"version": "1.2.23-alpha.13",
|
|
4
4
|
"description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"jsdom": "^26.1.0",
|
|
28
28
|
"local-pkg": "^1.1.2",
|
|
29
29
|
"zod": "^4.4.3",
|
|
30
|
-
"@mastra/
|
|
31
|
-
"@mastra/
|
|
30
|
+
"@mastra/mcp": "^1.17.3-alpha.1",
|
|
31
|
+
"@mastra/core": "1.64.0-alpha.6"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@hono/node-server": "^2.0.0",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"typescript": "^7.0.2",
|
|
46
46
|
"vitest": "4.1.10",
|
|
47
47
|
"@internal/lint": "0.0.129",
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
48
|
+
"@internal/types-builder": "0.0.104",
|
|
49
|
+
"@mastra/core": "1.64.0-alpha.6"
|
|
50
50
|
},
|
|
51
51
|
"homepage": "https://mastra.ai",
|
|
52
52
|
"repository": {
|