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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/.docs/docs/mastra-platform/connect/channels.md +14 -2
  2. package/.docs/docs/mastra-platform/connect/overview.md +1 -1
  3. package/.docs/docs/mastra-platform/connect/providers.md +1 -0
  4. package/.docs/models/gateways/merge-gateway.md +2 -1
  5. package/.docs/models/gateways/netlify.md +7 -1
  6. package/.docs/models/gateways/openrouter.md +4 -1
  7. package/.docs/models/gateways/vercel.md +4 -3
  8. package/.docs/models/index.md +1 -1
  9. package/.docs/models/providers/302ai.md +2 -1
  10. package/.docs/models/providers/ambient.md +2 -1
  11. package/.docs/models/providers/cortecs.md +1 -2
  12. package/.docs/models/providers/deepinfra.md +2 -1
  13. package/.docs/models/providers/edenai.md +3 -1
  14. package/.docs/models/providers/engy.md +2 -2
  15. package/.docs/models/providers/fireworks-ai.md +2 -1
  16. package/.docs/models/providers/hyper.md +2 -1
  17. package/.docs/models/providers/iteracompute.md +11 -10
  18. package/.docs/models/providers/kilo.md +21 -18
  19. package/.docs/models/providers/llmgateway-providers.md +1 -7
  20. package/.docs/models/providers/llmgateway.md +1 -4
  21. package/.docs/models/providers/nano-gpt.md +5 -2
  22. package/.docs/models/providers/nebius.md +3 -1
  23. package/.docs/models/providers/ollama-cloud.md +2 -1
  24. package/.docs/models/providers/opencode-go.md +4 -4
  25. package/.docs/models/providers/opencode.md +5 -4
  26. package/.docs/models/providers/prime.md +3 -2
  27. package/.docs/models/providers/requesty.md +2 -1
  28. package/.docs/models/providers/wandb.md +24 -23
  29. package/.docs/models/providers/xiaomi-token-plan-ams.md +0 -2
  30. package/.docs/models/providers/xiaomi-token-plan-cn.md +0 -2
  31. package/.docs/models/providers/xiaomi-token-plan-sgp.md +0 -2
  32. package/.docs/models/providers/xiaomi.md +0 -3
  33. package/.docs/reference/agents/durable-agent.md +3 -1
  34. package/.docs/reference/classifier/classifier.md +2 -2
  35. package/.docs/reference/cli/mastra.md +5 -3
  36. package/.docs/reference/client-js/observability.md +44 -0
  37. package/.docs/reference/connect/channels.md +2 -2
  38. package/.docs/reference/connect/providers.md +34 -1
  39. package/.docs/reference/datasets/list.md +9 -1
  40. package/.docs/reference/observability/metrics/automatic-metrics.md +3 -3
  41. package/.docs/reference/observability/metrics/queries.md +1 -0
  42. package/.docs/reference/observability/tracing/interfaces.md +6 -0
  43. package/.docs/reference/streaming/agents/stream.md +18 -0
  44. package/package.json +5 -5
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![NanoGPT logo](https://models.dev/logos/nano-gpt.svg)NanoGPT
6
6
 
7
- Access 614 NanoGPT models through Mastra's model router. Authentication is handled automatically using the `NANO_GPT_API_KEY` environment variable.
7
+ Access 617 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
 
@@ -167,6 +167,7 @@ for await (const chunk of stream) {
167
167
  | `nano-gpt/failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5` | 8K | | | | | | $0.70 | $0.70 |
168
168
  | `nano-gpt/fastgpt` | 33K | | | | | | $8 | $8 |
169
169
  | `nano-gpt/featherless-ai/Qwerky-72B` | 32K | | | | | | $0.50 | $0.50 |
170
+ | `nano-gpt/fireworks/ember-1` | 1.0M | | | | | | $3 | $15 |
170
171
  | `nano-gpt/GalrionSoftworks/MN-LooseCannon-12B-v1` | 16K | | | | | | $0.49 | $0.49 |
171
172
  | `nano-gpt/gemini-2.0-pro-exp-02-05` | 2.1M | | | | | | $2 | $8 |
172
173
  | `nano-gpt/gemini-2.0-pro-reasoner` | 128K | | | | | | $1 | $5 |
@@ -295,6 +296,7 @@ for await (const chunk of stream) {
295
296
  | `nano-gpt/meta/muse-spark-1.2-contributor` | 1.0M | | | | | | $0.10 | $0.20 |
296
297
  | `nano-gpt/meta/muse-spark-1.3` | 1.0M | | | | | | $1 | $4 |
297
298
  | `nano-gpt/meta/muse-spark-1.3-contributor` | 1.0M | | | | | | $0.10 | $0.20 |
299
+ | `nano-gpt/meta/muse-spark-open` | 1.0M | | | | | | $1 | $4 |
298
300
  | `nano-gpt/microsoft/wizardlm-2-8x22b` | 66K | | | | | | $0.49 | $0.49 |
299
301
  | `nano-gpt/MiniMax-M1` | 1.0M | | | | | | $0.14 | $1 |
300
302
  | `nano-gpt/minimax/minimax-01` | 1.0M | | | | | | $0.14 | $1 |
@@ -365,6 +367,7 @@ for await (const chunk of stream) {
365
367
  | `nano-gpt/nvidia/nemotron-3.5-content-safety` | 131K | | | | | | $0.05 | $0.15 |
366
368
  | `nano-gpt/nvidia/nemotron-3.5-lightning` | 1.0M | | | | | | $0.05 | $0.20 |
367
369
  | `nano-gpt/nvidia/nemotron-3.5-lightning:thinking` | 1.0M | | | | | | $0.05 | $0.20 |
370
+ | `nano-gpt/nvidia/nemotron-3.5-super-vl` | 262K | | | | | | $0.15 | $0.50 |
368
371
  | `nano-gpt/openai/gpt-3.5-turbo` | 16K | | | | | | $0.50 | $2 |
369
372
  | `nano-gpt/openai/gpt-4-turbo` | 128K | | | | | | $10 | $30 |
370
373
  | `nano-gpt/openai/gpt-4.1` | 1.0M | | | | | | $2 | $8 |
@@ -453,7 +456,7 @@ for await (const chunk of stream) {
453
456
  | `nano-gpt/qwen/qwen3-coder-next` | 262K | | | | | | $0.25 | $0.80 |
454
457
  | `nano-gpt/qwen/qwen3-max` | 256K | | | | | | $1 | $6 |
455
458
  | `nano-gpt/qwen/qwen3-max-2026-01-23` | 256K | | | | | | $1 | $6 |
456
- | `nano-gpt/qwen/qwen3-next-80b-a3b-instruct` | 262K | | | | | | $0.09 | $1 |
459
+ | `nano-gpt/qwen/qwen3-next-80b-a3b-instruct` | 262K | | | | | | $0.10 | $1 |
457
460
  | `nano-gpt/qwen/qwen3-next-80b-a3b-thinking` | 256K | | | | | | $0.15 | $0.65 |
458
461
  | `nano-gpt/qwen/qwen3-vl-235b-a22b-instruct` | 131K | | | | | | $0.30 | $2 |
459
462
  | `nano-gpt/qwen/qwen3-vl-235b-a22b-thinking` | 131K | | | | | | $0.50 | $6 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Nebius Token Factory logo](https://models.dev/logos/nebius.svg)Nebius Token Factory
6
6
 
7
- Access 21 Nebius Token Factory models through Mastra's model router. Authentication is handled automatically using the `NEBIUS_API_KEY` environment variable.
7
+ Access 23 Nebius Token Factory models through Mastra's model router. Authentication is handled automatically using the `NEBIUS_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [Nebius Token Factory documentation](https://docs.tokenfactory.nebius.com/).
10
10
 
@@ -43,6 +43,7 @@ for await (const chunk of stream) {
43
43
  | `nebius/deepseek-ai/DeepSeek-V4-Pro-0813` | 979K | | | | | | $1 | $4 |
44
44
  | `nebius/deepseek-ai/DeepSeek-V4.1-Flash` | 1.0M | | | | | | $0.30 | $1 |
45
45
  | `nebius/google/gemma-3-27b-it` | 110K | | | | | | $0.10 | $0.30 |
46
+ | `nebius/meta-models/muse-spark-open` | 1.0M | | | | | | $1 | $4 |
46
47
  | `nebius/MiniMaxAI/MiniMax-M3` | 1.0M | | | | | | $0.30 | $1 |
47
48
  | `nebius/moonshotai/Kimi-K2.7-Code` | 262K | | | | | | $0.95 | $4 |
48
49
  | `nebius/moonshotai/Kimi-K3` | 1.0M | | | | | | $3 | $15 |
@@ -50,6 +51,7 @@ for await (const chunk of stream) {
50
51
  | `nebius/nvidia/Nemotron-3_5-Lightning` | 1.0M | | | | | | $0.06 | $0.24 |
51
52
  | `nebius/nvidia/nemotron-3-super-120b-a12b` | 262K | | | | | | $0.30 | $0.90 |
52
53
  | `nebius/nvidia/Nemotron-3-Ultra-550b-a55b` | 1.0M | | | | | | $1 | $3 |
54
+ | `nebius/nvidia/Nemotron-3.5-Super-VL` | 1.0M | | | | | | $0.30 | $0.90 |
53
55
  | `nebius/openai/gpt-oss-120b` | 131K | | | | | | $0.15 | $0.60 |
54
56
  | `nebius/Qwen/Qwen3-235B-A22B-Instruct-2507` | 262K | | | | | | $0.20 | $0.60 |
55
57
  | `nebius/Qwen/Qwen3-30B-A3B-Instruct-2507` | 262K | | | | | | $0.10 | $0.30 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Ollama Cloud logo](https://models.dev/logos/ollama-cloud.svg)Ollama Cloud
6
6
 
7
- Access 25 Ollama Cloud models through Mastra's model router. Authentication is handled automatically using the `OLLAMA_API_KEY` environment variable.
7
+ Access 26 Ollama Cloud models through Mastra's model router. Authentication is handled automatically using the `OLLAMA_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [Ollama Cloud documentation](https://docs.ollama.com/cloud).
10
10
 
@@ -59,6 +59,7 @@ for await (const chunk of stream) {
59
59
  | `ollama-cloud/minimax-m3` | 512K | | | | | | $0.60 | $2 |
60
60
  | `ollama-cloud/mistral-large-3:675b` | 262K | | | | | | $0.50 | $2 |
61
61
  | `ollama-cloud/mistral-large-4` | 1.0M | | | | | | $1 | $4 |
62
+ | `ollama-cloud/muse-spark-open` | 1.0M | | | | | | $1 | $4 |
62
63
  | `ollama-cloud/nemotron-3-nano:30b` | 1.0M | | | | | | $0.06 | $0.24 |
63
64
  | `ollama-cloud/nemotron-3-super` | 262K | | | | | | $0.01 | $0.60 |
64
65
  | `ollama-cloud/nemotron-3-ultra` | 262K | | | | | | $0.10 | $3 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![OpenCode Go logo](https://models.dev/logos/opencode-go.svg)OpenCode Go
6
6
 
7
- Access 30 OpenCode Go models through Mastra's model router. Authentication is handled automatically using the `OPENCODE_API_KEY` environment variable.
7
+ Access 31 OpenCode Go 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 Go documentation](https://opencode.ai/v2/docs/console/go/).
10
10
 
@@ -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
- | `opencode-go/cat-jam-free` | 262K | | | | | | — | — |
41
+ | `opencode-go/cat-jam-free` | 1.0M | | | | | | — | — |
42
42
  | `opencode-go/claude-haiku-5-5` | 1.0M | | | | | | $0.10 | $0.50 |
43
43
  | `opencode-go/deepseek-v4-pro` | 1.0M | | | | | | $0.66 | $2 |
44
44
  | `opencode-go/deepseek-v4.1-flash` | 1.0M | | | | | | $0.15 | $0.60 |
@@ -66,7 +66,7 @@ for await (const chunk of stream) {
66
66
  | `opencode-go/qwen3.8-flash` | 1.0M | | | | | | $0.15 | $0.47 |
67
67
  | `opencode-go/qwen3.8-max` | 1.0M | | | | | | $2 | $6 |
68
68
  | `opencode-go/space-bunny` | 1.0M | | | | | | $0.15 | $0.60 |
69
- | `opencode-go/step-5-preview-free` | 1.0M | | | | | | — | — |
69
+ | `opencode-go/step-5-preview` | 1.0M | | | | | | $1 | $3 |
70
70
 
71
71
  Model availability, capabilities, context windows, and pricing are sourced from [models.dev](https://models.dev) and may change.
72
72
 
@@ -79,7 +79,7 @@ const agent = new Agent({
79
79
  id: "custom-agent",
80
80
  name: "custom-agent",
81
81
  model: {
82
- url: "https://opencode.ai/inference/go/v1",
82
+ url: "https://opencode.ai/inference/go/openai/v1",
83
83
  id: "opencode-go/cat-jam-free",
84
84
  apiKey: process.env.OPENCODE_API_KEY,
85
85
  headers: {
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![OpenCode logo](https://models.dev/logos/opencode.svg)OpenCode
6
6
 
7
- Access 124 OpenCode models through Mastra's model router. Authentication is handled automatically using the `OPENCODE_API_KEY` environment variable.
7
+ Access 126 OpenCode 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 documentation](https://opencode.ai/v2/docs/console/models/).
10
10
 
@@ -39,7 +39,7 @@ for await (const chunk of stream) {
39
39
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
40
40
  | ------------------------------------------ | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
41
41
  | `opencode/big-pickle` | 200K | | | | | | — | — |
42
- | `opencode/cat-jam-free` | 262K | | | | | | — | — |
42
+ | `opencode/cat-jam-free` | 1.0M | | | | | | — | — |
43
43
  | `opencode/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
44
44
  | `opencode/claude-fable-5-1` | 1.0M | | | | | | $10 | $50 |
45
45
  | `opencode/claude-haiku-4-5` | 200K | | | | | | $1 | $5 |
@@ -73,6 +73,7 @@ for await (const chunk of stream) {
73
73
  | `opencode/glm-5.2` | 1.0M | | | | | | $1 | $4 |
74
74
  | `opencode/glm-5.3` | 1.0M | | | | | | $1 | $4 |
75
75
  | `opencode/glm-5.3-flash` | 1.0M | | | | | | $0.15 | $0.50 |
76
+ | `opencode/glm-5.3-flash-free` | 200K | | | | | | — | — |
76
77
  | `opencode/gpt-5` | 400K | | | | | | $1 | $9 |
77
78
  | `opencode/gpt-5-codex` | 400K | | | | | | $1 | $9 |
78
79
  | `opencode/gpt-5-nano` | 400K | | | | | | $0.05 | $0.40 |
@@ -105,6 +106,7 @@ for await (const chunk of stream) {
105
106
  | `opencode/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
106
107
  | `opencode/kimi-k2.7-code` | 262K | | | | | | $0.95 | $4 |
107
108
  | `opencode/kimi-k3` | 1.0M | | | | | | $3 | $15 |
109
+ | `opencode/ll-alpha-free` | 262K | | | | | | — | — |
108
110
  | `opencode/longcat-2.5-preview-free` | 1.0M | | | | | | — | — |
109
111
  | `opencode/mimo-v2.6-flash-free` | 200K | | | | | | — | — |
110
112
  | `opencode/minimax-m2.5` | 205K | | | | | | $0.30 | $1 |
@@ -122,7 +124,6 @@ for await (const chunk of stream) {
122
124
  | `opencode/qwen3.8-flash` | 1.0M | | | | | | $0.15 | $0.47 |
123
125
  | `opencode/qwen3.8-max` | 262K | | | | | | $2 | $6 |
124
126
  | `opencode/space-bunny-free` | 1.0M | | | | | | — | — |
125
- | `opencode/step-5-preview-free` | 1.0M | | | | | | — | — |
126
127
 
127
128
  Model availability, capabilities, context windows, and pricing are sourced from [models.dev](https://models.dev) and may change.
128
129
 
@@ -135,7 +136,7 @@ const agent = new Agent({
135
136
  id: "custom-agent",
136
137
  name: "custom-agent",
137
138
  model: {
138
- url: "https://opencode.ai/inference/v1",
139
+ url: "https://opencode.ai/inference/openai/v1",
139
140
  id: "opencode/big-pickle",
140
141
  apiKey: process.env.OPENCODE_API_KEY,
141
142
  headers: {
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Prime Inference logo](https://models.dev/logos/prime.svg)Prime Inference
6
6
 
7
- Access 65 Prime Inference models through Mastra's model router. Authentication is handled automatically using the `PRIME_API_KEY` environment variable.
7
+ Access 66 Prime Inference models through Mastra's model router. Authentication is handled automatically using the `PRIME_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [Prime Inference documentation](https://docs.primeintellect.ai).
10
10
 
@@ -47,6 +47,7 @@ for await (const chunk of stream) {
47
47
  | `prime/anthropic/claude-opus-5.5` | 1.0M | | | | | | $4 | $20 |
48
48
  | `prime/anthropic/claude-sonnet-4.6` | 1.0M | | | | | | $3 | $15 |
49
49
  | `prime/anthropic/claude-sonnet-5` | 1.0M | | | | | | $2 | $10 |
50
+ | `prime/anthropic/claude-sonnet-5.5` | 1.0M | | | | | | $2 | $10 |
50
51
  | `prime/deepseek/deepseek-v4-flash` | 1.0M | | | | | | $0.44 | $1 |
51
52
  | `prime/deepseek/deepseek-v4-flash-0731` | 1.0M | | | | | | $0.44 | $1 |
52
53
  | `prime/deepseek/deepseek-v4-pro` | 1.0M | | | | | | $2 | $4 |
@@ -60,6 +61,7 @@ for await (const chunk of stream) {
60
61
  | `prime/google/gemini-4-argon` | 1.0M | | | | | | $2 | $10 |
61
62
  | `prime/google/gemma-3-27b-it` | 131K | | | | | | $0.12 | $0.30 |
62
63
  | `prime/meta-llama/llama-3.3-70b-instruct` | 131K | | | | | | $1 | $2 |
64
+ | `prime/meta/muse-spark-open` | 1.0M | | | | | | $1 | $4 |
63
65
  | `prime/mistralai/mistral-large-2512` | 262K | | | | | | $0.50 | $2 |
64
66
  | `prime/mistralai/mistral-nemo` | 131K | | | | | | $0.17 | $0.17 |
65
67
  | `prime/mistralai/mistral-small-2603` | 262K | | | | | | $0.17 | $0.66 |
@@ -76,7 +78,6 @@ for await (const chunk of stream) {
76
78
  | `prime/openai/gpt-5-nano` | 400K | | | | | | $0.05 | $0.40 |
77
79
  | `prime/openai/gpt-5.1` | 400K | | | | | | $1 | $10 |
78
80
  | `prime/openai/gpt-5.2` | 400K | | | | | | $2 | $14 |
79
- | `prime/openai/gpt-5.2-pro` | 400K | | | | | | $21 | $168 |
80
81
  | `prime/openai/gpt-5.3-codex` | 400K | | | | | | $2 | $14 |
81
82
  | `prime/openai/gpt-5.4` | 1.1M | | | | | | $3 | $15 |
82
83
  | `prime/openai/gpt-5.4-mini` | 400K | | | | | | $0.75 | $5 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![Requesty logo](https://models.dev/logos/requesty.svg)Requesty
6
6
 
7
- Access 175 Requesty models through Mastra's model router. Authentication is handled automatically using the `REQUESTY_API_KEY` environment variable.
7
+ Access 176 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
 
@@ -182,6 +182,7 @@ for await (const chunk of stream) {
182
182
  | `requesty/mistral-small-2603@eu` | 256K | | | | | | $0.17 | $0.66 |
183
183
  | `requesty/muse-glimmer-30b` | 131K | | | | | | — | — |
184
184
  | `requesty/muse-spark-1.3` | 1.0M | | | | | | $1 | $4 |
185
+ | `requesty/muse-spark-open` | 1.0M | | | | | | $1 | $4 |
185
186
  | `requesty/muse-wonder-1.0` | 1.0M | | | | | | $4 | $20 |
186
187
  | `requesty/nemotron-3-nano-omni` | 300K | | | | | | $0.06 | $0.24 |
187
188
  | `requesty/nemotron-3-nano-omni-30b-a3b-reasoning` | 131K | | | | | | — | — |
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ![CoreWeave logo](https://models.dev/logos/wandb.svg)CoreWeave
6
6
 
7
- Access 20 CoreWeave models through Mastra's model router. Authentication is handled automatically using the `WANDB_API_KEY` environment variable.
7
+ Access 21 CoreWeave models through Mastra's model router. Authentication is handled automatically using the `WANDB_API_KEY` environment variable.
8
8
 
9
9
  Learn more in the [CoreWeave documentation](https://docs.wandb.ai).
10
10
 
@@ -36,28 +36,29 @@ for await (const chunk of stream) {
36
36
 
37
37
  ## Models
38
38
 
39
- | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
40
- | ---------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
41
- | `wandb/deepseek-ai/DeepSeek-V3.1` | 161K | | | | | | $0.55 | $2 |
42
- | `wandb/deepseek-ai/DeepSeek-V4-Flash-0731` | 262K | | | | | | $0.13 | $0.28 |
43
- | `wandb/deepseek-ai/DeepSeek-V4-Pro-0813` | 1.0M | | | | | | $1 | $4 |
44
- | `wandb/deepseek-ai/DeepSeek-V4.1-Flash` | 1.0M | | | | | | $0.15 | $0.65 |
45
- | `wandb/google/gemma-4-26B-A4B-it` | 262K | | | | | | $0.10 | $0.30 |
46
- | `wandb/google/gemma-4-31B-it` | 262K | | | | | | $0.10 | $0.34 |
47
- | `wandb/ibm-granite/granite-4.2-8b` | 131K | | | | | | $0.10 | $0.15 |
48
- | `wandb/meta-llama/Llama-3.1-8B-Instruct` | 131K | | | | | | $0.22 | $0.22 |
49
- | `wandb/meta-llama/Llama-3.3-70B-Instruct` | 128K | | | | | | $0.71 | $0.71 |
50
- | `wandb/MiniMaxAI/MiniMax-M3` | 262K | | | | | | $0.23 | $0.96 |
51
- | `wandb/moonshotai/Kimi-K2.6` | 262K | | | | | | $0.65 | $3 |
52
- | `wandb/moonshotai/Kimi-K2.7-Code` | 262K | | | | | | $0.71 | $4 |
53
- | `wandb/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B` | 262K | | | | | | $0.50 | $2 |
54
- | `wandb/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B` | 262K | | | | | | $0.07 | $0.20 |
55
- | `wandb/openai/gpt-oss-120b` | 131K | | | | | | $0.03 | $0.17 |
56
- | `wandb/openai/gpt-oss-20b` | 131K | | | | | | $0.03 | $0.13 |
57
- | `wandb/Qwen/Qwen3.6-35B-A3B` | 262K | | | | | | $0.25 | $1 |
58
- | `wandb/Qwen/Qwen3.8-27B` | 262K | | | | | | $0.40 | $3 |
59
- | `wandb/zai-org/GLM-5.2` | 1.0M | | | | | | $0.62 | $2 |
60
- | `wandb/zai-org/GLM-5.3-Flash` | 1.0M | | | | | | $0.15 | $0.50 |
39
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
40
+ | ----------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
41
+ | `wandb/deepseek-ai/DeepSeek-V3.1` | 161K | | | | | | $0.55 | $2 |
42
+ | `wandb/deepseek-ai/DeepSeek-V4-Flash-0731` | 262K | | | | | | $0.13 | $0.28 |
43
+ | `wandb/deepseek-ai/DeepSeek-V4-Pro-0813` | 1.0M | | | | | | $1 | $4 |
44
+ | `wandb/deepseek-ai/DeepSeek-V4.1-Flash` | 1.0M | | | | | | $0.15 | $0.65 |
45
+ | `wandb/google/gemma-4-26B-A4B-it` | 262K | | | | | | $0.10 | $0.30 |
46
+ | `wandb/google/gemma-4-31B-it` | 262K | | | | | | $0.10 | $0.34 |
47
+ | `wandb/ibm-granite/granite-4.2-8b` | 131K | | | | | | $0.10 | $0.15 |
48
+ | `wandb/meta-llama/Llama-3.1-8B-Instruct` | 131K | | | | | | $0.22 | $0.22 |
49
+ | `wandb/meta-llama/Llama-3.3-70B-Instruct` | 128K | | | | | | $0.71 | $0.71 |
50
+ | `wandb/MiniMaxAI/MiniMax-M3` | 262K | | | | | | $0.23 | $0.96 |
51
+ | `wandb/moonshotai/Kimi-K2.6` | 262K | | | | | | $0.65 | $3 |
52
+ | `wandb/moonshotai/Kimi-K2.7-Code` | 262K | | | | | | $0.71 | $4 |
53
+ | `wandb/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B` | 262K | | | | | | $0.50 | $2 |
54
+ | `wandb/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B` | 262K | | | | | | $0.07 | $0.20 |
55
+ | `wandb/nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B` | 1.0M | | | | | | $0.15 | $0.75 |
56
+ | `wandb/openai/gpt-oss-120b` | 131K | | | | | | $0.03 | $0.17 |
57
+ | `wandb/openai/gpt-oss-20b` | 131K | | | | | | $0.03 | $0.13 |
58
+ | `wandb/Qwen/Qwen3.6-35B-A3B` | 262K | | | | | | $0.25 | $1 |
59
+ | `wandb/Qwen/Qwen3.8-27B` | 262K | | | | | | $0.40 | $3 |
60
+ | `wandb/zai-org/GLM-5.2` | 1.0M | | | | | | $0.62 | $2 |
61
+ | `wandb/zai-org/GLM-5.3-Flash` | 1.0M | | | | | | $0.15 | $0.50 |
61
62
 
62
63
  Model availability, capabilities, context windows, and pricing are sourced from [models.dev](https://models.dev) and may change.
63
64
 
@@ -39,8 +39,6 @@ for await (const chunk of stream) {
39
39
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
40
40
  | ------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
41
41
  | `xiaomi-token-plan-ams/mimo-v2-tts` | 8K | | | | | | — | — |
42
- | `xiaomi-token-plan-ams/mimo-v2.5` | 1.0M | | | | | | — | — |
43
- | `xiaomi-token-plan-ams/mimo-v2.5-pro` | 1.0M | | | | | | — | — |
44
42
  | `xiaomi-token-plan-ams/mimo-v2.5-tts` | 8K | | | | | | — | — |
45
43
  | `xiaomi-token-plan-ams/mimo-v2.5-tts-voiceclone` | 8K | | | | | | — | — |
46
44
  | `xiaomi-token-plan-ams/mimo-v2.5-tts-voicedesign` | 8K | | | | | | — | — |
@@ -39,8 +39,6 @@ for await (const chunk of stream) {
39
39
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
40
40
  | ------------------------------------------------ | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
41
41
  | `xiaomi-token-plan-cn/mimo-v2-tts` | 8K | | | | | | — | — |
42
- | `xiaomi-token-plan-cn/mimo-v2.5` | 1.0M | | | | | | — | — |
43
- | `xiaomi-token-plan-cn/mimo-v2.5-pro` | 1.0M | | | | | | — | — |
44
42
  | `xiaomi-token-plan-cn/mimo-v2.5-tts` | 8K | | | | | | — | — |
45
43
  | `xiaomi-token-plan-cn/mimo-v2.5-tts-voiceclone` | 8K | | | | | | — | — |
46
44
  | `xiaomi-token-plan-cn/mimo-v2.5-tts-voicedesign` | 8K | | | | | | — | — |
@@ -39,8 +39,6 @@ for await (const chunk of stream) {
39
39
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
40
40
  | ------------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
41
41
  | `xiaomi-token-plan-sgp/mimo-v2-tts` | 8K | | | | | | — | — |
42
- | `xiaomi-token-plan-sgp/mimo-v2.5` | 1.0M | | | | | | — | — |
43
- | `xiaomi-token-plan-sgp/mimo-v2.5-pro` | 1.0M | | | | | | — | — |
44
42
  | `xiaomi-token-plan-sgp/mimo-v2.5-tts` | 8K | | | | | | — | — |
45
43
  | `xiaomi-token-plan-sgp/mimo-v2.5-tts-voiceclone` | 8K | | | | | | — | — |
46
44
  | `xiaomi-token-plan-sgp/mimo-v2.5-tts-voicedesign` | 8K | | | | | | — | — |
@@ -38,9 +38,6 @@ for await (const chunk of stream) {
38
38
 
39
39
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
40
40
  | --------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
41
- | `xiaomi/mimo-v2.5` | 1.0M | | | | | | $0.14 | $0.28 |
42
- | `xiaomi/mimo-v2.5-pro` | 1.0M | | | | | | $0.43 | $0.87 |
43
- | `xiaomi/mimo-v2.5-pro-ultraspeed` | 1.0M | | | | | | $1 | $3 |
44
41
  | `xiaomi/mimo-v2.6-flash` | 1.0M | | | | | | $0.14 | $0.28 |
45
42
  | `xiaomi/mimo-v2.6-pro` | 1.0M | | | | | | $0.43 | $0.87 |
46
43
  | `xiaomi/mimo-v2.6-pro-ultraspeed` | 1.0M | | | | | | $4 | $9 |
@@ -181,6 +181,8 @@ Returns: [`Promise<DurableAgentStreamResult>`](#durableagentstreamresult)
181
181
 
182
182
  Reconnects to an existing run. Use this after a network disconnection. For the supported general reconnect flow, omit `offset` to replay all available cached events before receiving live events.
183
183
 
184
+ When observing from another process, the observing agent must have the same `id` as the agent that started the run. If the persisted run belongs to an agent with a different ID, `observe()` throws `DURABLE_AGENT_OBSERVE_AGENT_MISMATCH`, matching the ownership checks in `resume()` and `recover()`.
185
+
184
186
  For runs configured with `structuredOutput`, an observer in another process reconstructs `output.object` from the persisted schema and replayed text.
185
187
 
186
188
  ```typescript
@@ -427,7 +429,7 @@ Returns: [`Promise<DurableAgentStreamResult>`](#durableagentstreamresult)
427
429
 
428
430
  **modelSettings** (`object`): Model-specific settings such as temperature. Credential-bearing headers (Authorization, X-Api-Key, and similar) are stripped from the serialized snapshot before it crosses process boundaries.
429
431
 
430
- **stopWhen** (`AgentExecutionOptions['stopWhen']`): Predicate or composition that ends the agentic loop early. The closure rides on the in-process run registry; cross-process resumes degrade to maxSteps only.
432
+ **stopWhen** (`AgentExecutionOptions['stopWhen']`): Predicate or composition that ends the agentic loop early. If it throws, fullStream rejects without emitting a step-finish or error chunk. Durable transports preserve the error name and message, but not its stack, cause, or subclass identity. The closure rides on the in-process run registry; cross-process resumes degrade to maxSteps only.
431
433
 
432
434
  **system** (`string | string[]`): Additional system message appended after the agent instructions and before user messages.
433
435
 
@@ -306,9 +306,9 @@ Only retryable AI SDK `APICallError` failures are retried. Other errors reject i
306
306
 
307
307
  ## Observability
308
308
 
309
- When an active Mastra span exists, `decide()` creates a `CLASSIFIER_EVALUATION` child span. It records the classifier and model identifiers, provider, question count and types, attempts, duration, and token usage.
309
+ When an active Mastra span exists, `decide()` creates a `CLASSIFIER_EVALUATION` child span. The span input holds the evaluated `state` and the questions. The span output holds the answers, including probabilities. Span attributes record the classifier and model identifiers, provider, question count and types, attempts, duration, and token usage. The token usage also produces [token and cost metrics](https://mastra.ai/reference/observability/metrics/automatic-metrics).
310
310
 
311
- The span doesn't include the evaluated state, question instructions, criteria, answers, probabilities, provider response body, or generated text.
311
+ To keep the state and answers out of exported traces, set `hideInput` and `hideOutput` in the `tracingOptions` of the agent or workflow run that calls the classifier. See [hiding sensitive input/output](https://mastra.ai/docs/observability/tracing/overview).
312
312
 
313
313
  ## Customize provider responses
314
314
 
@@ -1287,7 +1287,7 @@ Use `--url` and `--header` when you need to override another target or its crede
1287
1287
 
1288
1288
  ### Factory commands
1289
1289
 
1290
- Use `mastra api factory` to manage Factory projects, work items, decisions, attention items, queue health, and supervisor sessions. These commands use the same JSON input, output, authentication, headers, timeout, and target resolution as other `mastra api` commands.
1290
+ Use `mastra api factory` to manage Factory projects, work items, decisions, attention items, and queue health. These commands use the same JSON input, output, authentication, headers, timeout, and target resolution as other `mastra api` commands.
1291
1291
 
1292
1292
  List the Factory projects available to the current organization:
1293
1293
 
@@ -2016,11 +2016,13 @@ Prints help message and exits.
2016
2016
 
2017
2017
  By default, Mastra collects telemetry about your project, including your OS, Mastra version, and Node.js version. Server events also include the project identifiers described below. You can read the [CLI telemetry source code](https://github.com/mastra-ai/mastra/blob/main/packages/cli/src/analytics/index.ts) to check what's collected by the CLI.
2018
2018
 
2019
- When a server started with `mastra dev` or `mastra start` has observability metrics enabled, Mastra sends aggregated model usage at startup: input and output token counts per provider and model, plus the command (`dev` or `start`) and `NODE_ENV`. No prompts, responses, or other message content is sent. You can read the [model usage telemetry source code](https://github.com/mastra-ai/mastra/blob/main/packages/core/src/telemetry/usage-telemetry.ts) to check what's collected.
2019
+ When a server started with `mastra dev`, `mastra start`, or a `mastra build` output has observability configured, Mastra counts the input and output tokens each model call uses in that server process. Every 15 minutes, and once more when the server shuts down, it sends a `mastra_model_token_usage_v2` event per provider and model used since the previous report. If no model calls finished since then, nothing is sent. Each event contains the tokens used since the previous report, the report window's start and end times, the reason for the report (`interval` or `shutdown`), the command (`dev`, `start`, or `server` when the build output runs directly), and `NODE_ENV`. No prompts, responses, or other message content is sent. You can read the [model usage telemetry source code](https://github.com/mastra-ai/mastra/blob/main/packages/core/src/telemetry/model-usage-telemetry.ts) to check what's collected.
2020
+
2021
+ For compatibility with older analysis, servers also send the earlier `mastra_model_token_usage` event at startup. It reads token totals from observability storage and sends the usage added since a cursor saved in `~/.mastra/usage-telemetry.json`. You can read the [startup usage telemetry source code](https://github.com/mastra-ai/mastra/blob/main/packages/core/src/telemetry/usage-telemetry.ts) to check what's collected.
2020
2022
 
2021
2023
  At server startup, Mastra sends a project-surface snapshot with component counts, feature flags, and the coarse storage backend category, but no component names or component identifiers. You can read the [feature telemetry source code](https://github.com/mastra-ai/mastra/blob/main/packages/core/src/telemetry/feature-telemetry.ts) to check what's collected.
2022
2024
 
2023
- The server events `mastra_feature_usage` and `mastra_model_token_usage` include:
2025
+ The server events `mastra_feature_usage`, `mastra_model_token_usage`, and `mastra_model_token_usage_v2` include:
2024
2026
 
2025
2027
  - `project_id`: The first 16 hexadecimal characters of the SHA-256 hash of `MASTRA_PROJECT_ROOT`, or the current working directory when unset. This identifier also keys the local model-usage cursor.
2026
2028
  - `project_id2`: An optional identifier for correlation across machines and deployments. If the trimmed `MASTRA_PROJECT_ID` value has UUID format, the value is sent **unhashed**, prefixed with `mp_`. Search for `mp_<platform-project-id>` to find that project's telemetry. Names, slugs, and other non-UUID values aren't sent as Platform identifiers.
@@ -65,6 +65,50 @@ const selected = await mastraClient.getTrace(list.spans[0].traceId)
65
65
 
66
66
  It accepts the same filtering, ordering and delta-polling arguments as `listTraces()`. Use `listTraces()` when you actually need the full span payloads.
67
67
 
68
+ ## Querying spans
69
+
70
+ `querySpans()` returns completed span summaries across traces. It requires a positive ISO timestamp range over span start time and supports cursor pagination:
71
+
72
+ ```typescript
73
+ const result = await mastraClient.querySpans({
74
+ timeRange: {
75
+ from: '2026-10-01T00:00:00.000Z',
76
+ to: '2026-10-02T00:00:00.000Z',
77
+ },
78
+ where: {
79
+ op: 'and',
80
+ args: [
81
+ { op: 'eq', left: { path: 'threadId' }, right: { literal: 'thread-123' } },
82
+ { op: 'gte', left: { path: 'durationMs' }, right: { literal: 1000 } },
83
+ ],
84
+ },
85
+ orderBy: [{ field: 'startedAt', direction: 'desc' }],
86
+ page: { limit: 100 },
87
+ })
88
+
89
+ // Pass result.page.next as page.after to continue with the same filters and ordering.
90
+ console.log(result.spans)
91
+ ```
92
+
93
+ Pages default to 100 rows and allow at most 1,000. The response is `{ spans, page: { next } }`, without a total count. Ordering accepts exactly one of `startedAt` or `endedAt`, ascending or descending, and defaults to descending start time.
94
+
95
+ | Fields | Operators |
96
+ | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
97
+ | `traceId`, `spanId`, `parentSpanId`, `threadId` | `eq`, `ne`, `in`, `notIn`, `exists`, `notExists` |
98
+ | `organizationId`, `resourceId`, `runId`, `sessionId`, `userId`, `requestId`, `serviceName`, `experimentId`, `environment`, `executionSource` | Same string operators |
99
+ | Entity, parent entity and root entity `Type`, `Id`, `Name`, `VersionId` fields, such as `parentEntityId` | Same string operators |
100
+ | `name`, `spanType`, `status` | Same string operators; `name` also accepts `matches` / `notMatches` for normalized whole words and phrases |
101
+ | `startedAt`, `endedAt`, `durationMs` | Comparisons, membership and presence |
102
+ | `error` | `exists`, `notExists` |
103
+
104
+ Combine predicates with `and`, `or` and `not`. Membership uses `{ op: 'in', value: { path: 'spanType' }, set: ['agent_run', 'tool_call'] }`. A span's status is `error` when it has an error and `success` otherwise.
105
+
106
+ Each summary includes identity, context, entity lineage, status, timestamps, `durationMs`, model/provider and input/output/error previews. Model/provider are available in returned rows but aren't filterable.
107
+
108
+ The additional identity, context and parent/root entity filters require an updated storage adapter. With an older adapter, requests using these filters return a structured `422` error.
109
+
110
+ DuckDB returns `null` for parent/root entity type, ID and name, and for `executionSource`. Equality filters on these fields match no spans. Parent/root entity version IDs remain available.
111
+
68
112
  ## Querying traces
69
113
 
70
114
  `queryTraces()` finds completed logical traces using trace fields and conditions over related spans. Every query requires an ISO timestamp range.
@@ -18,9 +18,9 @@ export const mastra = new Mastra({
18
18
 
19
19
  Returns: `Promise<ChannelsResolver>`. See [The resolver](#the-resolver).
20
20
 
21
- The [documented channel setup](https://mastra.ai/docs/mastra-platform/connect/channels) covers Slack, Telegram, and Discord. Their implementations come from `@mastra/slack`, `@mastra/telegram`, and `@mastra/discord`, loaded on demand. Use those packages directly to configure a channel outside the platform connection flow.
21
+ The [documented channel setup](https://mastra.ai/docs/mastra-platform/connect/channels) covers Slack, Telegram, Discord, and Microsoft Teams. Their implementations come from `@mastra/slack`, `@mastra/telegram`, `@mastra/discord`, and `@mastra/teams`, loaded on demand. Use those packages directly to configure a channel outside the platform connection flow.
22
22
 
23
- The SDK also registers `microsoft-teams`, backed by `@mastra/teams`. SDK registration doesn't guarantee availability in the platform catalog. Constructing the Teams provider requires `MASTRA_ENCRYPTION_KEY`, a base64-encoded 32-byte value for protecting stored bot secrets. Without it, the resolver warns and skips Teams, including its routes.
23
+ The Teams provider encrypts stored bot secrets with `MASTRA_ENCRYPTION_KEY` when set. When it isn't, the key is derived from the platform access token and a warning is logged while a Teams connection is active. Rotating the platform access token makes stored bot credentials unreadable (disconnect and reconnect to re-provision). Projects without a Teams connection are unaffected.
24
24
 
25
25
  ## Parameters
26
26
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # Provider toolsets
6
6
 
7
- This page documents generated toolsets for 21 providers (883 tools in this version of `@mastra/connect`). It isn't an exhaustive list of providers registered in the SDK or available in the platform catalog. [`tools()`](https://mastra.ai/reference/connect/tools) exposes a provider's toolset when the project has an active connection for its provider ID.
7
+ This page documents generated toolsets for 22 providers (908 tools in this version of `@mastra/connect`). It isn't an exhaustive list of providers registered in the SDK or available in the platform catalog. [`tools()`](https://mastra.ai/reference/connect/tools) exposes a provider's toolset when the project has an active connection for its provider ID.
8
8
 
9
9
  Tool keys are stable identifiers of the form `<provider>_<action>` and are the values accepted by `allowTools` and `disallowTools`. Toolsets are versioned with the package: the exact list depends on the installed `@mastra/connect` version, and this page reflects the version it was generated from.
10
10
 
@@ -25,6 +25,7 @@ MCP providers (Attio, Canva, Clay, Neon, Render, Robinhood, and Sanity) serve th
25
25
  | ![](https://app.nango.dev/images/template-logos/incident-io.svg) [incident.io](#incidentio) | `incident-io` | 66 |
26
26
  | ![](https://cdn.simpleicons.org/jira?viewbox=auto\&size=28) [Jira](#jira) | `jira` | 38 |
27
27
  | ![](https://cdn.simpleicons.org/linear?viewbox=auto\&size=28) [Linear](#linear) | `linear` | 46 |
28
+ | ![](https://cdn.simpleicons.org/microsoftteams?viewbox=auto\&size=28) [Microsoft Teams](#microsoft-teams) | `microsoft-teams` | 25 |
28
29
  | ![](https://cdn.simpleicons.org/notion?viewbox=auto\&size=28) [Notion](#notion) | `notion` | 44 |
29
30
  | ![](https://svgl.app/library/openai.svg) [OpenAI](#openai) | `openai` | 26 |
30
31
  | ![](https://cdn.simpleicons.org/posthog?viewbox=auto\&size=28) [PostHog](#posthog) | `posthog` | 67 |
@@ -657,6 +658,38 @@ Provider ID: `linear` · 46 tools
657
658
  | `linear_update_issue_relation` | Update fields on an existing Linear issue relation. |
658
659
  | `linear_update_project` | Update an existing Linear project. |
659
660
 
661
+ ## Microsoft Teams
662
+
663
+ Provider ID: `microsoft-teams` · 25 tools
664
+
665
+ | Tool | Description |
666
+ | ------------------------------------------ | ------------------------------------------------ |
667
+ | `microsoft_teams_add_team_member` | Add a member to a team |
668
+ | `microsoft_teams_create_channel` | Create a channel in a team. |
669
+ | `microsoft_teams_create_channel_message` | Post a root message in a channel |
670
+ | `microsoft_teams_create_channel_tab` | Add a tab to a channel. |
671
+ | `microsoft_teams_create_chat` | Create a one-on-one or group chat. |
672
+ | `microsoft_teams_create_chat_message` | Send a message in a chat |
673
+ | `microsoft_teams_create_team` | Create a team from a template or existing group. |
674
+ | `microsoft_teams_delete_channel` | Delete a channel from a team |
675
+ | `microsoft_teams_get_channel` | Retrieve a channel by ID. |
676
+ | `microsoft_teams_get_channel_message` | Retrieve a channel message by ID. |
677
+ | `microsoft_teams_get_chat` | Retrieve a chat by ID. |
678
+ | `microsoft_teams_get_chat_message` | Retrieve a chat message by ID. |
679
+ | `microsoft_teams_get_team` | Retrieve a team by ID. |
680
+ | `microsoft_teams_list_channel_messages` | List root messages in a channel. |
681
+ | `microsoft_teams_list_channel_replies` | List replies under a channel message thread |
682
+ | `microsoft_teams_list_channel_tabs` | List tabs configured on a channel. |
683
+ | `microsoft_teams_list_channels` | List channels in a team. |
684
+ | `microsoft_teams_list_chat_members` | List members in a chat |
685
+ | `microsoft_teams_list_chat_messages` | List messages in a chat. |
686
+ | `microsoft_teams_list_chats` | List chats for a user. |
687
+ | `microsoft_teams_list_joined_teams` | List teams the user has joined |
688
+ | `microsoft_teams_list_team_members` | List members in a team. |
689
+ | `microsoft_teams_remove_team_member` | Remove a member from a team. |
690
+ | `microsoft_teams_reply_to_channel_message` | Reply to a channel message thread. |
691
+ | `microsoft_teams_update_channel` | Update mutable channel properties. |
692
+
660
693
  ## Notion
661
694
 
662
695
  Provider ID: `notion` · 44 tools
@@ -32,13 +32,19 @@ const filtered = await mastra.datasets.list({
32
32
  const forAgents = await mastra.datasets.list({
33
33
  filters: { targetIds: ['agent-a', 'agent-b'] },
34
34
  })
35
+
36
+ // Fetch specific datasets by ID, all on one page
37
+ const byId = await mastra.datasets.list({
38
+ perPage: false,
39
+ filters: { datasetIds: ['dataset-1', 'dataset-2'] },
40
+ })
35
41
  ```
36
42
 
37
43
  ## Parameters
38
44
 
39
45
  **page** (`number`): Page number. Defaults to 0.
40
46
 
41
- **perPage** (`number`): Number of datasets per page. Defaults to 20.
47
+ **perPage** (`number | false`): Number of datasets per page, or false to return every match on one page. Defaults to 20.
42
48
 
43
49
  **filters** (`object`): Optional filters applied at the storage layer.
44
50
 
@@ -54,6 +60,8 @@ const forAgents = await mastra.datasets.list({
54
60
 
55
61
  **filters.targetIds** (`string[]`): Restrict to datasets whose targetIds intersect this list (any-overlap match). Empty array is treated as no filter.
56
62
 
63
+ **filters.datasetIds** (`string[]`): Restrict to datasets with these IDs. Empty array matches no datasets. Pass perPage: false to get every match on one page.
64
+
57
65
  **filters.name** (`string`): Case-insensitive substring match on dataset name. Empty string is treated as no filter.
58
66
 
59
67
  ## Returns
@@ -10,7 +10,7 @@ For setup instructions, see the [Metrics overview](https://mastra.ai/docs/observ
10
10
 
11
11
  ## When Mastra emits automatic metrics
12
12
 
13
- Metrics are extracted from spans when they end. The observability layer inspects each completed span, calculates duration, and (for model generation spans) reads token usage data. No manual instrumentation is needed.
13
+ Metrics are extracted from spans when they end. The observability layer inspects each completed span, calculates duration, and reads token usage data from model generation and classifier evaluation spans. No manual instrumentation is needed.
14
14
 
15
15
  ### What affects whether a metric is available
16
16
 
@@ -35,7 +35,7 @@ Duration metrics record execution time in milliseconds, calculated from the span
35
35
 
36
36
  ## Token usage metrics
37
37
 
38
- Token metrics are emitted only from `MODEL_GENERATION` spans that include `usage` data. Token metrics require usage data from the provider.
38
+ Token metrics are emitted from `MODEL_GENERATION` and `CLASSIFIER_EVALUATION` spans that include `usage` data. Token metrics require usage data from the provider.
39
39
 
40
40
  ### Input token metrics
41
41
 
@@ -142,7 +142,7 @@ When you spot a spike in latency or token usage on the Metrics dashboard, correl
142
142
 
143
143
  ### Token metrics are missing
144
144
 
145
- - **Span is a model generation**: Token metrics are only emitted from `MODEL_GENERATION` spans.
145
+ - **Span is a model generation or classifier evaluation**: Token metrics are only emitted from `MODEL_GENERATION` and `CLASSIFIER_EVALUATION` spans.
146
146
  - **Provider reports usage**: The model provider must include `usage` data in its response. Usage data is required to emit token metrics.
147
147
 
148
148
  ## Related
@@ -110,6 +110,7 @@ All metric operations accept the same optional `filters` object. Raw list reques
110
110
  | `userId` | `string` | User ID |
111
111
  | `organizationId` | `string` | Organization ID |
112
112
  | `experimentId` | `string` | Experiment or evaluation run ID |
113
+ | `experimentIds` | `string[]` | One to 1,000 experiment IDs |
113
114
  | `serviceName` | `string` | Service name |
114
115
  | `environment` | `string` | Environment name |
115
116
  | `resourceId` | `string` | Resource ID |