@mastra/mcp-docs-server 1.1.38-alpha.1 → 1.1.38-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.
@@ -87,6 +87,74 @@ permissionMapping: {
87
87
 
88
88
  If no mapping exists for a permission, the original string is passed through.
89
89
 
90
+ Use `validatePermissions()` to validate the full set of permissions Mastra may emit at startup. Use this when a provider requires every Mastra permission to have an explicit provider permission slug.
91
+
92
+ ### Route policy coverage
93
+
94
+ Mastra includes route-level FGA metadata for built-in resource routes, including agents, workflows, tools, MCP tools, memory threads, responses, and conversations. A route is checked when it has route-level `fga` metadata, when Mastra can derive built-in metadata for that route, or when the provider supplies metadata with `resolveRouteFGA()`.
95
+
96
+ To deny protected routes that do not resolve FGA metadata, configure route policy coverage on the FGA provider:
97
+
98
+ ```typescript
99
+ const fga = new MastraFGAWorkos({
100
+ resourceMapping: {
101
+ project: { fgaResourceType: 'project' },
102
+ },
103
+ permissionMapping: {
104
+ 'projects:read': 'read',
105
+ },
106
+ requireForProtectedRoutes: true,
107
+ auditProtectedRoutes: 'warn',
108
+ validatePermissions: async permissions => {
109
+ // Throw if a Mastra permission is missing from permissionMapping.
110
+ },
111
+ });
112
+ ```
113
+
114
+ Set `auditProtectedRoutes: 'error'` to fail startup when protected routes are missing built-in FGA metadata. If `requireForProtectedRoutes` is enabled, Mastra logs this audit as a warning by default.
115
+
116
+ For custom routes, prefer route-level `fga` metadata. This keeps authorization policy next to the route:
117
+
118
+ ```typescript
119
+ import { createRoute } from '@mastra/server/server-adapter';
120
+
121
+ export const getProjectRoute = createRoute({
122
+ method: 'GET',
123
+ path: '/projects/:projectId',
124
+ responseType: 'json',
125
+ requiresAuth: true,
126
+ fga: {
127
+ resourceType: 'project',
128
+ resourceIdParam: 'projectId',
129
+ permission: 'projects:read',
130
+ },
131
+ handler: async () => {
132
+ return { project: null };
133
+ },
134
+ });
135
+ ```
136
+
137
+ Use `resolveRouteFGA()` only when route metadata must be derived centrally from route, params, or request context. A route map scales better than string-prefix checks:
138
+
139
+ ```typescript
140
+ import type { FGARouteConfig, FGARouteResolver } from '@mastra/core/auth/ee';
141
+
142
+ const routeFGA = {
143
+ 'GET /billing/:accountId': {
144
+ resourceType: 'account',
145
+ resourceIdParam: 'accountId',
146
+ permission: 'billing:read',
147
+ },
148
+ } satisfies Record<string, FGARouteConfig>;
149
+
150
+ const resolveRouteFGA: FGARouteResolver = ({ route }) => routeFGA[`${route.method} ${route.path}`];
151
+
152
+ const fga = new MastraFGAWorkos({
153
+ /* ... */
154
+ resolveRouteFGA,
155
+ });
156
+ ```
157
+
90
158
  ## Enforcement points
91
159
 
92
160
  When an FGA provider is configured, Mastra automatically checks authorization at these lifecycle points:
@@ -98,7 +166,7 @@ When an FGA provider is configured, Mastra automatically checks authorization at
98
166
  | Tool execution | `tools:execute` | `{ type: 'tool', id: toolName }` |
99
167
  | Thread/memory access | `memory:read`, `memory:write`, `memory:delete` | `{ type: 'thread', id: threadId }` |
100
168
  | MCP tool execution | `tools:execute` | `{ type: 'tool', id: toolName }` |
101
- | HTTP routes (opt-in) | Configured per route | Configured per route |
169
+ | HTTP resource routes | Configured per route | Configured per route |
102
170
 
103
171
  All checks are **no-ops when FGA is not configured**, maintaining backward compatibility.
104
172
 
@@ -1,6 +1,6 @@
1
1
  # ![OpenRouter logo](https://models.dev/logos/openrouter.svg)OpenRouter
2
2
 
3
- OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 189 models through Mastra's model router.
3
+ OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 364 models through Mastra's model router.
4
4
 
5
5
  Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
6
6
 
@@ -13,7 +13,7 @@ const agent = new Agent({
13
13
  id: "my-agent",
14
14
  name: "My Agent",
15
15
  instructions: "You are a helpful assistant",
16
- model: "openrouter/anthropic/claude-3.5-haiku"
16
+ model: "openrouter/ai21/jamba-large-1.7"
17
17
  });
18
18
  ```
19
19
 
@@ -34,96 +34,188 @@ ANTHROPIC_API_KEY=ant-...
34
34
 
35
35
  | Model |
36
36
  | --------------------------------------------------------------- |
37
+ | `~anthropic/claude-haiku-latest` |
38
+ | `~anthropic/claude-opus-latest` |
39
+ | `~anthropic/claude-sonnet-latest` |
40
+ | `~google/gemini-flash-latest` |
41
+ | `~google/gemini-pro-latest` |
42
+ | `~moonshotai/kimi-latest` |
43
+ | `~openai/gpt-latest` |
44
+ | `~openai/gpt-mini-latest` |
45
+ | `ai21/jamba-large-1.7` |
46
+ | `aion-labs/aion-1.0` |
47
+ | `aion-labs/aion-1.0-mini` |
48
+ | `aion-labs/aion-2.0` |
49
+ | `aion-labs/aion-rp-llama-3.1-8b` |
50
+ | `alfredpros/codellama-7b-instruct-solidity` |
51
+ | `alibaba/tongyi-deepresearch-30b-a3b` |
52
+ | `allenai/olmo-3-32b-think` |
53
+ | `amazon/nova-2-lite-v1` |
54
+ | `amazon/nova-lite-v1` |
55
+ | `amazon/nova-micro-v1` |
56
+ | `amazon/nova-premier-v1` |
57
+ | `amazon/nova-pro-v1` |
58
+ | `anthracite-org/magnum-v4-72b` |
59
+ | `anthropic/claude-3-haiku` |
37
60
  | `anthropic/claude-3.5-haiku` |
38
- | `anthropic/claude-3.7-sonnet` |
39
61
  | `anthropic/claude-haiku-4.5` |
40
62
  | `anthropic/claude-opus-4` |
41
63
  | `anthropic/claude-opus-4.1` |
42
64
  | `anthropic/claude-opus-4.5` |
43
65
  | `anthropic/claude-opus-4.6` |
66
+ | `anthropic/claude-opus-4.6-fast` |
44
67
  | `anthropic/claude-opus-4.7` |
68
+ | `anthropic/claude-opus-4.7-fast` |
45
69
  | `anthropic/claude-sonnet-4` |
46
70
  | `anthropic/claude-sonnet-4.5` |
47
71
  | `anthropic/claude-sonnet-4.6` |
48
- | `arcee-ai/trinity-large-preview:free` |
72
+ | `arcee-ai/coder-large` |
73
+ | `arcee-ai/maestro-reasoning` |
74
+ | `arcee-ai/spotlight` |
75
+ | `arcee-ai/trinity-large-preview` |
49
76
  | `arcee-ai/trinity-large-thinking` |
50
- | `black-forest-labs/flux.2-flex` |
51
- | `black-forest-labs/flux.2-klein-4b` |
52
- | `black-forest-labs/flux.2-max` |
53
- | `black-forest-labs/flux.2-pro` |
54
- | `bytedance-seed/seedream-4.5` |
77
+ | `arcee-ai/trinity-large-thinking:free` |
78
+ | `arcee-ai/trinity-mini` |
79
+ | `arcee-ai/virtuoso-large` |
80
+ | `baidu/cobuddy:free` |
81
+ | `baidu/ernie-4.5-21b-a3b` |
82
+ | `baidu/ernie-4.5-21b-a3b-thinking` |
83
+ | `baidu/ernie-4.5-300b-a47b` |
84
+ | `baidu/ernie-4.5-vl-28b-a3b` |
85
+ | `baidu/ernie-4.5-vl-424b-a47b` |
86
+ | `baidu/qianfan-ocr-fast` |
87
+ | `bytedance-seed/seed-1.6` |
88
+ | `bytedance-seed/seed-1.6-flash` |
89
+ | `bytedance-seed/seed-2.0-lite` |
90
+ | `bytedance-seed/seed-2.0-mini` |
91
+ | `bytedance/ui-tars-1.5-7b` |
55
92
  | `cognitivecomputations/dolphin-mistral-24b-venice-edition:free` |
93
+ | `cohere/command-a` |
94
+ | `cohere/command-r-08-2024` |
95
+ | `cohere/command-r-plus-08-2024` |
96
+ | `cohere/command-r7b-12-2024` |
97
+ | `deepcogito/cogito-v2.1-671b` |
98
+ | `deepseek/deepseek-chat` |
56
99
  | `deepseek/deepseek-chat-v3-0324` |
57
100
  | `deepseek/deepseek-chat-v3.1` |
58
101
  | `deepseek/deepseek-r1` |
102
+ | `deepseek/deepseek-r1-0528` |
59
103
  | `deepseek/deepseek-r1-distill-llama-70b` |
104
+ | `deepseek/deepseek-r1-distill-qwen-32b` |
60
105
  | `deepseek/deepseek-v3.1-terminus` |
61
- | `deepseek/deepseek-v3.1-terminus:exacto` |
62
106
  | `deepseek/deepseek-v3.2` |
107
+ | `deepseek/deepseek-v3.2-exp` |
63
108
  | `deepseek/deepseek-v3.2-speciale` |
64
109
  | `deepseek/deepseek-v4-flash` |
110
+ | `deepseek/deepseek-v4-flash:free` |
65
111
  | `deepseek/deepseek-v4-pro` |
112
+ | `essentialai/rnj-1-instruct` |
66
113
  | `google/gemini-2.0-flash-001` |
114
+ | `google/gemini-2.0-flash-lite-001` |
67
115
  | `google/gemini-2.5-flash` |
116
+ | `google/gemini-2.5-flash-image` |
68
117
  | `google/gemini-2.5-flash-lite` |
69
118
  | `google/gemini-2.5-flash-lite-preview-09-2025` |
70
- | `google/gemini-2.5-flash-preview-09-2025` |
71
119
  | `google/gemini-2.5-pro` |
120
+ | `google/gemini-2.5-pro-preview` |
72
121
  | `google/gemini-2.5-pro-preview-05-06` |
73
- | `google/gemini-2.5-pro-preview-06-05` |
74
122
  | `google/gemini-3-flash-preview` |
75
- | `google/gemini-3-pro-preview` |
123
+ | `google/gemini-3-pro-image-preview` |
76
124
  | `google/gemini-3.1-flash-image-preview` |
125
+ | `google/gemini-3.1-flash-lite` |
77
126
  | `google/gemini-3.1-flash-lite-preview` |
78
127
  | `google/gemini-3.1-pro-preview` |
79
128
  | `google/gemini-3.1-pro-preview-customtools` |
80
- | `google/gemma-2-9b-it` |
129
+ | `google/gemma-2-27b-it` |
81
130
  | `google/gemma-3-12b-it` |
82
- | `google/gemma-3-12b-it:free` |
83
131
  | `google/gemma-3-27b-it` |
84
- | `google/gemma-3-27b-it:free` |
85
132
  | `google/gemma-3-4b-it` |
86
- | `google/gemma-3-4b-it:free` |
87
- | `google/gemma-3n-e2b-it:free` |
88
133
  | `google/gemma-3n-e4b-it` |
89
- | `google/gemma-3n-e4b-it:free` |
90
134
  | `google/gemma-4-26b-a4b-it` |
91
135
  | `google/gemma-4-26b-a4b-it:free` |
92
136
  | `google/gemma-4-31b-it` |
93
137
  | `google/gemma-4-31b-it:free` |
138
+ | `google/lyria-3-clip-preview` |
139
+ | `google/lyria-3-pro-preview` |
140
+ | `gryphe/mythomax-l2-13b` |
141
+ | `ibm-granite/granite-4.0-h-micro` |
142
+ | `ibm-granite/granite-4.1-8b` |
94
143
  | `inception/mercury-2` |
95
- | `inception/mercury-edit-2` |
144
+ | `inclusionai/ling-2.6-1t` |
145
+ | `inclusionai/ling-2.6-flash` |
146
+ | `inclusionai/ring-2.6-1t:free` |
147
+ | `inflection/inflection-3-pi` |
148
+ | `inflection/inflection-3-productivity` |
149
+ | `kwaipilot/kat-coder-pro-v2` |
150
+ | `liquid/lfm-2-24b-a2b` |
96
151
  | `liquid/lfm-2.5-1.2b-instruct:free` |
97
152
  | `liquid/lfm-2.5-1.2b-thinking:free` |
153
+ | `mancer/weaver` |
154
+ | `meta-llama/llama-3-70b-instruct` |
155
+ | `meta-llama/llama-3-8b-instruct` |
156
+ | `meta-llama/llama-3.1-70b-instruct` |
157
+ | `meta-llama/llama-3.1-8b-instruct` |
98
158
  | `meta-llama/llama-3.2-11b-vision-instruct` |
159
+ | `meta-llama/llama-3.2-1b-instruct` |
160
+ | `meta-llama/llama-3.2-3b-instruct` |
99
161
  | `meta-llama/llama-3.2-3b-instruct:free` |
162
+ | `meta-llama/llama-3.3-70b-instruct` |
100
163
  | `meta-llama/llama-3.3-70b-instruct:free` |
164
+ | `meta-llama/llama-4-maverick` |
165
+ | `meta-llama/llama-4-scout` |
166
+ | `meta-llama/llama-guard-3-8b` |
167
+ | `meta-llama/llama-guard-4-12b` |
168
+ | `microsoft/phi-4` |
169
+ | `microsoft/phi-4-mini-instruct` |
170
+ | `microsoft/wizardlm-2-8x22b` |
101
171
  | `minimax/minimax-01` |
102
172
  | `minimax/minimax-m1` |
103
173
  | `minimax/minimax-m2` |
174
+ | `minimax/minimax-m2-her` |
104
175
  | `minimax/minimax-m2.1` |
105
176
  | `minimax/minimax-m2.5` |
106
177
  | `minimax/minimax-m2.5:free` |
107
178
  | `minimax/minimax-m2.7` |
108
179
  | `mistralai/codestral-2508` |
109
180
  | `mistralai/devstral-2512` |
110
- | `mistralai/devstral-medium-2507` |
111
- | `mistralai/devstral-small-2505` |
112
- | `mistralai/devstral-small-2507` |
181
+ | `mistralai/devstral-medium` |
182
+ | `mistralai/devstral-small` |
183
+ | `mistralai/ministral-14b-2512` |
184
+ | `mistralai/ministral-3b-2512` |
185
+ | `mistralai/ministral-8b-2512` |
186
+ | `mistralai/mistral-7b-instruct-v0.1` |
187
+ | `mistralai/mistral-large` |
188
+ | `mistralai/mistral-large-2407` |
189
+ | `mistralai/mistral-large-2411` |
190
+ | `mistralai/mistral-large-2512` |
113
191
  | `mistralai/mistral-medium-3` |
192
+ | `mistralai/mistral-medium-3-5` |
114
193
  | `mistralai/mistral-medium-3.1` |
194
+ | `mistralai/mistral-nemo` |
195
+ | `mistralai/mistral-saba` |
196
+ | `mistralai/mistral-small-24b-instruct-2501` |
115
197
  | `mistralai/mistral-small-2603` |
116
198
  | `mistralai/mistral-small-3.1-24b-instruct` |
117
199
  | `mistralai/mistral-small-3.2-24b-instruct` |
200
+ | `mistralai/mixtral-8x22b-instruct` |
201
+ | `mistralai/pixtral-large-2411` |
202
+ | `mistralai/voxtral-small-24b-2507` |
118
203
  | `moonshotai/kimi-k2` |
119
204
  | `moonshotai/kimi-k2-0905` |
120
- | `moonshotai/kimi-k2-0905:exacto` |
121
205
  | `moonshotai/kimi-k2-thinking` |
122
206
  | `moonshotai/kimi-k2.5` |
123
207
  | `moonshotai/kimi-k2.6` |
208
+ | `morph/morph-v3-fast` |
209
+ | `morph/morph-v3-large` |
210
+ | `nex-agi/deepseek-v3.1-nex-n1` |
211
+ | `nousresearch/hermes-2-pro-llama-3-8b` |
212
+ | `nousresearch/hermes-3-llama-3.1-405b` |
124
213
  | `nousresearch/hermes-3-llama-3.1-405b:free` |
214
+ | `nousresearch/hermes-3-llama-3.1-70b` |
125
215
  | `nousresearch/hermes-4-405b` |
126
216
  | `nousresearch/hermes-4-70b` |
217
+ | `nvidia/llama-3.3-nemotron-super-49b-v1.5` |
218
+ | `nvidia/nemotron-3-nano-30b-a3b` |
127
219
  | `nvidia/nemotron-3-nano-30b-a3b:free` |
128
220
  | `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free` |
129
221
  | `nvidia/nemotron-3-super-120b-a12b` |
@@ -131,13 +223,32 @@ ANTHROPIC_API_KEY=ant-...
131
223
  | `nvidia/nemotron-nano-12b-v2-vl:free` |
132
224
  | `nvidia/nemotron-nano-9b-v2` |
133
225
  | `nvidia/nemotron-nano-9b-v2:free` |
226
+ | `openai/gpt-3.5-turbo` |
227
+ | `openai/gpt-3.5-turbo-0613` |
228
+ | `openai/gpt-3.5-turbo-16k` |
229
+ | `openai/gpt-3.5-turbo-instruct` |
230
+ | `openai/gpt-4` |
231
+ | `openai/gpt-4-0314` |
232
+ | `openai/gpt-4-1106-preview` |
233
+ | `openai/gpt-4-turbo` |
234
+ | `openai/gpt-4-turbo-preview` |
134
235
  | `openai/gpt-4.1` |
135
236
  | `openai/gpt-4.1-mini` |
237
+ | `openai/gpt-4.1-nano` |
238
+ | `openai/gpt-4o` |
239
+ | `openai/gpt-4o-2024-05-13` |
240
+ | `openai/gpt-4o-2024-08-06` |
241
+ | `openai/gpt-4o-2024-11-20` |
242
+ | `openai/gpt-4o-audio-preview` |
136
243
  | `openai/gpt-4o-mini` |
244
+ | `openai/gpt-4o-mini-2024-07-18` |
245
+ | `openai/gpt-4o-mini-search-preview` |
246
+ | `openai/gpt-4o-search-preview` |
137
247
  | `openai/gpt-5` |
138
248
  | `openai/gpt-5-chat` |
139
249
  | `openai/gpt-5-codex` |
140
250
  | `openai/gpt-5-image` |
251
+ | `openai/gpt-5-image-mini` |
141
252
  | `openai/gpt-5-mini` |
142
253
  | `openai/gpt-5-nano` |
143
254
  | `openai/gpt-5-pro` |
@@ -150,52 +261,114 @@ ANTHROPIC_API_KEY=ant-...
150
261
  | `openai/gpt-5.2-chat` |
151
262
  | `openai/gpt-5.2-codex` |
152
263
  | `openai/gpt-5.2-pro` |
264
+ | `openai/gpt-5.3-chat` |
153
265
  | `openai/gpt-5.3-codex` |
154
266
  | `openai/gpt-5.4` |
267
+ | `openai/gpt-5.4-image-2` |
155
268
  | `openai/gpt-5.4-mini` |
156
269
  | `openai/gpt-5.4-nano` |
157
270
  | `openai/gpt-5.4-pro` |
158
271
  | `openai/gpt-5.5` |
159
272
  | `openai/gpt-5.5-pro` |
273
+ | `openai/gpt-audio` |
274
+ | `openai/gpt-audio-mini` |
275
+ | `openai/gpt-chat-latest` |
160
276
  | `openai/gpt-oss-120b` |
161
- | `openai/gpt-oss-120b:exacto` |
162
277
  | `openai/gpt-oss-120b:free` |
163
278
  | `openai/gpt-oss-20b` |
164
279
  | `openai/gpt-oss-20b:free` |
165
280
  | `openai/gpt-oss-safeguard-20b` |
281
+ | `openai/o1` |
282
+ | `openai/o1-pro` |
283
+ | `openai/o3` |
284
+ | `openai/o3-deep-research` |
285
+ | `openai/o3-mini` |
286
+ | `openai/o3-mini-high` |
287
+ | `openai/o3-pro` |
166
288
  | `openai/o4-mini` |
167
- | `openrouter/elephant-alpha` |
289
+ | `openai/o4-mini-deep-research` |
290
+ | `openai/o4-mini-high` |
291
+ | `openrouter/auto` |
292
+ | `openrouter/bodybuilder` |
168
293
  | `openrouter/free` |
169
294
  | `openrouter/owl-alpha` |
170
295
  | `openrouter/pareto-code` |
296
+ | `perceptron/perceptron-mk1` |
297
+ | `perplexity/sonar` |
298
+ | `perplexity/sonar-deep-research` |
299
+ | `perplexity/sonar-pro` |
300
+ | `perplexity/sonar-pro-search` |
301
+ | `perplexity/sonar-reasoning-pro` |
171
302
  | `poolside/laguna-m.1:free` |
172
303
  | `poolside/laguna-xs.2:free` |
173
304
  | `prime-intellect/intellect-3` |
305
+ | `qwen/qwen-2.5-72b-instruct` |
306
+ | `qwen/qwen-2.5-7b-instruct` |
174
307
  | `qwen/qwen-2.5-coder-32b-instruct` |
175
- | `qwen/qwen-3.6-27b` |
176
308
  | `qwen/qwen-plus` |
309
+ | `qwen/qwen-plus-2025-07-28` |
310
+ | `qwen/qwen-plus-2025-07-28:thinking` |
177
311
  | `qwen/qwen2.5-vl-72b-instruct` |
178
- | `qwen/qwen3-235b-a22b-07-25` |
312
+ | `qwen/qwen3-14b` |
313
+ | `qwen/qwen3-235b-a22b` |
314
+ | `qwen/qwen3-235b-a22b-2507` |
179
315
  | `qwen/qwen3-235b-a22b-thinking-2507` |
316
+ | `qwen/qwen3-30b-a3b` |
180
317
  | `qwen/qwen3-30b-a3b-instruct-2507` |
181
318
  | `qwen/qwen3-30b-a3b-thinking-2507` |
319
+ | `qwen/qwen3-32b` |
320
+ | `qwen/qwen3-8b` |
182
321
  | `qwen/qwen3-coder` |
183
322
  | `qwen/qwen3-coder-30b-a3b-instruct` |
184
323
  | `qwen/qwen3-coder-flash` |
324
+ | `qwen/qwen3-coder-next` |
185
325
  | `qwen/qwen3-coder-plus` |
186
- | `qwen/qwen3-coder:exacto` |
326
+ | `qwen/qwen3-coder:free` |
187
327
  | `qwen/qwen3-max` |
328
+ | `qwen/qwen3-max-thinking` |
188
329
  | `qwen/qwen3-next-80b-a3b-instruct` |
330
+ | `qwen/qwen3-next-80b-a3b-instruct:free` |
189
331
  | `qwen/qwen3-next-80b-a3b-thinking` |
332
+ | `qwen/qwen3-vl-235b-a22b-instruct` |
333
+ | `qwen/qwen3-vl-235b-a22b-thinking` |
334
+ | `qwen/qwen3-vl-30b-a3b-instruct` |
335
+ | `qwen/qwen3-vl-30b-a3b-thinking` |
336
+ | `qwen/qwen3-vl-32b-instruct` |
337
+ | `qwen/qwen3-vl-8b-instruct` |
338
+ | `qwen/qwen3-vl-8b-thinking` |
339
+ | `qwen/qwen3.5-122b-a10b` |
340
+ | `qwen/qwen3.5-27b` |
341
+ | `qwen/qwen3.5-35b-a3b` |
190
342
  | `qwen/qwen3.5-397b-a17b` |
343
+ | `qwen/qwen3.5-9b` |
191
344
  | `qwen/qwen3.5-flash-02-23` |
192
345
  | `qwen/qwen3.5-plus-02-15` |
346
+ | `qwen/qwen3.5-plus-20260420` |
347
+ | `qwen/qwen3.6-27b` |
348
+ | `qwen/qwen3.6-35b-a3b` |
349
+ | `qwen/qwen3.6-flash` |
350
+ | `qwen/qwen3.6-max-preview` |
193
351
  | `qwen/qwen3.6-plus` |
194
- | `sourceful/riverflow-v2-fast-preview` |
195
- | `sourceful/riverflow-v2-max-preview` |
196
- | `sourceful/riverflow-v2-standard-preview` |
352
+ | `rekaai/reka-edge` |
353
+ | `rekaai/reka-flash-3` |
354
+ | `relace/relace-apply-3` |
355
+ | `relace/relace-search` |
356
+ | `sao10k/l3-euryale-70b` |
357
+ | `sao10k/l3-lunaris-8b` |
358
+ | `sao10k/l3.1-70b-hanami-x1` |
359
+ | `sao10k/l3.1-euryale-70b` |
360
+ | `sao10k/l3.3-euryale-70b` |
197
361
  | `stepfun/step-3.5-flash` |
362
+ | `switchpoint/router` |
363
+ | `tencent/hunyuan-a13b-instruct` |
198
364
  | `tencent/hy3-preview` |
365
+ | `thedrummer/cydonia-24b-v4.1` |
366
+ | `thedrummer/rocinante-12b` |
367
+ | `thedrummer/skyfall-36b-v2` |
368
+ | `thedrummer/unslopnemo-12b` |
369
+ | `undi95/remm-slerp-l2-13b` |
370
+ | `upstage/solar-pro-3` |
371
+ | `writer/palmyra-x5` |
199
372
  | `x-ai/grok-3` |
200
373
  | `x-ai/grok-3-beta` |
201
374
  | `x-ai/grok-3-mini` |
@@ -203,8 +376,8 @@ ANTHROPIC_API_KEY=ant-...
203
376
  | `x-ai/grok-4` |
204
377
  | `x-ai/grok-4-fast` |
205
378
  | `x-ai/grok-4.1-fast` |
206
- | `x-ai/grok-4.20-beta` |
207
- | `x-ai/grok-4.20-multi-agent-beta` |
379
+ | `x-ai/grok-4.20` |
380
+ | `x-ai/grok-4.20-multi-agent` |
208
381
  | `x-ai/grok-4.3` |
209
382
  | `x-ai/grok-code-fast-1` |
210
383
  | `xiaomi/mimo-v2-flash` |
@@ -212,14 +385,16 @@ ANTHROPIC_API_KEY=ant-...
212
385
  | `xiaomi/mimo-v2-pro` |
213
386
  | `xiaomi/mimo-v2.5` |
214
387
  | `xiaomi/mimo-v2.5-pro` |
388
+ | `z-ai/glm-4-32b` |
215
389
  | `z-ai/glm-4.5` |
216
390
  | `z-ai/glm-4.5-air` |
217
391
  | `z-ai/glm-4.5-air:free` |
218
392
  | `z-ai/glm-4.5v` |
219
393
  | `z-ai/glm-4.6` |
220
- | `z-ai/glm-4.6:exacto` |
394
+ | `z-ai/glm-4.6v` |
221
395
  | `z-ai/glm-4.7` |
222
396
  | `z-ai/glm-4.7-flash` |
223
397
  | `z-ai/glm-5` |
224
398
  | `z-ai/glm-5-turbo` |
225
- | `z-ai/glm-5.1` |
399
+ | `z-ai/glm-5.1` |
400
+ | `z-ai/glm-5v-turbo` |
@@ -1,6 +1,6 @@
1
1
  # Model Providers
2
2
 
3
- Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 3962 models from 117 providers through a single API.
3
+ Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 4223 models from 119 providers through a single API.
4
4
 
5
5
  ## Features
6
6
 
@@ -0,0 +1,151 @@
1
+ # ![OrcaRouter logo](https://models.dev/logos/orcarouter.svg)OrcaRouter
2
+
3
+ Access 81 OrcaRouter models through Mastra's model router. Authentication is handled automatically using the `ORCAROUTER_API_KEY` environment variable.
4
+
5
+ Learn more in the [OrcaRouter documentation](https://docs.orcarouter.ai).
6
+
7
+ ```bash
8
+ ORCAROUTER_API_KEY=your-api-key
9
+ ```
10
+
11
+ ```typescript
12
+ import { Agent } from "@mastra/core/agent";
13
+
14
+ const agent = new Agent({
15
+ id: "my-agent",
16
+ name: "My Agent",
17
+ instructions: "You are a helpful assistant",
18
+ model: "orcarouter/anthropic/claude-haiku-4.5"
19
+ });
20
+
21
+ // Generate a response
22
+ const response = await agent.generate("Hello!");
23
+
24
+ // Stream a response
25
+ const stream = await agent.stream("Tell me a story");
26
+ for await (const chunk of stream) {
27
+ console.log(chunk);
28
+ }
29
+ ```
30
+
31
+ > **Info:** Mastra uses the OpenAI-compatible `/chat/completions` endpoint. Some provider-specific features may not be available. Check the [OrcaRouter documentation](https://docs.orcarouter.ai) for details.
32
+
33
+ ## Models
34
+
35
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
36
+ | ------------------------------------------------------ | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
37
+ | `orcarouter/anthropic/claude-haiku-4.5` | 200K | | | | | | $1 | $5 |
38
+ | `orcarouter/anthropic/claude-opus-4` | 200K | | | | | | $15 | $75 |
39
+ | `orcarouter/anthropic/claude-opus-4.1` | 200K | | | | | | $15 | $75 |
40
+ | `orcarouter/anthropic/claude-opus-4.5` | 200K | | | | | | $5 | $25 |
41
+ | `orcarouter/anthropic/claude-opus-4.6` | 1.0M | | | | | | $5 | $25 |
42
+ | `orcarouter/anthropic/claude-opus-4.7` | 1.0M | | | | | | $5 | $25 |
43
+ | `orcarouter/anthropic/claude-sonnet-4` | 200K | | | | | | $3 | $15 |
44
+ | `orcarouter/anthropic/claude-sonnet-4.5` | 200K | | | | | | $3 | $15 |
45
+ | `orcarouter/anthropic/claude-sonnet-4.6` | 1.0M | | | | | | $3 | $15 |
46
+ | `orcarouter/deepseek/deepseek-chat` | 1.0M | | | | | | $0.14 | $0.28 |
47
+ | `orcarouter/deepseek/deepseek-reasoner` | 1.0M | | | | | | $0.43 | $0.87 |
48
+ | `orcarouter/deepseek/deepseek-v4-flash` | 1.0M | | | | | | $0.19 | $0.37 |
49
+ | `orcarouter/deepseek/deepseek-v4-pro` | 1.0M | | | | | | $0.56 | $1 |
50
+ | `orcarouter/google/gemini-2.5-flash` | 1.0M | | | | | | $0.30 | $3 |
51
+ | `orcarouter/google/gemini-2.5-flash-lite` | 1.0M | | | | | | $0.10 | $0.40 |
52
+ | `orcarouter/google/gemini-2.5-pro` | 1.0M | | | | | | $3 | $15 |
53
+ | `orcarouter/google/gemini-3-flash-preview` | 1.0M | | | | | | $0.50 | $3 |
54
+ | `orcarouter/google/gemini-3-pro-preview` | 1.0M | | | | | | $4 | $18 |
55
+ | `orcarouter/google/gemini-3.1-flash-lite-preview` | 1.0M | | | | | | $0.25 | $2 |
56
+ | `orcarouter/google/gemini-3.1-pro-preview` | 1.0M | | | | | | $4 | $18 |
57
+ | `orcarouter/google/gemini-3.1-pro-preview-customtools` | 1.0M | | | | | | $4 | $18 |
58
+ | `orcarouter/google/gemini-flash-latest` | 1.0M | | | | | | $0.50 | $3 |
59
+ | `orcarouter/google/gemini-flash-lite-latest` | 1.0M | | | | | | $0.25 | $2 |
60
+ | `orcarouter/google/gemma-4-26b-a4b-it` | 256K | | | | | | $0.06 | $0.33 |
61
+ | `orcarouter/google/gemma-4-31b-it` | 256K | | | | | | $0.13 | $0.38 |
62
+ | `orcarouter/grok/grok-4.3` | 1.0M | | | | | | $1 | $3 |
63
+ | `orcarouter/kimi/kimi-k2.5` | 262K | | | | | | $0.60 | $3 |
64
+ | `orcarouter/kimi/kimi-k2.6` | 262K | | | | | | $0.95 | $4 |
65
+ | `orcarouter/minimax/minimax-m2.5` | 205K | | | | | | $0.30 | $1 |
66
+ | `orcarouter/minimax/minimax-m2.5-highspeed` | 205K | | | | | | $0.60 | $2 |
67
+ | `orcarouter/minimax/minimax-m2.7` | 205K | | | | | | $0.30 | $1 |
68
+ | `orcarouter/minimax/minimax-m2.7-highspeed` | 205K | | | | | | $0.60 | $2 |
69
+ | `orcarouter/openai/gpt-3.5-turbo` | 16K | | | | | | $0.50 | $2 |
70
+ | `orcarouter/openai/gpt-4` | 8K | | | | | | $30 | $60 |
71
+ | `orcarouter/openai/gpt-4-turbo` | 128K | | | | | | $10 | $30 |
72
+ | `orcarouter/openai/gpt-4.1` | 1.0M | | | | | | $2 | $8 |
73
+ | `orcarouter/openai/gpt-4.1-mini` | 1.0M | | | | | | $0.40 | $2 |
74
+ | `orcarouter/openai/gpt-4.1-nano` | 1.0M | | | | | | $0.10 | $0.40 |
75
+ | `orcarouter/openai/gpt-4o` | 128K | | | | | | $3 | $10 |
76
+ | `orcarouter/openai/gpt-4o-2024-05-13` | 128K | | | | | | $5 | $15 |
77
+ | `orcarouter/openai/gpt-4o-2024-08-06` | 128K | | | | | | $3 | $10 |
78
+ | `orcarouter/openai/gpt-4o-2024-11-20` | 128K | | | | | | $3 | $10 |
79
+ | `orcarouter/openai/gpt-4o-mini` | 128K | | | | | | $0.15 | $0.60 |
80
+ | `orcarouter/openai/gpt-5` | 400K | | | | | | $1 | $10 |
81
+ | `orcarouter/openai/gpt-5-chat-latest` | 400K | | | | | | $1 | $10 |
82
+ | `orcarouter/openai/gpt-5-codex` | 400K | | | | | | $1 | $10 |
83
+ | `orcarouter/openai/gpt-5-mini` | 400K | | | | | | $0.25 | $2 |
84
+ | `orcarouter/openai/gpt-5-nano` | 400K | | | | | | $0.05 | $0.40 |
85
+ | `orcarouter/openai/gpt-5-pro` | 400K | | | | | | $15 | $120 |
86
+ | `orcarouter/openai/gpt-5.1` | 400K | | | | | | $1 | $10 |
87
+ | `orcarouter/openai/gpt-5.1-chat-latest` | 128K | | | | | | $1 | $10 |
88
+ | `orcarouter/openai/gpt-5.1-codex` | 400K | | | | | | $1 | $10 |
89
+ | `orcarouter/openai/gpt-5.1-codex-max` | 400K | | | | | | $1 | $10 |
90
+ | `orcarouter/openai/gpt-5.1-codex-mini` | 400K | | | | | | $0.25 | $2 |
91
+ | `orcarouter/openai/gpt-5.2` | 400K | | | | | | $2 | $14 |
92
+ | `orcarouter/openai/gpt-5.2-chat-latest` | 128K | | | | | | $2 | $14 |
93
+ | `orcarouter/openai/gpt-5.2-codex` | 400K | | | | | | $2 | $14 |
94
+ | `orcarouter/openai/gpt-5.2-pro` | 400K | | | | | | $21 | $168 |
95
+ | `orcarouter/openai/gpt-5.3-chat-latest` | 128K | | | | | | $2 | $14 |
96
+ | `orcarouter/openai/gpt-5.3-codex` | 400K | | | | | | $2 | $14 |
97
+ | `orcarouter/openai/gpt-5.4` | 1.1M | | | | | | $5 | $23 |
98
+ | `orcarouter/openai/gpt-5.4-mini` | 400K | | | | | | $0.75 | $5 |
99
+ | `orcarouter/openai/gpt-5.4-nano` | 400K | | | | | | $0.20 | $1 |
100
+ | `orcarouter/openai/gpt-5.4-pro` | 1.1M | | | | | | $60 | $270 |
101
+ | `orcarouter/openai/gpt-5.5` | 1.1M | | | | | | $5 | $30 |
102
+ | `orcarouter/openai/gpt-5.5-pro` | 1.1M | | | | | | $30 | $180 |
103
+ | `orcarouter/orcarouter/auto` | 128K | | | | | | — | — |
104
+ | `orcarouter/qwen/qwen3-max` | 262K | | | | | | $0.36 | $1 |
105
+ | `orcarouter/qwen/qwen3.5-122b-a10b` | 262K | | | | | | $0.12 | $0.92 |
106
+ | `orcarouter/qwen/qwen3.5-27b` | 262K | | | | | | $0.09 | $0.69 |
107
+ | `orcarouter/qwen/qwen3.5-35b-a3b` | 262K | | | | | | $0.06 | $0.46 |
108
+ | `orcarouter/qwen/qwen3.5-397b-a17b` | 262K | | | | | | $0.17 | $1 |
109
+ | `orcarouter/qwen/qwen3.5-plus` | 1.0M | | | | | | $0.12 | $0.69 |
110
+ | `orcarouter/qwen/qwen3.6-35b-a3b` | 262K | | | | | | $0.25 | $1 |
111
+ | `orcarouter/qwen/qwen3.6-plus` | 1.0M | | | | | | $0.50 | $3 |
112
+ | `orcarouter/z-ai/glm-4.5` | 131K | | | | | | $0.60 | $2 |
113
+ | `orcarouter/z-ai/glm-4.5-air` | 131K | | | | | | $0.20 | $1 |
114
+ | `orcarouter/z-ai/glm-4.6` | 205K | | | | | | $0.60 | $2 |
115
+ | `orcarouter/z-ai/glm-4.7` | 205K | | | | | | $0.60 | $2 |
116
+ | `orcarouter/z-ai/glm-5` | 205K | | | | | | $1 | $3 |
117
+ | `orcarouter/z-ai/glm-5.1` | 200K | | | | | | $1 | $4 |
118
+
119
+ ## Advanced configuration
120
+
121
+ ### Custom headers
122
+
123
+ ```typescript
124
+ const agent = new Agent({
125
+ id: "custom-agent",
126
+ name: "custom-agent",
127
+ model: {
128
+ url: "https://api.orcarouter.ai/v1",
129
+ id: "orcarouter/anthropic/claude-haiku-4.5",
130
+ apiKey: process.env.ORCAROUTER_API_KEY,
131
+ headers: {
132
+ "X-Custom-Header": "value"
133
+ }
134
+ }
135
+ });
136
+ ```
137
+
138
+ ### Dynamic model selection
139
+
140
+ ```typescript
141
+ const agent = new Agent({
142
+ id: "dynamic-agent",
143
+ name: "Dynamic Agent",
144
+ model: ({ requestContext }) => {
145
+ const useAdvanced = requestContext.task === "complex";
146
+ return useAdvanced
147
+ ? "orcarouter/z-ai/glm-5.1"
148
+ : "orcarouter/anthropic/claude-haiku-4.5";
149
+ }
150
+ });
151
+ ```
@@ -0,0 +1,75 @@
1
+ # ![Umans AI Coding Plan logo](https://models.dev/logos/umans-ai-coding-plan.svg)Umans AI Coding Plan
2
+
3
+ Access 5 Umans AI Coding Plan models through Mastra's model router. Authentication is handled automatically using the `UMANS_AI_CODING_PLAN_API_KEY` environment variable.
4
+
5
+ Learn more in the [Umans AI Coding Plan documentation](https://app.umans.ai/offers/code/docs).
6
+
7
+ ```bash
8
+ UMANS_AI_CODING_PLAN_API_KEY=your-api-key
9
+ ```
10
+
11
+ ```typescript
12
+ import { Agent } from "@mastra/core/agent";
13
+
14
+ const agent = new Agent({
15
+ id: "my-agent",
16
+ name: "My Agent",
17
+ instructions: "You are a helpful assistant",
18
+ model: "umans-ai-coding-plan/umans-coder"
19
+ });
20
+
21
+ // Generate a response
22
+ const response = await agent.generate("Hello!");
23
+
24
+ // Stream a response
25
+ const stream = await agent.stream("Tell me a story");
26
+ for await (const chunk of stream) {
27
+ console.log(chunk);
28
+ }
29
+ ```
30
+
31
+ > **Info:** Mastra uses the OpenAI-compatible `/chat/completions` endpoint. Some provider-specific features may not be available. Check the [Umans AI Coding Plan documentation](https://app.umans.ai/offers/code/docs) for details.
32
+
33
+ ## Models
34
+
35
+ | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
36
+ | -------------------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
37
+ | `umans-ai-coding-plan/umans-coder` | 262K | | | | | | — | — |
38
+ | `umans-ai-coding-plan/umans-flash` | 262K | | | | | | — | — |
39
+ | `umans-ai-coding-plan/umans-glm-5.1` | 205K | | | | | | — | — |
40
+ | `umans-ai-coding-plan/umans-kimi-k2.6` | 262K | | | | | | — | — |
41
+ | `umans-ai-coding-plan/umans-qwen3.6-35b-a3b` | 262K | | | | | | — | — |
42
+
43
+ ## Advanced configuration
44
+
45
+ ### Custom headers
46
+
47
+ ```typescript
48
+ const agent = new Agent({
49
+ id: "custom-agent",
50
+ name: "custom-agent",
51
+ model: {
52
+ url: "https://api.code.umans.ai/v1",
53
+ id: "umans-ai-coding-plan/umans-coder",
54
+ apiKey: process.env.UMANS_AI_CODING_PLAN_API_KEY,
55
+ headers: {
56
+ "X-Custom-Header": "value"
57
+ }
58
+ }
59
+ });
60
+ ```
61
+
62
+ ### Dynamic model selection
63
+
64
+ ```typescript
65
+ const agent = new Agent({
66
+ id: "dynamic-agent",
67
+ name: "Dynamic Agent",
68
+ model: ({ requestContext }) => {
69
+ const useAdvanced = requestContext.task === "complex";
70
+ return useAdvanced
71
+ ? "umans-ai-coding-plan/umans-qwen3.6-35b-a3b"
72
+ : "umans-ai-coding-plan/umans-coder";
73
+ }
74
+ });
75
+ ```
@@ -34,7 +34,7 @@ for await (const chunk of stream) {
34
34
 
35
35
  | Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
36
36
  | --------------------------------- | ------- | ----- | --------- | ----- | ----- | ----- | ---------- | ----------- |
37
- | `xpersona/xpersona-frieren-coder` | 128K | | | | | | $2 | $6 |
37
+ | `xpersona/xpersona-frieren-coder` | 400K | | | | | | $2 | $6 |
38
38
 
39
39
  ## Advanced configuration
40
40
 
@@ -78,6 +78,7 @@ Direct access to individual AI model providers. Each provider offers unique mode
78
78
  - [Ollama Cloud](https://mastra.ai/models/providers/ollama-cloud)
79
79
  - [OpenCode Go](https://mastra.ai/models/providers/opencode-go)
80
80
  - [OpenCode Zen](https://mastra.ai/models/providers/opencode)
81
+ - [OrcaRouter](https://mastra.ai/models/providers/orcarouter)
81
82
  - [OVHcloud AI Endpoints](https://mastra.ai/models/providers/ovhcloud)
82
83
  - [Perplexity](https://mastra.ai/models/providers/perplexity)
83
84
  - [Perplexity Agent](https://mastra.ai/models/providers/perplexity-agent)
@@ -99,6 +100,7 @@ Direct access to individual AI model providers. Each provider offers unique mode
99
100
  - [Tencent TokenHub](https://mastra.ai/models/providers/tencent-tokenhub)
100
101
  - [The Grid AI](https://mastra.ai/models/providers/the-grid-ai)
101
102
  - [Together AI](https://mastra.ai/models/providers/togetherai)
103
+ - [Umans AI Coding Plan](https://mastra.ai/models/providers/umans-ai-coding-plan)
102
104
  - [Upstage](https://mastra.ai/models/providers/upstage)
103
105
  - [Vivgrid](https://mastra.ai/models/providers/vivgrid)
104
106
  - [Vultr](https://mastra.ai/models/providers/vultr)
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @mastra/mcp-docs-server
2
2
 
3
+ ## 1.1.38-alpha.4
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`816b974`](https://github.com/mastra-ai/mastra/commit/816b974b424e4a1bfae3af30cc41263b6f1c0344), [`816b974`](https://github.com/mastra-ai/mastra/commit/816b974b424e4a1bfae3af30cc41263b6f1c0344), [`b32ba5f`](https://github.com/mastra-ai/mastra/commit/b32ba5fde524b46a4ff1bdf38e30d62a2bb29b04)]:
8
+ - @mastra/core@1.35.0-alpha.2
9
+
10
+ ## 1.1.38-alpha.2
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`bad08e9`](https://github.com/mastra-ai/mastra/commit/bad08e99c5291884c3ac76743c78c74f53a302c2)]:
15
+ - @mastra/core@1.35.0-alpha.1
16
+
3
17
  ## 1.1.38-alpha.0
4
18
 
5
19
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mcp-docs-server",
3
- "version": "1.1.38-alpha.1",
3
+ "version": "1.1.38-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",
@@ -29,7 +29,7 @@
29
29
  "jsdom": "^26.1.0",
30
30
  "local-pkg": "^1.1.2",
31
31
  "zod": "^4.3.6",
32
- "@mastra/core": "1.34.1-alpha.0",
32
+ "@mastra/core": "1.35.0-alpha.2",
33
33
  "@mastra/mcp": "^1.7.0"
34
34
  },
35
35
  "devDependencies": {
@@ -46,9 +46,9 @@
46
46
  "tsx": "^4.21.0",
47
47
  "typescript": "^6.0.3",
48
48
  "vitest": "4.1.5",
49
- "@internal/lint": "0.0.95",
50
49
  "@internal/types-builder": "0.0.70",
51
- "@mastra/core": "1.34.1-alpha.0"
50
+ "@internal/lint": "0.0.95",
51
+ "@mastra/core": "1.35.0-alpha.2"
52
52
  },
53
53
  "homepage": "https://mastra.ai",
54
54
  "repository": {