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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
  # Model Providers
6
6
 
7
- Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 8164 models from 217 providers through a single API.
7
+ Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 8152 models from 217 providers through a single API.
8
8
 
9
9
  ## Features
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![CrossModel logo](https://models.dev/logos/crossmodel.svg)CrossModel
6
6
 
7
- Access 69 CrossModel models through Mastra's model router. Authentication is handled automatically using the `CROSSMODEL_API_KEY` environment variable.
7
+ Access 70 CrossModel models through Mastra's model router. Authentication is handled automatically using the `CROSSMODEL_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [CrossModel documentation](https://www.crossmodel.ai/docs).
10
10
 
@@ -63,6 +63,7 @@ for await (const chunk of stream) {
63
63
  | `crossmodel/gemini/gemini-3.6-flash` | 1.0M | | | | | | $0.75 | $4 |
64
64
  | `crossmodel/gemini/gemini-3.7-flash` | 1.0M | | | | | | $0.75 | $4 |
65
65
  | `crossmodel/gemini/gemini-3.8-flash` | 1.0M | | | | | | $0.75 | $4 |
66
+ | `crossmodel/gemini/gemini-4-argon` | 1.0M | | | | | | $2 | $10 |
66
67
  | `crossmodel/minimax/minimax-m2.7` | 205K | | | | | | $0.33 | $1 |
67
68
  | `crossmodel/minimax/minimax-m3` | 1.0M | | | | | | $0.33 | $1 |
68
69
  | `crossmodel/moonshot/kimi-k2.6` | 262K | | | | | | $1 | $4 |
@@ -44,7 +44,7 @@ for await (const chunk of stream) {
44
44
  | `digitalocean/anthropic-claude-4.5-sonnet` | 200K | | | | | | $3 | $15 |
45
45
  | `digitalocean/anthropic-claude-4.6-sonnet` | 200K | | | | | | $3 | $15 |
46
46
  | `digitalocean/anthropic-claude-5-sonnet` | 1.0M | | | | | | $2 | $10 |
47
- | `digitalocean/anthropic-claude-5.5-haiku` | 1.0M | | | | | | $0.50 | $3 |
47
+ | `digitalocean/anthropic-claude-5.5-haiku` | 1.0M | | | | | | $0.10 | $0.50 |
48
48
  | `digitalocean/anthropic-claude-fable-5` | 1.0M | | | | | | $10 | $50 |
49
49
  | `digitalocean/anthropic-claude-fable-5.1` | 1.0M | | | | | | $10 | $50 |
50
50
  | `digitalocean/anthropic-claude-haiku-4.5` | 200K | | | | | | $1 | $5 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Eden AI logo](https://models.dev/logos/edenai.svg)Eden AI
6
6
 
7
- Access 326 Eden AI models through Mastra's model router. Authentication is handled automatically using the `EDENAI_API_KEY` environment variable.
7
+ Access 327 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
 
@@ -158,6 +158,7 @@ for await (const chunk of stream) {
158
158
  | `edenai/fireworks_ai/accounts/fireworks/models/inkling` | 1.0M | | | | | | $1 | $4 |
159
159
  | `edenai/fireworks_ai/gpt-oss-120b` | 131K | | | | | | $0.15 | $0.60 |
160
160
  | `edenai/flexai/DeepSeek-V4-Flash-0731` | 1.0M | | | | | | $0.02 | $0.27 |
161
+ | `edenai/flexai/DeepSeek-V4-Flash-0731@eu` | 1.0M | | | | | | $0.02 | $0.27 |
161
162
  | `edenai/flexai/DeepSeek-V4.1-Flash` | 1.0M | | | | | | $0.09 | $0.18 |
162
163
  | `edenai/flexai/gpt-oss-120b` | 131K | | | | | | $0.03 | $0.17 |
163
164
  | `edenai/flexai/gpt-oss-20b` | 131K | | | | | | $0.02 | $0.10 |
@@ -43,11 +43,11 @@ for await (const chunk of stream) {
43
43
  | `kilo/~anthropic/claude-opus-latest` | 1.0M | | | | | | $4 | $20 |
44
44
  | `kilo/~anthropic/claude-sonnet-latest` | 1.0M | | | | | | $2 | $10 |
45
45
  | `kilo/~deepseek/deepseek-flash-latest` | 1.0M | | | | | | $0.02 | $0.89 |
46
- | `kilo/~deepseek/deepseek-pro-latest` | 1.0M | | | | | | $0.23 | $8 |
46
+ | `kilo/~deepseek/deepseek-pro-latest` | 1.0M | | | | | | $0.13 | $8 |
47
47
  | `kilo/~deepseek/deepseek-v4-flash-latest` | 1.0M | | | | | | $0.01 | $0.58 |
48
48
  | `kilo/~google/gemini-flash-latest` | 1.0M | | | | | | $0.75 | $4 |
49
49
  | `kilo/~google/gemini-pro-latest` | 1.0M | | | | | | $2 | $12 |
50
- | `kilo/~moonshotai/kimi-latest` | 1.0M | | | | | | $0.54 | $14 |
50
+ | `kilo/~moonshotai/kimi-latest` | 1.0M | | | | | | $0.40 | $14 |
51
51
  | `kilo/~openai/gpt-astra-latest` | 1.1M | | | | | | $10 | $50 |
52
52
  | `kilo/~openai/gpt-luna-latest` | 1.1M | | | | | | $0.10 | $0.50 |
53
53
  | `kilo/~openai/gpt-mini-latest` | 400K | | | | | | $0.75 | $5 |
@@ -140,7 +140,7 @@ for await (const chunk of stream) {
140
140
  | `kilo/google/gemini-nano-banana-2.1` | 66K | | | | | | $2 | $8 |
141
141
  | `kilo/google/gemma-2-27b-it` | 8K | | | | | | $0.65 | $0.65 |
142
142
  | `kilo/google/gemma-3-12b-it` | 131K | | | | | | $0.05 | $0.15 |
143
- | `kilo/google/gemma-3-27b-it` | 131K | | | | | | $0.07 | $0.28 |
143
+ | `kilo/google/gemma-3-27b-it` | 131K | | | | | | $0.08 | $0.16 |
144
144
  | `kilo/google/gemma-3-4b-it` | 131K | | | | | | $0.05 | $0.10 |
145
145
  | `kilo/google/gemma-4-26b-a4b-it` | 262K | | | | | | $0.04 | $0.22 |
146
146
  | `kilo/google/gemma-4-31b-it` | 262K | | | | | | $0.09 | $0.34 |
@@ -384,9 +384,9 @@ for await (const chunk of stream) {
384
384
  | `kilo/tencent/hy-mt2-1.8b` | 8K | | | | | | $0.04 | $0.18 |
385
385
  | `kilo/tencent/hy-mt2-30b-a3b` | 8K | | | | | | $0.07 | $0.29 |
386
386
  | `kilo/tencent/hy-mt2-7b` | 8K | | | | | | $0.07 | $0.29 |
387
- | `kilo/tencent/hy3` | 262K | | | | | | $0.13 | $0.53 |
387
+ | `kilo/tencent/hy3` | 262K | | | | | | $0.08 | $0.33 |
388
388
  | `kilo/tencent/hy3-preview` | 262K | | | | | | $0.18 | $0.60 |
389
- | `kilo/tencent/hy4-preview` | 1.0M | | | | | | $0.83 | $3 |
389
+ | `kilo/tencent/hy4-preview` | 1.0M | | | | | | $0.75 | $2 |
390
390
  | `kilo/thedrummer/cydonia-24b-v4.1` | 131K | | | | | | $0.30 | $0.50 |
391
391
  | `kilo/thedrummer/skyfall-36b-v2` | 33K | | | | | | $0.55 | $0.80 |
392
392
  | `kilo/thedrummer/unslopnemo-12b` | 1.0M | | | | | | $0.40 | $0.40 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![LLM Gateway logo](https://models.dev/logos/llmgateway-providers.svg)LLM Gateway
6
6
 
7
- Access 445 LLM Gateway models through Mastra's model router. Authentication is handled automatically using the `LLMGATEWAY_API_KEY` environment variable.
7
+ Access 437 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
 
@@ -178,7 +178,6 @@ for await (const chunk of stream) {
178
178
  | `llmgateway-providers/cerebras/gpt-oss-120b` | 131K | | | | | | $0.35 | $0.75 |
179
179
  | `llmgateway-providers/cerebras/llama-3.3-70b-instruct` | 128K | | | | | | $0.85 | $1 |
180
180
  | `llmgateway-providers/cerebras/qwen3-235b-a22b-instruct-2507` | 262K | | | | | | $0.60 | $1 |
181
- | `llmgateway-providers/consensusprotocol/deepseek-v4-flash` | 524K | | | | | | $0.10 | $0.20 |
182
181
  | `llmgateway-providers/consensusprotocol/deepseek-v4.1-flash` | 1.0M | | | | | | $0.15 | $0.55 |
183
182
  | `llmgateway-providers/consensusprotocol/gemma-4-31b-it` | 262K | | | | | | $0.10 | $0.25 |
184
183
  | `llmgateway-providers/consensusprotocol/glm-5.3-flash` | 1.0M | | | | | | $0.10 | $0.25 |
@@ -221,8 +220,6 @@ for await (const chunk of stream) {
221
220
  | `llmgateway-providers/fireworks/glm-5.3-flash` | 1.0M | | | | | | $0.15 | $0.50 |
222
221
  | `llmgateway-providers/fireworks/kimi-k3` | 1.0M | | | | | | $3 | $15 |
223
222
  | `llmgateway-providers/fireworks/kimi-k3-fast` | 1.0M | | | | | | $5 | $23 |
224
- | `llmgateway-providers/gonka24/deepseek-v4-flash` | 390K | | | | | | $0.07 | $0.12 |
225
- | `llmgateway-providers/gonka24/glm-5.3-flash` | 200K | | | | | | $0.15 | $0.30 |
226
223
  | `llmgateway-providers/gonka24/minimax-m2.7` | 205K | | | | | | $0.08 | $0.32 |
227
224
  | `llmgateway-providers/google-ai-studio/gemini-2.5-flash` | 1.0M | | | | | | $0.30 | $3 |
228
225
  | `llmgateway-providers/google-ai-studio/gemini-2.5-flash-lite` | 1.0M | | | | | | $0.10 | $0.40 |
@@ -376,11 +373,8 @@ for await (const chunk of stream) {
376
373
  | `llmgateway-providers/perplexity/sonar` | 130K | | | | | | $0.25 | $3 |
377
374
  | `llmgateway-providers/quartz/gemini-3.1-pro-preview` | 1.0M | | | | | | $2 | $12 |
378
375
  | `llmgateway-providers/ranoai/deepseek-v4-flash` | 1.0M | | | | | | $0.14 | $0.28 |
379
- | `llmgateway-providers/reka-ai/deepseek-v4-flash` | 262K | | | | | | $0.11 | $0.66 |
380
376
  | `llmgateway-providers/reka-ai/deepseek-v4-pro` | 1.0M | | | | | | $1 | $3 |
381
377
  | `llmgateway-providers/reka-ai/glm-5.3` | 1.0M | | | | | | $1 | $4 |
382
- | `llmgateway-providers/reka-ai/glm-5.3-flash` | 262K | | | | | | $0.15 | $0.50 |
383
- | `llmgateway-providers/reka-ai/qwen3.8-27b` | 262K | | | | | | $0.41 | $3 |
384
378
  | `llmgateway-providers/reka-ai/reka-edge-2603` | 16K | | | | | | $0.10 | $0.10 |
385
379
  | `llmgateway-providers/runpod/kimi-k3` | 1.0M | | | | | | $3 | $15 |
386
380
  | `llmgateway-providers/runware/deepseek-v4-flash` | 1.0M | | | | | | $0.08 | $0.15 |
@@ -406,9 +400,7 @@ for await (const chunk of stream) {
406
400
  | `llmgateway-providers/scx-ai-gp/kimi-k2.7-code` | 262K | | | | | | $0.74 | $3 |
407
401
  | `llmgateway-providers/scx-ai-gp/kimi-k3` | 1.0M | | | | | | $3 | $16 |
408
402
  | `llmgateway-providers/scx-ai-gp/qwen3.8-max` | 1.0M | | | | | | $2 | $5 |
409
- | `llmgateway-providers/scx-ai/gemma-4-31b-it` | 131K | | | | | | $0.30 | $0.91 |
410
403
  | `llmgateway-providers/scx-ai/gpt-oss-120b` | 131K | | | | | | $0.17 | $0.55 |
411
- | `llmgateway-providers/scx-ai/llama-4-maverick-17b-instruct` | 131K | | | | | | $0.53 | $2 |
412
404
  | `llmgateway-providers/scx-ai/minimax-m2.7` | 197K | | | | | | $0.48 | $2 |
413
405
  | `llmgateway-providers/scx-ai/qwen3-32b` | 33K | | | | | | $0.36 | $0.87 |
414
406
  | `llmgateway-providers/tencent/deepseek-v4-flash` | 1.0M | | | | | | $0.14 | $0.28 |
@@ -60,7 +60,7 @@ for await (const chunk of stream) {
60
60
  | `llmgateway/codestral-2508` | 256K | | | | | | $0.30 | $0.90 |
61
61
  | `llmgateway/custom` | 128K | | | | | | — | — |
62
62
  | `llmgateway/deepseek-v3.2` | 164K | | | | | | $0.26 | $0.38 |
63
- | `llmgateway/deepseek-v4-flash` | 1.1M | | | | | | $0.07 | $0.12 |
63
+ | `llmgateway/deepseek-v4-flash` | 1.1M | | | | | | $0.08 | $0.15 |
64
64
  | `llmgateway/deepseek-v4-pro` | 1.1M | | | | | | $0.43 | $0.87 |
65
65
  | `llmgateway/deepseek-v4.1-flash` | 1.1M | | | | | | $0.14 | $0.54 |
66
66
  | `llmgateway/ernie-4.5-vl-424b-a47b` | 123K | | | | | | $0.42 | $1 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![NanoGPT logo](https://models.dev/logos/nano-gpt.svg)NanoGPT
6
6
 
7
- Access 618 NanoGPT models through Mastra's model router. Authentication is handled automatically using the `NANO_GPT_API_KEY` environment variable.
7
+ Access 612 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
 
@@ -97,7 +97,6 @@ for await (const chunk of stream) {
97
97
  | `nano-gpt/anthropic/claude-sonnet-latest` | 1.0M | | | | | | $2 | $10 |
98
98
  | `nano-gpt/arcee-ai/trinity-large-thinking` | 262K | | | | | | $0.25 | $0.90 |
99
99
  | `nano-gpt/asi1-mini` | 128K | | | | | | $1 | $1 |
100
- | `nano-gpt/ateron/gemma-4-dark-thoughts-v2-31b` | 66K | | | | | | $0.10 | $0.45 |
101
100
  | `nano-gpt/auto-model` | 1.0M | | | | | | — | — |
102
101
  | `nano-gpt/auto-model-basic` | 1.0M | | | | | | $10 | $20 |
103
102
  | `nano-gpt/auto-model-premium` | 1.0M | | | | | | $10 | $20 |
@@ -130,7 +129,7 @@ for await (const chunk of stream) {
130
129
  | `nano-gpt/deepseek-reasoner` | 64K | | | | | | $0.40 | $2 |
131
130
  | `nano-gpt/deepseek-reasoner-cheaper` | 128K | | | | | | $0.40 | $2 |
132
131
  | `nano-gpt/deepseek-v3-0324` | 128K | | | | | | $0.20 | $0.77 |
133
- | `nano-gpt/deepseek/deepseek-latest` | 1.0M | | | | | | $0.48 | $2 |
132
+ | `nano-gpt/deepseek/deepseek-latest` | 1.0M | | | | | | $1 | $3 |
134
133
  | `nano-gpt/deepseek/deepseek-v3.2` | 163K | | | | | | $0.28 | $0.42 |
135
134
  | `nano-gpt/deepseek/deepseek-v3.2:thinking` | 163K | | | | | | $0.28 | $0.42 |
136
135
  | `nano-gpt/deepseek/deepseek-v4-flash` | 1.0M | | | | | | $0.14 | $0.28 |
@@ -143,8 +142,8 @@ for await (const chunk of stream) {
143
142
  | `nano-gpt/deepseek/deepseek-v4-flash-vision-exp-cybersecurity` | 1.0M | | | | | | $0.15 | $0.60 |
144
143
  | `nano-gpt/deepseek/deepseek-v4-flash:thinking` | 1.0M | | | | | | $0.14 | $0.28 |
145
144
  | `nano-gpt/deepseek/deepseek-v4-pro` | 1.0M | | | | | | $1 | $2 |
146
- | `nano-gpt/deepseek/deepseek-v4-pro-0813` | 1.0M | | | | | | $0.48 | $2 |
147
- | `nano-gpt/deepseek/deepseek-v4-pro-0813:thinking` | 1.0M | | | | | | $0.48 | $2 |
145
+ | `nano-gpt/deepseek/deepseek-v4-pro-0813` | 1.0M | | | | | | $1 | $3 |
146
+ | `nano-gpt/deepseek/deepseek-v4-pro-0813:thinking` | 1.0M | | | | | | $1 | $3 |
148
147
  | `nano-gpt/deepseek/deepseek-v4-pro:thinking` | 1.0M | | | | | | $1 | $2 |
149
148
  | `nano-gpt/deepseek/deepseek-v4.1-flash` | 1.0M | | | | | | $0.13 | $0.52 |
150
149
  | `nano-gpt/deepseek/deepseek-v4.1-flash:thinking` | 1.0M | | | | | | $0.13 | $0.52 |
@@ -339,8 +338,8 @@ for await (const chunk of stream) {
339
338
  | `nano-gpt/moonshotai/kimi-k2-thinking` | 262K | | | | | | $0.60 | $3 |
340
339
  | `nano-gpt/moonshotai/kimi-k2.5` | 262K | | | | | | $0.38 | $2 |
341
340
  | `nano-gpt/moonshotai/kimi-k2.5:thinking` | 262K | | | | | | $0.38 | $2 |
342
- | `nano-gpt/moonshotai/kimi-k2.6` | 262K | | | | | | $0.44 | $2 |
343
- | `nano-gpt/moonshotai/kimi-k2.6:thinking` | 262K | | | | | | $0.44 | $2 |
341
+ | `nano-gpt/moonshotai/kimi-k2.6` | 262K | | | | | | $0.50 | $3 |
342
+ | `nano-gpt/moonshotai/kimi-k2.6:thinking` | 262K | | | | | | $0.50 | $3 |
344
343
  | `nano-gpt/moonshotai/kimi-k2.7-code` | 262K | | | | | | $0.67 | $3 |
345
344
  | `nano-gpt/moonshotai/kimi-k2.7-code-highspeed` | 262K | | | | | | $2 | $8 |
346
345
  | `nano-gpt/moonshotai/kimi-k3` | 1.0M | | | | | | $2 | $10 |
@@ -351,10 +350,7 @@ for await (const chunk of stream) {
351
350
  | `nano-gpt/nanogpt/coding-router:low` | 1.0M | | | | | | $0.14 | $0.28 |
352
351
  | `nano-gpt/nanogpt/coding-router:max` | 1.0M | | | | | | $5 | $30 |
353
352
  | `nano-gpt/nanogpt/coding-router:medium` | 1.0M | | | | | | $0.14 | $0.28 |
354
- | `nano-gpt/nbeerbower/gemma4-gutenberg-31b` | 66K | | | | | | $0.10 | $0.45 |
355
353
  | `nano-gpt/NeverSleep/Lumimaid-v0.2-70B` | 16K | | | | | | $1 | $2 |
356
- | `nano-gpt/nimbz/gemma-4-giftige-blume-31b-v2` | 66K | | | | | | $0.10 | $0.45 |
357
- | `nano-gpt/nimbz/schattenblume-31b` | 66K | | | | | | $0.10 | $0.45 |
358
354
  | `nano-gpt/nothingiisreal/L3.1-70B-Celeste-V0.1-BF16` | 33K | | | | | | $0.49 | $0.49 |
359
355
  | `nano-gpt/NousResearch/hermes-3-llama-3.1-70b` | 66K | | | | | | $0.41 | $0.41 |
360
356
  | `nano-gpt/NousResearch/hermes-4-405b` | 128K | | | | | | $0.30 | $1 |
@@ -529,7 +525,6 @@ for await (const chunk of stream) {
529
525
  | `nano-gpt/shisa-ai/shisa-v2-llama3.3-70b` | 128K | | | | | | $0.50 | $0.50 |
530
526
  | `nano-gpt/shisa-ai/shisa-v2.1-llama3.3-70b` | 33K | | | | | | $0.50 | $0.50 |
531
527
  | `nano-gpt/soob3123/amoral-gemma3-27B-v2` | 33K | | | | | | $0.30 | $0.30 |
532
- | `nano-gpt/soob3123/GrayLine-Qwen3-8B` | 33K | | | | | | $0.30 | $0.30 |
533
528
  | `nano-gpt/soob3123/Veiled-Calla-12B` | 33K | | | | | | $0.30 | $0.30 |
534
529
  | `nano-gpt/Steelskull/L3.3-Cu-Mai-R1-70b` | 33K | | | | | | $0.49 | $0.49 |
535
530
  | `nano-gpt/Steelskull/L3.3-Electra-R1-70b` | 33K | | | | | | $0.70 | $0.70 |
@@ -575,7 +570,6 @@ for await (const chunk of stream) {
575
570
  | `nano-gpt/TheDrummer/Cydonia-24B-v4.3` | 131K | | | | | | $0.12 | $0.15 |
576
571
  | `nano-gpt/TheDrummer/Magidonia-24B-v4.3` | 33K | | | | | | $0.10 | $0.12 |
577
572
  | `nano-gpt/TheDrummer/Rocinante-12B-v1.1` | 16K | | | | | | $0.41 | $0.59 |
578
- | `nano-gpt/TheDrummer/Skyfall-31B-v4.2` | 16K | | | | | | $0.12 | $0.15 |
579
573
  | `nano-gpt/TheDrummer/skyfall-36b-v2` | 33K | | | | | | $0.55 | $0.80 |
580
574
  | `nano-gpt/TheDrummer/UnslopNemo-12B-v4.1` | 8K | | | | | | $0.49 | $0.49 |
581
575
  | `nano-gpt/thinkingmachines/inkling` | 1.0M | | | | | | $1 | $4 |
@@ -59,7 +59,6 @@ for await (const chunk of stream) {
59
59
  | `opencode/deepseek-v4-flash-vision-exp` | 1.0M | | | | | | $0.14 | $0.28 |
60
60
  | `opencode/deepseek-v4-pro` | 1.0M | | | | | | $2 | $4 |
61
61
  | `opencode/deepseek-v4.1-flash` | 1.0M | | | | | | $0.30 | $1 |
62
- | `opencode/exo-free` | 1.0M | | | | | | — | — |
63
62
  | `opencode/gemini-3-flash` | 1.0M | | | | | | $0.50 | $3 |
64
63
  | `opencode/gemini-3.1-pro` | 1.0M | | | | | | $2 | $12 |
65
64
  | `opencode/gemini-3.5-flash` | 1.0M | | | | | | $2 | $9 |
@@ -105,8 +104,6 @@ for await (const chunk of stream) {
105
104
  | `opencode/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
106
105
  | `opencode/kimi-k2.7-code` | 262K | | | | | | $0.95 | $4 |
107
106
  | `opencode/kimi-k3` | 1.0M | | | | | | $3 | $15 |
108
- | `opencode/ling-3.0-flash-fin-free` | 262K | | | | | | — | — |
109
- | `opencode/ling-3.1-flash-free` | 262K | | | | | | — | — |
110
107
  | `opencode/longcat-2.5-preview-free` | 1.0M | | | | | | — | — |
111
108
  | `opencode/mimo-v2.6-flash-free` | 200K | | | | | | — | — |
112
109
  | `opencode/minimax-m2.5` | 205K | | | | | | $0.30 | $1 |
@@ -56,7 +56,7 @@ for await (const chunk of stream) {
56
56
  | `wandb/openai/gpt-oss-20b` | 131K | | | | | | $0.03 | $0.13 |
57
57
  | `wandb/Qwen/Qwen3.6-35B-A3B` | 262K | | | | | | $0.25 | $1 |
58
58
  | `wandb/Qwen/Qwen3.8-27B` | 262K | | | | | | $0.40 | $3 |
59
- | `wandb/zai-org/GLM-5.2` | 1.0M | | | | | | $0.76 | $2 |
59
+ | `wandb/zai-org/GLM-5.2` | 1.0M | | | | | | $0.62 | $2 |
60
60
  | `wandb/zai-org/GLM-5.3-Flash` | 1.0M | | | | | | $0.15 | $0.50 |
61
61
 
62
62
  Model availability, capabilities, context windows, and pricing are sourced from [models.dev](https://models.dev) and may change.
@@ -1655,12 +1655,20 @@ mastra api trace query <input>
1655
1655
  mastra api trace query '{"timeRange":{"from":"2026-08-01T00:00:00.000Z","to":"2026-08-08T00:00:00.000Z"}}'
1656
1656
  ```
1657
1657
 
1658
- Inspect the target server's exact request contract before constructing a query:
1658
+ Inspect the command with:
1659
1659
 
1660
1660
  ```bash
1661
- mastra api trace query --schema
1661
+ mastra api trace query --help
1662
1662
  ```
1663
1663
 
1664
+ For supported fields, operators, and request options, see [Trace queries](https://mastra.ai/reference/observability/tracing/trace-query). For a local Mastra server, you can also inspect its request and response schemas:
1665
+
1666
+ ```bash
1667
+ mastra api --url http://localhost:4111 trace query --schema
1668
+ ```
1669
+
1670
+ Mastra Platform doesn't currently expose the schema endpoint used by `--schema`. To find fields and values recorded in your project, use [field and value discovery](https://mastra.ai/reference/observability/tracing/trace-query).
1671
+
1664
1672
  The response remains nested under `data` to preserve cursor pagination:
1665
1673
 
1666
1674
  ```json
@@ -1672,7 +1680,7 @@ The response remains nested under `data` to preserve cursor pagination:
1672
1680
  }
1673
1681
  ```
1674
1682
 
1675
- Each invocation makes one query. Pass a non-null `data.page.next` value back as `page.after` in the next query. See [Trace queries](https://mastra.ai/reference/observability/tracing/trace-query) for supported fields and operators, recursive predicates, limits, pagination, and errors. `--schema` describes the request structure, while the reference lists supported predicate paths and operators.
1683
+ Each invocation makes one query. Pass a non-null `data.page.next` value back as `page.after` in the next query. See [Pagination and errors](https://mastra.ai/reference/observability/tracing/trace-query) for pagination modes, cursor handling, and errors.
1676
1684
 
1677
1685
  To load a numbered page and then poll, keep the same time range and predicate in both requests:
1678
1686
 
@@ -45,7 +45,7 @@ const completeTrace = await mastraClient.getTrace(traces.spans[0].traceId)
45
45
 
46
46
  ## Listing traces for a list view
47
47
 
48
- `listTracesLight()` returns the same rows as a trace list, without the `input`, `output` and `attributes` payloads. Each row carries a short `inputPreview` string instead, so a list can render a preview column without transferring the whole prompt, plus `threadId` and `resourceId` for the memory context columns.
48
+ `listTracesLight()` returns the same rows as a trace list, without the `input`, `output` and `attributes` payloads. Each row carries short `inputPreview`, `outputPreview` and `errorPreview` strings instead (at most 100 characters, ending with `…` when cut), so a list can render preview columns without transferring the whole payload, plus `threadId` and `resourceId` for the memory context columns.
49
49
 
50
50
  Prefer it whenever you are rendering many traces at once, and fetch the full record only when a row is opened:
51
51
 
@@ -67,7 +67,7 @@ It accepts the same filtering, ordering and delta-polling arguments as `listTrac
67
67
 
68
68
  ## Querying traces
69
69
 
70
- `queryTraces()` finds completed logical traces using trace fields and conditions over related spans. Every query requires an ISO timestamp range of at most 31 days.
70
+ `queryTraces()` finds completed logical traces using trace fields and conditions over related spans. Every query requires an ISO timestamp range.
71
71
 
72
72
  ```typescript
73
73
  const result = await mastraClient.queryTraces({
@@ -72,6 +72,8 @@ const { controller } = await mountAgentControllerOnMastra({ mastra })
72
72
 
73
73
  **disabledTools** (`string[]`): Tools removed from the dynamic tool set before exposure to the model.
74
74
 
75
+ **disableBuiltinTools** (`BuiltinToolId[]`): Agent controller built-in tools (for example, 'submit\_plan') removed from every session. Tool guidance skips disabled tools, and plan mode writes the plan file instead of calling 'submit\_plan' when it's disabled.
76
+
75
77
  **storage** (`StorageConfig`): Custom storage config instead of the auto-detected default.
76
78
 
77
79
  **workspace** (`AgentControllerConfig["workspace"]`): Override the workspace. (Default: `local filesystem + local sandbox based on the detected project`)
@@ -93,6 +93,8 @@ OM performs thresholding with fast local token estimation. Text uses `tokenx`, a
93
93
 
94
94
  **observation.bufferOnIdle** (`boolean`): Run background observation buffering when an agent turn ends and the agent becomes idle. This is separate from bufferTokens, which controls step-time async buffering. Set this to true to buffer short idle turns without waiting for the next turn or the messageTokens threshold.
95
95
 
96
+ **observation.observeOnContextOverflow** (`boolean`): Recover when the model provider rejects a request for exceeding its context window. Provider token counts can be higher than Observational Memory's local estimate, for example with attachments or after switching to a model with a smaller window, so a request can overflow before the messageTokens threshold is reached. When this happens, Observational Memory activates buffered observations, observes every pending message regardless of the threshold, and retries the request once with the smaller context. Set to false to let the error reach the caller instead.
97
+
96
98
  **observation.bufferActivation** (`number`): How much of the message window to clear when buffered observations activate. Values between 0 and 1 are the fraction of messageTokens to remove: 0.8 removes \~80% of the message history and keeps \~20% (6k tokens with the default 30k). Values of 1000 or more are the token count to keep: 4000 keeps \~4k message tokens after activation. Note the direction flips: a higher ratio removes more history, while a higher token count keeps more.
97
99
 
98
100
  **observation.activateAfterIdle** (`number | string | false | "auto" | Record<string, number | string | false | "auto">`): Time before buffered observations are forced to activate after inactivity. Accepts milliseconds, a duration string, "auto" for a provider-aware prompt cache TTL, false, or an object of per-provider TTLs. An object replaces the top-level value and is not merged with it. If unset, the top-level activateAfterIdle value is used for observations. Set false to disable the top-level idle setting for observations. Currently only applied when using the standalone ObservationalMemory class; new Memory(...) applies the top-level activateAfterIdle only.
@@ -777,6 +779,17 @@ The standalone `ObservationalMemory` class accepts all the same options as the `
777
779
 
778
780
  **obscureThreadIds** (`boolean`): When enabled, thread IDs are hashed before being included in observation context. This prevents the LLM from recognizing patterns in thread identifiers. Automatically enabled when using resource scope through the Memory class. (Default: `false`)
779
781
 
782
+ ### Forcing observation
783
+
784
+ `observe()` only observes once pending tokens reach the observation threshold. Pass `force: true` to observe pending messages regardless of the threshold. The bypass applies to that call only and isn't saved to the record's config.
785
+
786
+ ```typescript
787
+ const result = await om.observe({ threadId, resourceId, force: true })
788
+ // result.observed: true if pending messages were observed
789
+ ```
790
+
791
+ Agents don't need this to recover from context-window errors. `observation.observeOnContextOverflow` handles that automatically.
792
+
780
793
  ## Recall tool
781
794
 
782
795
  When `retrieval` is truthy, Mastra registers a `recall` tool that pages through raw messages behind observation group ranges. With the default resource scope, the tool can list threads (`mode: "threads"`) and browse another thread through `threadId`. It also supports cross-thread search. Set `retrieval: { vector: true }` for semantic search (`mode: "search"`), or use `scope: 'thread'` to restrict the tool to the current thread. The tool is automatically added to the agent.
@@ -8,7 +8,7 @@ Use `queryTraces()`, `mastra api trace query`, or `POST /api/observability/trace
8
8
 
9
9
  For example, find traces with a failed tool call or a duration above a threshold. Each result represents a trace. Use its `traceId` to [retrieve the full trace](https://mastra.ai/reference/client-js/observability).
10
10
 
11
- The endpoint uses the same authentication as other observability routes and requires the `observability:read` permission. The configured observability store must support trace queries. Every query requires a time range of at most 31 days.
11
+ The endpoint uses the same authentication as other observability routes and requires the `observability:read` permission. The configured observability store must support trace queries. Every query requires a time range.
12
12
 
13
13
  For hosted traces, see [Query observability data on Mastra Platform](https://mastra.ai/docs/mastra-platform/observability) for project credentials and regional endpoints.
14
14
 
@@ -74,14 +74,19 @@ mastra api --url http://localhost:4111 trace query '{
74
74
 
75
75
  The explicit `--url` targets a local Mastra server. Without it, observability commands default to `https://observability.mastra.ai`, even when a local server is running. See [CLI target resolution](https://mastra.ai/reference/cli/mastra) for authentication and regional endpoints. The target server and configured store must support the requested query capabilities.
76
76
 
77
- Inspect the command and the target server's request and response schemas with:
77
+ Inspect the command with:
78
78
 
79
79
  ```bash
80
80
  mastra api trace query --help
81
+ ```
82
+
83
+ For a local Mastra server, inspect its request and response schemas with:
84
+
85
+ ```bash
81
86
  mastra api --url http://localhost:4111 trace query --schema
82
87
  ```
83
88
 
84
- `--schema` describes the request structure. Use [Fields and operators](#fields-and-operators) for the supported predicate paths and operators.
89
+ Mastra Platform doesn't currently expose the schema endpoint used by `--schema`. Use [Request fields](#request-fields) and [Fields and operators](#fields-and-operators) to construct queries for either target. To find fields and values recorded in your project, use [field and value discovery](#discover-fields-and-values).
85
90
 
86
91
  ## Send an HTTP request
87
92
 
@@ -115,16 +120,16 @@ curl --request POST \
115
120
 
116
121
  ## Request fields
117
122
 
118
- | Field | Required | Description |
119
- | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
120
- | `timeRange` | Yes | Trace start-time boundary. `from` is inclusive and `to` is exclusive. Both values must be ISO timestamps, `from` must be earlier than `to`, and the range can't exceed 31 days. |
121
- | `where` | No | Recursive trace predicate. Supports scalar conditions and `spans.some` or `spans.none` clauses. |
122
- | `orderBy` | No | One item ordering results by `startedAt` or `endedAt`, in `asc` or `desc` order. Defaults to `startedAt desc`. Not accepted in delta mode. |
123
- | `page` | No | `{ limit, after }`. `limit` defaults to 100 and has a maximum of 1000. Pass the opaque `page.next` value as `after`. |
124
- | `pagination` | No | Numbered pages: `{ page, perPage }`. Defaults to page 0 and 10 results. `perPage` has a maximum of 100. |
125
- | `mode` | No | Set to `'delta'` to poll using a delta cursor instead of `page` or `pagination`. |
126
- | `after` | No | Delta mode only. Opaque `deltaCursor` from a numbered page or previous poll. Omit to establish the current watermark. |
127
- | `limit` | No | Delta mode only. Maximum results per batch. Defaults to 10 and has a maximum of 100. |
123
+ | Field | Required | Description |
124
+ | ------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
125
+ | `timeRange` | Yes | Trace start-time boundary. `from` is inclusive and `to` is exclusive. Both values must be ISO timestamps, and `from` must be earlier than `to`. |
126
+ | `where` | No | Recursive trace predicate. Supports scalar conditions and `spans.some` or `spans.none` clauses. |
127
+ | `orderBy` | No | One item ordering results by `startedAt` or `endedAt`, in `asc` or `desc` order. Defaults to `startedAt desc`. Not accepted in delta mode. |
128
+ | `page` | No | `{ limit, after }`. `limit` defaults to 100 and has a maximum of 1000. Pass the opaque `page.next` value as `after`. |
129
+ | `pagination` | No | Numbered pages: `{ page, perPage }`. Defaults to page 0 and 10 results. `perPage` has a maximum of 100. |
130
+ | `mode` | No | Set to `'delta'` to poll using a delta cursor instead of `page` or `pagination`. |
131
+ | `after` | No | Delta mode only. Opaque `deltaCursor` from a numbered page or previous poll. Omit to establish the current watermark. |
132
+ | `limit` | No | Delta mode only. Maximum results per batch. Defaults to 10 and has a maximum of 100. |
128
133
 
129
134
  Unknown fields are rejected. Requests can't select a projection, declare joins, request counts or measures, or control authorization. Request bodies are limited to 256 KiB.
130
135
 
@@ -134,7 +139,6 @@ The planner rejects a query before storage execution when it exceeds any of thes
134
139
 
135
140
  | Input | Maximum |
136
141
  | ----------------------------------------- | ----------------- |
137
- | Trace selection `timeRange` | 31 days |
138
142
  | Predicate nesting depth | 12 levels |
139
143
  | Predicate nodes | 100 |
140
144
  | Related `spans` clauses | 8 total |
@@ -594,7 +598,7 @@ Value suggestions are available for these canonical fields:
594
598
 
595
599
  Each executable top-level string `metadata.<key>` field also supports value suggestions in the `trace` scope. Identifiers, timestamps, durations, errors, and version IDs don't. The fields response still includes canonical fields with `valueSuggestions: false`. The values endpoint rejects those paths with `422 TRACE_QUERY_INVALID`.
596
600
 
597
- Both discovery requests require a half-open time range of at most 31 days. They use the same current-record semantics as `queryTraces()`: qualifying completed roots satisfy `from <= startedAt < to`, and related values come only from current records joined to those roots by `traceId`. Discovery doesn't accept or apply a draft `where` predicate.
601
+ Both discovery requests require a half-open time range. They use the same current-record semantics as `queryTraces()`: qualifying completed roots satisfy `from <= startedAt < to`, and related values come only from current records joined to those roots by `traceId`. Discovery doesn't accept or apply a draft `where` predicate.
598
602
 
599
603
  `search` defaults to the empty string, is trimmed, and matches case-insensitive literal substrings. Characters such as `%` and `_` have no wildcard meaning. An empty search returns the most frequent results. `limit` defaults to 25 and has a maximum of 100. Both endpoints fetch one extra result to set their truncation flag, but don't provide a cursor. When a flag is `true`, refine `search`. It doesn't imply that a next page is available. No matches return an empty array and `false` truncation.
600
604
 
@@ -29,7 +29,7 @@ A supplied `ProviderHistoryCompat` is used instead of the default. The default i
29
29
 
30
30
  The placement decides which half of the processor works:
31
31
 
32
- - **Reactive rules need `errorProcessors`.** On the standard loop, `processAPIError` runs from any of the three lists, so an input-processor registration does repair the message list, but the retry it asks for is only honored when the agent has a retry budget. With the default error processors in place the resolved list is non-empty, so a safety cap of `3` applies. The budget is left `undefined` only when the caller runs with no error processors at all (`errorProcessorDefaults: false` with none configured) and doesn't set `maxProcessorRetries` explicitly. Registered only as an input processor in that no-budget state, a reactive rule repairs the history and the request still fails. On the durable path the API-error pass additionally requires a non-empty `errorProcessors` list. If that list is empty, an input-processor registration can't trigger reactive recovery there at all, even with `maxProcessorRetries` set.
32
+ - **Reactive rules need `errorProcessors`.** An agent wraps its input processors in a single processor workflow, and the API-error pass only runs `processAPIError` on error processors, so an instance registered only in `inputProcessors` never runs its reactive rules.
33
33
  - **Preemptive rules run from either list.** `processLLMRequest` runs over the input processors and over the resolved error processors, so a `ProviderHistoryCompat` in `errorProcessors` gets its prompt rewrites as well as its reactive recovery. An instance registered in `inputProcessors` runs once, in its input position.
34
34
 
35
35
  Registering in `errorProcessors` alone, as the example above does, covers both halves. Double registration can't cause a double retry: the runner stops at the first processor that asks for one, and each reactive rule bails once `retryCount` is above zero, so a repaired turn is attempted exactly once more.
@@ -28,7 +28,7 @@ export const agent = new Agent({
28
28
 
29
29
  Set `maxProcessorRetries` alongside a `maxRetries` above `3`, because the agent stops error-processor retries at `3` when it's unset. See [Retry limits](#retry-limits).
30
30
 
31
- To run only the processors you configure, with none of the defaults merged in, set `errorProcessorDefaults: false`. Without an `errorProcessors` list, the agent then runs no error processors. An empty `errorProcessors` list still gets the defaults. Supplying your own processor for all three default ids replaces every default with your own implementation.
31
+ To run only the processors you configure, with none of the defaults merged in, set `errorProcessorDefaults: false`. Without an `errorProcessors` list, the agent then runs only the error processors its memory contributes, if any. When memory contributes one, the retry cap of `3` applies. See [Error processors are enabled by default](https://mastra.ai/docs/agents/processors). An empty agent-level `errorProcessors` list still gets the defaults. A call-time `errorProcessors: []` replaces the resolved list instead, though the agent still runs the error processors its memory contributes. Supplying your own processor for all three default ids replaces every default with your own implementation.
32
32
 
33
33
  ## How it works
34
34
 
@@ -41,7 +41,7 @@ const toolSearch = new ToolSearchProcessor({
41
41
 
42
42
  **options.search.autoLoad** (`boolean`): When true, tools returned by search\_tools are activated immediately as part of the search. The load\_tool meta-tool is not exposed, collapsing the two-step search then load flow into a single search step. Discovered tools become available on the next turn. Keep topK conservative since every match is activated.
43
43
 
44
- **options.storage** (`'in-memory' | 'context'`): Where loaded-tool state lives. 'in-memory' (default) tracks loaded tools in an in-memory map per thread with TTL cleanup (see ttl); state is lost on restart and anonymous requests share a 'default' entry. 'context' derives loaded state from the conversation messages — a tool is loaded while a search\_tools/load\_tool result naming it remains in the messages; it is restart-safe, requires no memory, and de-loads automatically once that result is no longer present in the messages. The 'context' store is opt-in.
44
+ **options.storage** (`'in-memory' | 'context'`): Where loaded-tool state lives. 'in-memory' (default) tracks loaded tools in an in-memory map per thread with TTL cleanup (see ttl); state is lost on restart and anonymous requests share a 'default' entry. 'context' derives loaded state from the conversation messages — a tool is loaded while a search\_tools/load\_tool result naming it remains in the messages; it works without memory (same-process only, and only for requests with a real thread ID), survives a restart whenever the messages are available again (memory with message history, or the caller resending the conversation), and de-loads automatically once that result is no longer present in the messages. The 'context' store is opt-in.
45
45
 
46
46
  **options.ttl** (`number`): Time-to-live for in-memory thread state, in milliseconds. Only applies to the default storage: 'in-memory' store; after this duration of inactivity thread state is cleaned up. Set to 0 to disable cleanup. Ignored by the 'context' store.
47
47
 
@@ -238,8 +238,8 @@ Use `clearState`, `clearAllState`, `getStateStats`, and `cleanupNow` to inspect
238
238
 
239
239
  Loaded state is derived from the conversation messages: a tool is loaded while a `search_tools` or `load_tool` result naming it remains in the messages. This mode:
240
240
 
241
- - Requires no memory configuration.
242
- - Is restart-safe: the durable record is the persisted message history.
241
+ - Works without memory configuration. Without memory, loaded tools are kept for the current process only, and only for requests with a real thread ID; anonymous requests retain nothing between calls unless the caller resends the relevant messages.
242
+ - Survives a restart whenever the messages are available again: from memory with message history, or because the caller resends the conversation. Without memory, a restart restores only what's in the messages the caller sends.
243
243
  - De-loads a tool automatically once that result is no longer present in the messages.
244
244
 
245
245
  ```typescript
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mcp-docs-server",
3
- "version": "1.3.8-alpha.3",
3
+ "version": "1.3.8-alpha.4",
4
4
  "description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,8 +26,8 @@
26
26
  "@mastra/mcp-legacy": "npm:@mastra/mcp@^1.18.0",
27
27
  "local-pkg": "^1.1.2",
28
28
  "zod": "^4.6.4",
29
- "@mastra/mcp": "^2.4.1-alpha.0",
30
- "@mastra/core": "1.78.0-alpha.2"
29
+ "@mastra/core": "1.78.0-alpha.3",
30
+ "@mastra/mcp": "^2.4.1-alpha.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@hono/node-server": "^2.0.0",
@@ -43,9 +43,9 @@
43
43
  "tsx": "^4.23.1",
44
44
  "typescript": "^7.0.2",
45
45
  "vitest": "4.1.11",
46
- "@mastra/core": "1.78.0-alpha.2",
47
46
  "@internal/types-builder": "0.0.118",
48
- "@internal/lint": "0.0.143"
47
+ "@internal/lint": "0.0.143",
48
+ "@mastra/core": "1.78.0-alpha.3"
49
49
  },
50
50
  "homepage": "https://mastra.ai",
51
51
  "repository": {