@x12i/ai-profiles 1.6.0 → 1.7.2

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 (100) hide show
  1. package/README.md +96 -28
  2. package/dist/buildCatalogFromOpenRouterApi.d.ts.map +1 -1
  3. package/dist/buildCatalogFromOpenRouterApi.js +2 -1
  4. package/dist/buildCatalogFromOpenRouterApi.js.map +1 -1
  5. package/dist/buildModelsRegistry.d.ts +2 -0
  6. package/dist/buildModelsRegistry.d.ts.map +1 -1
  7. package/dist/buildModelsRegistry.js +5 -5
  8. package/dist/buildModelsRegistry.js.map +1 -1
  9. package/dist/buildResolvedProfile.d.ts +2 -1
  10. package/dist/buildResolvedProfile.d.ts.map +1 -1
  11. package/dist/buildResolvedProfile.js +18 -2
  12. package/dist/buildResolvedProfile.js.map +1 -1
  13. package/dist/catalogEnrichment.d.ts.map +1 -1
  14. package/dist/catalogEnrichment.js +13 -6
  15. package/dist/catalogEnrichment.js.map +1 -1
  16. package/dist/constants.d.ts +2 -0
  17. package/dist/constants.d.ts.map +1 -1
  18. package/dist/constants.js +8 -0
  19. package/dist/constants.js.map +1 -1
  20. package/dist/costPolicy.d.ts +7 -0
  21. package/dist/costPolicy.d.ts.map +1 -0
  22. package/dist/costPolicy.js +81 -0
  23. package/dist/costPolicy.js.map +1 -0
  24. package/dist/data/models-catalog.json +324 -1465
  25. package/dist/data/models-profiles.json +354 -420
  26. package/dist/data/models-profiles.schema.json +38 -11
  27. package/dist/data/models-registry.json +142 -841
  28. package/dist/data/profiles-shortcuts.json +49 -23
  29. package/dist/errors.d.ts +1 -1
  30. package/dist/errors.d.ts.map +1 -1
  31. package/dist/errors.js.map +1 -1
  32. package/dist/index.d.ts +8 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +7 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/modalityPolicy.d.ts +37 -0
  37. package/dist/modalityPolicy.d.ts.map +1 -0
  38. package/dist/modalityPolicy.js +200 -0
  39. package/dist/modalityPolicy.js.map +1 -0
  40. package/dist/modelIdentity.d.ts.map +1 -1
  41. package/dist/modelIdentity.js +9 -1
  42. package/dist/modelIdentity.js.map +1 -1
  43. package/dist/modelsCatalog.d.ts.map +1 -1
  44. package/dist/modelsCatalog.js +1 -0
  45. package/dist/modelsCatalog.js.map +1 -1
  46. package/dist/openRouterSlugPolicy.d.ts +20 -0
  47. package/dist/openRouterSlugPolicy.d.ts.map +1 -0
  48. package/dist/openRouterSlugPolicy.js +66 -0
  49. package/dist/openRouterSlugPolicy.js.map +1 -0
  50. package/dist/profileCatalogSupplement.d.ts.map +1 -1
  51. package/dist/profileCatalogSupplement.js +35 -44
  52. package/dist/profileCatalogSupplement.js.map +1 -1
  53. package/dist/profileRegistryV2.d.ts +8 -8
  54. package/dist/profileRegistryV2.d.ts.map +1 -1
  55. package/dist/profileRegistryV2.js +12 -70
  56. package/dist/profileRegistryV2.js.map +1 -1
  57. package/dist/profileRegistryV3.d.ts +3 -0
  58. package/dist/profileRegistryV3.d.ts.map +1 -1
  59. package/dist/profileRegistryV3.js +113 -103
  60. package/dist/profileRegistryV3.js.map +1 -1
  61. package/dist/resolveAIProfile.d.ts +1 -1
  62. package/dist/resolveAIProfile.d.ts.map +1 -1
  63. package/dist/resolveAIProfile.js +28 -4
  64. package/dist/resolveAIProfile.js.map +1 -1
  65. package/dist/resolveCatalogListing.d.ts +10 -0
  66. package/dist/resolveCatalogListing.d.ts.map +1 -0
  67. package/dist/resolveCatalogListing.js +59 -0
  68. package/dist/resolveCatalogListing.js.map +1 -0
  69. package/dist/resolveModelIdentity.d.ts.map +1 -1
  70. package/dist/resolveModelIdentity.js +1 -0
  71. package/dist/resolveModelIdentity.js.map +1 -1
  72. package/dist/resolveModelRouting.d.ts +2 -2
  73. package/dist/resolveModelRouting.d.ts.map +1 -1
  74. package/dist/resolveModelRouting.js +3 -3
  75. package/dist/resolveModelRouting.js.map +1 -1
  76. package/dist/types.d.ts +78 -10
  77. package/dist/types.d.ts.map +1 -1
  78. package/dist/validateProfileCatalogLinkage.d.ts +8 -0
  79. package/dist/validateProfileCatalogLinkage.d.ts.map +1 -0
  80. package/dist/validateProfileCatalogLinkage.js +212 -0
  81. package/dist/validateProfileCatalogLinkage.js.map +1 -0
  82. package/dist/validateProfileModalityCoverage.d.ts +9 -0
  83. package/dist/validateProfileModalityCoverage.d.ts.map +1 -0
  84. package/dist/validateProfileModalityCoverage.js +52 -0
  85. package/dist/validateProfileModalityCoverage.js.map +1 -0
  86. package/dist/validateProfileTransportPolicy.d.ts +8 -0
  87. package/dist/validateProfileTransportPolicy.d.ts.map +1 -0
  88. package/dist/validateProfileTransportPolicy.js +69 -0
  89. package/dist/validateProfileTransportPolicy.js.map +1 -0
  90. package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
  91. package/dist/validation/validateModelsProfilesJson.js +11 -7
  92. package/dist/validation/validateModelsProfilesJson.js.map +1 -1
  93. package/dist/vendorModelId.d.ts +4 -0
  94. package/dist/vendorModelId.d.ts.map +1 -0
  95. package/dist/vendorModelId.js +14 -0
  96. package/dist/vendorModelId.js.map +1 -0
  97. package/dist/vendorPolicy.d.ts.map +1 -1
  98. package/dist/vendorPolicy.js +1 -0
  99. package/dist/vendorPolicy.js.map +1 -1
  100. package/package.json +5 -4
@@ -2,18 +2,22 @@
2
2
  "schema": "x12i.ai-profiles.model-registry.v3",
3
3
  "registryId": "models-profiles",
4
4
  "generatedAt": "2026-05-29T00:00:00.000Z",
5
- "lastVerifiedAt": "2026-05-29T21:03:52Z",
5
+ "lastVerifiedAt": "2026-05-30T21:56:06Z",
6
6
  "version": "3.0.0",
7
7
  "currency": "USD",
8
8
  "pricingUnit": "1M_tokens",
9
9
  "namingConvention": "lowerCamelCase",
10
10
  "semantics": {
11
11
  "provider": "Billing owner / vendor source of truth for the model SKU.",
12
- "modelId": "Canonical vendor-native model identifier for direct API calls.",
13
- "openRouterModelId": "OpenRouter transport slug; pricing and capabilities are resolved from models-catalog.json at runtime.",
12
+ "modelId": "Catalog lookup key (vendor-native id). Direct and OpenRouter slugs live in models-catalog.json.",
13
+ "openRouterModelId": "Resolved from models-catalog.json at runtime; never stored on profile choices.",
14
14
  "modelStatus": "verified = stable vendor SKU; predicted = forward-looking placeholder — not guaranteed callable.",
15
15
  "requiredCapabilities": "Profile intent contract; concrete model picks remain suggestions until Optimixer selects dynamically.",
16
- "deploymentType": "How the model is operated (proprietary API vs hosted open weights vs self-hosted)."
16
+ "deploymentType": "How the model is operated (proprietary API vs self-hosted CPU). Remote profiles require OpenRouter catalog backing.",
17
+ "cpuLocalProfile": "Only the \"local\" profile runs on-device CPU (funcx / Transformers.js). No OpenRouter.",
18
+ "inputModalities": "Required input media types for profile intent (text, image, audio, video, file).",
19
+ "outputModalities": "Required output media types for profile intent (text, image, audio, video, file).",
20
+ "choiceModalities": "Optional per-choice modality override when catalog linkage is missing."
17
21
  },
18
22
  "sourceCatalog": {
19
23
  "providers": [
@@ -40,6 +44,10 @@
40
44
  {
41
45
  "id": "together",
42
46
  "docsUrl": "https://docs.together.ai/docs/serverless-models"
47
+ },
48
+ {
49
+ "id": "minimax",
50
+ "docsUrl": "https://platform.minimaxi.com/document"
43
51
  }
44
52
  ],
45
53
  "modelsCatalogUrl": "https://open-assets.x12i.com/models-catalog.json"
@@ -72,11 +80,6 @@
72
80
  "outputMode": "text"
73
81
  },
74
82
  "reason": "Very low-cost model for high-volume extraction, classification, routing, and simple transformations.",
75
- "api": {
76
- "defaultTransport": "openrouter",
77
- "vendorModelId": "gemini-2.5-flash-lite",
78
- "openRouterModelId": "google/gemini-2.5-flash-lite"
79
- },
80
83
  "verification": {
81
84
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
82
85
  "sourceRefs": [
@@ -86,8 +89,8 @@
86
89
  },
87
90
  "modelStatus": "verified"
88
91
  },
89
- "cost_floor": {
90
- "choice": "cost_floor",
92
+ "google_floor": {
93
+ "choice": "google_floor",
91
94
  "displayName": "Absolute Cheapest",
92
95
  "description": "Use when the main requirement is minimum cost.",
93
96
  "provider": "google",
@@ -99,11 +102,6 @@
99
102
  "outputMode": "text"
100
103
  },
101
104
  "reason": "Best for background or bulk work where cost matters more than latency or reasoning quality.",
102
- "api": {
103
- "defaultTransport": "openrouter",
104
- "vendorModelId": "gemini-2.5-flash-lite",
105
- "openRouterModelId": "google/gemini-2.5-flash-lite"
106
- },
107
105
  "verification": {
108
106
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
109
107
  "sourceRefs": [
@@ -113,8 +111,8 @@
113
111
  },
114
112
  "modelStatus": "verified"
115
113
  },
116
- "safer_provider": {
117
- "choice": "safer_provider",
114
+ "anthropic_cheap": {
115
+ "choice": "anthropic_cheap",
118
116
  "displayName": "Cheap but Safer",
119
117
  "description": "Use when cheap is required, but you want a stronger instruction-following model.",
120
118
  "provider": "anthropic",
@@ -125,11 +123,6 @@
125
123
  "outputMode": "text"
126
124
  },
127
125
  "reason": "More expensive than the cost-floor option, but better when instruction following and answer quality matter.",
128
- "api": {
129
- "defaultTransport": "openrouter",
130
- "vendorModelId": "claude-haiku-4-5",
131
- "openRouterModelId": "anthropic/claude-haiku-4.5"
132
- },
133
126
  "verification": {
134
127
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
135
128
  "sourceRefs": [
@@ -139,8 +132,8 @@
139
132
  },
140
133
  "modelStatus": "verified"
141
134
  },
142
- "absolute_floor": {
143
- "choice": "absolute_floor",
135
+ "deepseek_cheap": {
136
+ "choice": "deepseek_cheap",
144
137
  "displayName": "DeepSeek V4 Flash",
145
138
  "description": "Lowest-cost option for massive volume when even Flash-Lite tiers are too expensive.",
146
139
  "provider": "deepseek",
@@ -154,11 +147,6 @@
154
147
  "outputMode": "text"
155
148
  },
156
149
  "reason": "2026 pricing floor for massive volume tasks where Google's Flash-Lite is still too costly.",
157
- "api": {
158
- "defaultTransport": "openrouter",
159
- "vendorModelId": "deepseek-v4-flash",
160
- "openRouterModelId": "deepseek/deepseek-v4-flash"
161
- },
162
150
  "verification": {
163
151
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
164
152
  "sourceRefs": [
@@ -167,18 +155,49 @@
167
155
  ]
168
156
  },
169
157
  "modelStatus": "predicted"
158
+ },
159
+ "minimax_cheap": {
160
+ "choice": "minimax_cheap",
161
+ "displayName": "MiniMax M2.5 Cheap",
162
+ "description": "Low-cost Chinese-vendor alternative for high-volume non-critical work.",
163
+ "provider": "minimax",
164
+ "modelId": "minimax-m2.5",
165
+ "modelStatus": "verified",
166
+ "runtime": {
167
+ "instructionTier": "default",
168
+ "backend": "openrouter",
169
+ "reasoningEffort": "minimal",
170
+ "toolPolicy": "none",
171
+ "outputMode": "text",
172
+ "executionMode": "batch"
173
+ },
174
+ "reason": "Competitive APAC pricing with strong coding and office-work fluency for bulk tasks.",
175
+ "verification": {
176
+ "lastVerifiedAt": "2026-05-30T00:00:00Z",
177
+ "sourceRefs": [
178
+ "vendor:minimax",
179
+ "openrouter:catalog"
180
+ ]
181
+ }
170
182
  }
171
183
  },
172
184
  "fallbackChoiceOrder": [
173
185
  "default",
174
- "cost_floor",
175
- "safer_provider",
176
- "absolute_floor"
186
+ "google_floor",
187
+ "anthropic_cheap",
188
+ "deepseek_cheap",
189
+ "minimax_cheap"
177
190
  ],
178
191
  "requiredCapabilities": {
179
192
  "cost": "low",
180
193
  "reasoning": "minimal",
181
- "context": "standard"
194
+ "context": "standard",
195
+ "inputModalities": [
196
+ "text"
197
+ ],
198
+ "outputModalities": [
199
+ "text"
200
+ ]
182
201
  }
183
202
  },
184
203
  "fast": {
@@ -207,11 +226,6 @@
207
226
  "outputMode": "text"
208
227
  },
209
228
  "reason": "Good balance of speed, capability, and structured behavior for real-time product usage.",
210
- "api": {
211
- "defaultTransport": "openrouter",
212
- "vendorModelId": "gpt-4o-mini",
213
- "openRouterModelId": "openai/gpt-4o-mini"
214
- },
215
229
  "verification": {
216
230
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
217
231
  "sourceRefs": [
@@ -221,8 +235,8 @@
221
235
  },
222
236
  "modelStatus": "verified"
223
237
  },
224
- "cheaper_fast": {
225
- "choice": "cheaper_fast",
238
+ "google_fast": {
239
+ "choice": "google_fast",
226
240
  "displayName": "Cheaper Fast",
227
241
  "description": "Fast but more cost-sensitive.",
228
242
  "provider": "google",
@@ -233,11 +247,6 @@
233
247
  "outputMode": "text"
234
248
  },
235
249
  "reason": "Good when speed and cost are more important than highest reasoning quality.",
236
- "api": {
237
- "defaultTransport": "openrouter",
238
- "vendorModelId": "gemini-3.1-flash-lite",
239
- "openRouterModelId": "google/gemini-3.1-flash-lite"
240
- },
241
250
  "verification": {
242
251
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
243
252
  "sourceRefs": [
@@ -245,10 +254,10 @@
245
254
  "openrouter:catalog"
246
255
  ]
247
256
  },
248
- "modelStatus": "predicted"
257
+ "modelStatus": "verified"
249
258
  },
250
- "quality_fast": {
251
- "choice": "quality_fast",
259
+ "anthropic_fast": {
260
+ "choice": "anthropic_fast",
252
261
  "displayName": "Quality Fast",
253
262
  "description": "Fast, but with stronger quality than the cheapest fast options.",
254
263
  "provider": "anthropic",
@@ -259,11 +268,6 @@
259
268
  "outputMode": "text"
260
269
  },
261
270
  "reason": "Useful when you want fast Claude-family behavior for short tasks.",
262
- "api": {
263
- "defaultTransport": "openrouter",
264
- "vendorModelId": "claude-haiku-4-5",
265
- "openRouterModelId": "anthropic/claude-haiku-4.5"
266
- },
267
271
  "verification": {
268
272
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
269
273
  "sourceRefs": [
@@ -287,11 +291,6 @@
287
291
  "outputMode": "text"
288
292
  },
289
293
  "reason": "Strong speed and 2M context at rock-bottom prices for interactive product UX.",
290
- "api": {
291
- "defaultTransport": "openrouter",
292
- "vendorModelId": "grok-build-0.1",
293
- "openRouterModelId": "x-ai/grok-build-0.1"
294
- },
295
294
  "verification": {
296
295
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
297
296
  "sourceRefs": [
@@ -300,19 +299,49 @@
300
299
  ]
301
300
  },
302
301
  "modelStatus": "verified"
302
+ },
303
+ "minimax_fast": {
304
+ "choice": "minimax_fast",
305
+ "displayName": "MiniMax M2 Fast",
306
+ "description": "Compact, low-latency model tuned for agentic and coding workflows.",
307
+ "provider": "minimax",
308
+ "modelId": "minimax-m2",
309
+ "modelStatus": "verified",
310
+ "runtime": {
311
+ "instructionTier": "default",
312
+ "backend": "openrouter",
313
+ "reasoningEffort": "low",
314
+ "toolPolicy": "none",
315
+ "outputMode": "text"
316
+ },
317
+ "reason": "High-efficiency 10B-active model for interactive agent loops at moderate cost.",
318
+ "verification": {
319
+ "lastVerifiedAt": "2026-05-30T00:00:00Z",
320
+ "sourceRefs": [
321
+ "vendor:minimax",
322
+ "openrouter:catalog"
323
+ ]
324
+ }
303
325
  }
304
326
  },
305
327
  "fallbackChoiceOrder": [
306
328
  "default",
307
- "cheaper_fast",
308
- "quality_fast",
309
- "grok_fast"
329
+ "google_fast",
330
+ "anthropic_fast",
331
+ "grok_fast",
332
+ "minimax_fast"
310
333
  ],
311
334
  "requiredCapabilities": {
312
335
  "speed": "high",
313
336
  "cost": "low",
314
337
  "reasoning": "low",
315
- "latency": "low"
338
+ "latency": "low",
339
+ "inputModalities": [
340
+ "text"
341
+ ],
342
+ "outputModalities": [
343
+ "text"
344
+ ]
316
345
  }
317
346
  },
318
347
  "balanced": {
@@ -341,11 +370,6 @@
341
370
  "outputMode": "text"
342
371
  },
343
372
  "reason": "Good default for general graph execution, coding, product logic, and normal reasoning.",
344
- "api": {
345
- "defaultTransport": "openrouter",
346
- "vendorModelId": "gpt-4.1",
347
- "openRouterModelId": "openai/gpt-4.1"
348
- },
349
373
  "verification": {
350
374
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
351
375
  "sourceRefs": [
@@ -355,8 +379,8 @@
355
379
  },
356
380
  "modelStatus": "verified"
357
381
  },
358
- "reasoning_balanced": {
359
- "choice": "reasoning_balanced",
382
+ "anthropic_balanced": {
383
+ "choice": "anthropic_balanced",
360
384
  "displayName": "Reasoning Balanced",
361
385
  "description": "Balanced profile with stronger reasoning behavior.",
362
386
  "provider": "anthropic",
@@ -367,11 +391,6 @@
367
391
  "outputMode": "text"
368
392
  },
369
393
  "reason": "Good when answer quality, writing quality, and reasoning are more important than raw cost.",
370
- "api": {
371
- "defaultTransport": "openrouter",
372
- "vendorModelId": "claude-sonnet-4-6",
373
- "openRouterModelId": "anthropic/claude-sonnet-4.6"
374
- },
375
394
  "verification": {
376
395
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
377
396
  "sourceRefs": [
@@ -381,8 +400,8 @@
381
400
  },
382
401
  "modelStatus": "predicted"
383
402
  },
384
- "cost_balanced": {
385
- "choice": "cost_balanced",
403
+ "google_balanced": {
404
+ "choice": "google_balanced",
386
405
  "displayName": "Cost Balanced",
387
406
  "description": "Balanced but more cost-conscious.",
388
407
  "provider": "google",
@@ -393,11 +412,6 @@
393
412
  "outputMode": "text"
394
413
  },
395
414
  "reason": "Good when you want a balanced model but need a lower-cost alternative.",
396
- "api": {
397
- "defaultTransport": "openrouter",
398
- "vendorModelId": "gemini-3.5-flash",
399
- "openRouterModelId": "google/gemini-3.5-flash"
400
- },
401
415
  "verification": {
402
416
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
403
417
  "sourceRefs": [
@@ -405,19 +419,49 @@
405
419
  "openrouter:catalog"
406
420
  ]
407
421
  },
408
- "modelStatus": "predicted"
422
+ "modelStatus": "verified"
423
+ },
424
+ "minimax_balanced": {
425
+ "choice": "minimax_balanced",
426
+ "displayName": "MiniMax M2.5 Balanced",
427
+ "description": "Balanced general workhorse with strong real-world productivity skills.",
428
+ "provider": "minimax",
429
+ "modelId": "minimax-m2.5",
430
+ "modelStatus": "verified",
431
+ "runtime": {
432
+ "instructionTier": "default",
433
+ "backend": "openrouter",
434
+ "reasoningEffort": "medium",
435
+ "toolPolicy": "none",
436
+ "outputMode": "text"
437
+ },
438
+ "reason": "Good mid-tier alternative when you want MiniMax pricing with solid general capability.",
439
+ "verification": {
440
+ "lastVerifiedAt": "2026-05-30T00:00:00Z",
441
+ "sourceRefs": [
442
+ "vendor:minimax",
443
+ "openrouter:catalog"
444
+ ]
445
+ }
409
446
  }
410
447
  },
411
448
  "fallbackChoiceOrder": [
412
449
  "default",
413
- "reasoning_balanced",
414
- "cost_balanced"
450
+ "anthropic_balanced",
451
+ "google_balanced",
452
+ "minimax_balanced"
415
453
  ],
416
454
  "requiredCapabilities": {
417
455
  "reasoning": "medium",
418
456
  "coding": true,
419
457
  "context": "standard",
420
- "cost": "medium"
458
+ "cost": "medium",
459
+ "inputModalities": [
460
+ "text"
461
+ ],
462
+ "outputModalities": [
463
+ "text"
464
+ ]
421
465
  }
422
466
  },
423
467
  "deep": {
@@ -447,11 +491,6 @@
447
491
  "outputMode": "text"
448
492
  },
449
493
  "reason": "Strong default for architecture, planning, code review, analysis, and complex workflows.",
450
- "api": {
451
- "defaultTransport": "openrouter",
452
- "vendorModelId": "claude-sonnet-4-5",
453
- "openRouterModelId": "anthropic/claude-sonnet-4.5"
454
- },
455
494
  "verification": {
456
495
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
457
496
  "sourceRefs": [
@@ -473,11 +512,6 @@
473
512
  "outputMode": "text"
474
513
  },
475
514
  "reason": "Strong alternative for coding, architecture, and product reasoning.",
476
- "api": {
477
- "defaultTransport": "openrouter",
478
- "vendorModelId": "gpt-5.4",
479
- "openRouterModelId": "openai/gpt-5.4"
480
- },
481
515
  "verification": {
482
516
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
483
517
  "sourceRefs": [
@@ -487,8 +521,8 @@
487
521
  },
488
522
  "modelStatus": "predicted"
489
523
  },
490
- "long_context_deep": {
491
- "choice": "long_context_deep",
524
+ "google_deep": {
525
+ "choice": "google_deep",
492
526
  "displayName": "Long-Context Deep",
493
527
  "description": "Deep reasoning with strong long-context handling.",
494
528
  "provider": "google",
@@ -499,11 +533,6 @@
499
533
  "outputMode": "text"
500
534
  },
501
535
  "reason": "Good alternative when the task needs large-context reading and reasoning.",
502
- "api": {
503
- "defaultTransport": "openrouter",
504
- "vendorModelId": "gemini-3.5-flash",
505
- "openRouterModelId": "google/gemini-3.5-flash"
506
- },
507
536
  "verification": {
508
537
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
509
538
  "sourceRefs": [
@@ -511,7 +540,7 @@
511
540
  "openrouter:catalog"
512
541
  ]
513
542
  },
514
- "modelStatus": "predicted"
543
+ "modelStatus": "verified"
515
544
  },
516
545
  "deepseek_pro": {
517
546
  "choice": "deepseek_pro",
@@ -527,11 +556,6 @@
527
556
  "outputMode": "text"
528
557
  },
529
558
  "reason": "Flagship-class reasoning without Opus or GPT-5.5 pricing.",
530
- "api": {
531
- "defaultTransport": "openrouter",
532
- "vendorModelId": "deepseek-v4-pro",
533
- "openRouterModelId": "deepseek/deepseek-v4-pro"
534
- },
535
559
  "verification": {
536
560
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
537
561
  "sourceRefs": [
@@ -555,11 +579,6 @@
555
579
  "outputMode": "text"
556
580
  },
557
581
  "reason": "Alternative premium reasoning with very large context at moderate cost.",
558
- "api": {
559
- "defaultTransport": "openrouter",
560
- "vendorModelId": "grok-4.3",
561
- "openRouterModelId": "x-ai/grok-4.3"
562
- },
563
582
  "verification": {
564
583
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
565
584
  "sourceRefs": [
@@ -568,20 +587,50 @@
568
587
  ]
569
588
  },
570
589
  "modelStatus": "predicted"
590
+ },
591
+ "minimax_deep": {
592
+ "choice": "minimax_deep",
593
+ "displayName": "MiniMax M2.7 Deep",
594
+ "description": "Flagship MiniMax reasoning with agentic multi-step execution.",
595
+ "provider": "minimax",
596
+ "modelId": "minimax-m2.7",
597
+ "modelStatus": "verified",
598
+ "runtime": {
599
+ "instructionTier": "reasoning",
600
+ "backend": "openrouter",
601
+ "reasoningEffort": "high",
602
+ "toolPolicy": "none",
603
+ "outputMode": "text"
604
+ },
605
+ "reason": "Premium MiniMax tier for complex planning, analysis, and agent workflows.",
606
+ "verification": {
607
+ "lastVerifiedAt": "2026-05-30T00:00:00Z",
608
+ "sourceRefs": [
609
+ "vendor:minimax",
610
+ "openrouter:catalog"
611
+ ]
612
+ }
571
613
  }
572
614
  },
573
615
  "fallbackChoiceOrder": [
574
616
  "default",
575
617
  "openai_deep",
576
- "long_context_deep",
618
+ "google_deep",
577
619
  "deepseek_pro",
578
- "grok_flagship"
620
+ "grok_flagship",
621
+ "minimax_deep"
579
622
  ],
580
623
  "requiredCapabilities": {
581
624
  "reasoning": "high",
582
625
  "coding": true,
583
626
  "context": "large",
584
- "quality": "high"
627
+ "quality": "high",
628
+ "inputModalities": [
629
+ "text"
630
+ ],
631
+ "outputModalities": [
632
+ "text"
633
+ ]
585
634
  }
586
635
  },
587
636
  "pro": {
@@ -611,11 +660,6 @@
611
660
  "outputMode": "text"
612
661
  },
613
662
  "reason": "Best for critical reasoning, hard coding, and professional-grade outputs.",
614
- "api": {
615
- "defaultTransport": "openrouter",
616
- "vendorModelId": "gpt-5.5",
617
- "openRouterModelId": "openai/gpt-5.5"
618
- },
619
663
  "verification": {
620
664
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
621
665
  "sourceRefs": [
@@ -637,11 +681,6 @@
637
681
  "outputMode": "text"
638
682
  },
639
683
  "reason": "Best Claude-family option for premium reasoning and writing.",
640
- "api": {
641
- "defaultTransport": "openrouter",
642
- "vendorModelId": "claude-opus-4-8",
643
- "openRouterModelId": "anthropic/claude-opus-4.8"
644
- },
645
684
  "verification": {
646
685
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
647
686
  "sourceRefs": [
@@ -651,8 +690,8 @@
651
690
  },
652
691
  "modelStatus": "predicted"
653
692
  },
654
- "cost_pro": {
655
- "choice": "cost_pro",
693
+ "anthropic_pro": {
694
+ "choice": "anthropic_pro",
656
695
  "displayName": "Cost-Aware Pro",
657
696
  "description": "Premium-like behavior with lower cost.",
658
697
  "provider": "anthropic",
@@ -663,11 +702,6 @@
663
702
  "outputMode": "text"
664
703
  },
665
704
  "reason": "Good when pro-level quality is desired but Opus/GPT-5.5 cost is too high.",
666
- "api": {
667
- "defaultTransport": "openrouter",
668
- "vendorModelId": "claude-sonnet-4-6",
669
- "openRouterModelId": "anthropic/claude-sonnet-4.6"
670
- },
671
705
  "verification": {
672
706
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
673
707
  "sourceRefs": [
@@ -681,12 +715,18 @@
681
715
  "fallbackChoiceOrder": [
682
716
  "default",
683
717
  "claude_pro",
684
- "cost_pro"
718
+ "anthropic_pro"
685
719
  ],
686
720
  "requiredCapabilities": {
687
721
  "reasoning": "high",
688
722
  "quality": "premium",
689
- "context": "large"
723
+ "context": "large",
724
+ "inputModalities": [
725
+ "text"
726
+ ],
727
+ "outputModalities": [
728
+ "text"
729
+ ]
690
730
  }
691
731
  },
692
732
  "json": {
@@ -721,11 +761,6 @@
721
761
  "temperature": 0
722
762
  },
723
763
  "reason": "Good default for reliable JSON/schema output at reasonable cost.",
724
- "api": {
725
- "defaultTransport": "openrouter",
726
- "vendorModelId": "gpt-4o-mini",
727
- "openRouterModelId": "openai/gpt-4o-mini"
728
- },
729
764
  "verification": {
730
765
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
731
766
  "sourceRefs": [
@@ -735,8 +770,8 @@
735
770
  },
736
771
  "modelStatus": "verified"
737
772
  },
738
- "cheap_json": {
739
- "choice": "cheap_json",
773
+ "google_json": {
774
+ "choice": "google_json",
740
775
  "displayName": "Cheap JSON",
741
776
  "description": "Lower-cost structured-output option.",
742
777
  "provider": "google",
@@ -748,11 +783,6 @@
748
783
  "temperature": 0
749
784
  },
750
785
  "reason": "Good for high-volume extraction/classification where low cost matters.",
751
- "api": {
752
- "defaultTransport": "openrouter",
753
- "vendorModelId": "gemini-3.1-flash-lite",
754
- "openRouterModelId": "google/gemini-3.1-flash-lite"
755
- },
756
786
  "verification": {
757
787
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
758
788
  "sourceRefs": [
@@ -760,10 +790,10 @@
760
790
  "openrouter:catalog"
761
791
  ]
762
792
  },
763
- "modelStatus": "predicted"
793
+ "modelStatus": "verified"
764
794
  },
765
- "quality_json": {
766
- "choice": "quality_json",
795
+ "anthropic_json": {
796
+ "choice": "anthropic_json",
767
797
  "displayName": "Quality JSON",
768
798
  "description": "Structured output with stronger reasoning.",
769
799
  "provider": "anthropic",
@@ -775,11 +805,6 @@
775
805
  "temperature": 0
776
806
  },
777
807
  "reason": "Better for complex extraction where reasoning and interpretation are needed.",
778
- "api": {
779
- "defaultTransport": "openrouter",
780
- "vendorModelId": "claude-sonnet-4-6",
781
- "openRouterModelId": "anthropic/claude-sonnet-4.6"
782
- },
783
808
  "verification": {
784
809
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
785
810
  "sourceRefs": [
@@ -792,13 +817,19 @@
792
817
  },
793
818
  "fallbackChoiceOrder": [
794
819
  "default",
795
- "cheap_json",
796
- "quality_json"
820
+ "google_json",
821
+ "anthropic_json"
797
822
  ],
798
823
  "requiredCapabilities": {
799
824
  "structuredOutput": true,
800
825
  "reasoning": "low",
801
- "supportsJsonSchema": true
826
+ "supportsJsonSchema": true,
827
+ "inputModalities": [
828
+ "text"
829
+ ],
830
+ "outputModalities": [
831
+ "text"
832
+ ]
802
833
  }
803
834
  },
804
835
  "agentic": {
@@ -831,11 +862,6 @@
831
862
  "outputMode": "text"
832
863
  },
833
864
  "reason": "Strong default for multi-step planning, tool use, and agent workflows.",
834
- "api": {
835
- "defaultTransport": "openrouter",
836
- "vendorModelId": "claude-sonnet-4-5",
837
- "openRouterModelId": "anthropic/claude-sonnet-4.5"
838
- },
839
865
  "verification": {
840
866
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
841
867
  "sourceRefs": [
@@ -857,11 +883,6 @@
857
883
  "outputMode": "text"
858
884
  },
859
885
  "reason": "Good for coding agents, product workflows, and tool orchestration.",
860
- "api": {
861
- "defaultTransport": "openrouter",
862
- "vendorModelId": "gpt-5.4",
863
- "openRouterModelId": "openai/gpt-5.4"
864
- },
865
886
  "verification": {
866
887
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
867
888
  "sourceRefs": [
@@ -871,8 +892,8 @@
871
892
  },
872
893
  "modelStatus": "predicted"
873
894
  },
874
- "cheap_agentic": {
875
- "choice": "cheap_agentic",
895
+ "google_agentic": {
896
+ "choice": "google_agentic",
876
897
  "displayName": "Cheap Agentic",
877
898
  "description": "Lower-cost tool-use profile.",
878
899
  "provider": "google",
@@ -883,11 +904,6 @@
883
904
  "outputMode": "text"
884
905
  },
885
906
  "reason": "Good when the agentic workload is moderate and cost matters.",
886
- "api": {
887
- "defaultTransport": "openrouter",
888
- "vendorModelId": "gemini-3.5-flash",
889
- "openRouterModelId": "google/gemini-3.5-flash"
890
- },
891
907
  "verification": {
892
908
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
893
909
  "sourceRefs": [
@@ -895,19 +911,49 @@
895
911
  "openrouter:catalog"
896
912
  ]
897
913
  },
898
- "modelStatus": "predicted"
914
+ "modelStatus": "verified"
915
+ },
916
+ "minimax_agentic": {
917
+ "choice": "minimax_agentic",
918
+ "displayName": "MiniMax M2.7 Agentic",
919
+ "description": "MiniMax alternative for tool use and multi-step agent execution.",
920
+ "provider": "minimax",
921
+ "modelId": "minimax-m2.7",
922
+ "modelStatus": "verified",
923
+ "runtime": {
924
+ "instructionTier": "default",
925
+ "backend": "openrouter",
926
+ "reasoningEffort": "high",
927
+ "toolPolicy": "write-with-approval",
928
+ "outputMode": "text"
929
+ },
930
+ "reason": "Built for autonomous productivity with strong agentic and planning behavior.",
931
+ "verification": {
932
+ "lastVerifiedAt": "2026-05-30T00:00:00Z",
933
+ "sourceRefs": [
934
+ "vendor:minimax",
935
+ "openrouter:catalog"
936
+ ]
937
+ }
899
938
  }
900
939
  },
901
940
  "fallbackChoiceOrder": [
902
941
  "default",
903
942
  "openai_agentic",
904
- "cheap_agentic"
943
+ "google_agentic",
944
+ "minimax_agentic"
905
945
  ],
906
946
  "requiredCapabilities": {
907
947
  "reasoning": "medium",
908
948
  "coding": true,
909
949
  "supportsTools": true,
910
- "context": "large"
950
+ "context": "large",
951
+ "inputModalities": [
952
+ "text"
953
+ ],
954
+ "outputModalities": [
955
+ "text"
956
+ ]
911
957
  }
912
958
  },
913
959
  "research": {
@@ -945,11 +991,6 @@
945
991
  "allowFileSearch": true
946
992
  },
947
993
  "reason": "Strong default for reading, comparing sources, and synthesizing long-context information.",
948
- "api": {
949
- "defaultTransport": "openrouter",
950
- "vendorModelId": "claude-sonnet-4-5",
951
- "openRouterModelId": "anthropic/claude-sonnet-4.5"
952
- },
953
994
  "verification": {
954
995
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
955
996
  "sourceRefs": [
@@ -959,8 +1000,8 @@
959
1000
  },
960
1001
  "modelStatus": "verified"
961
1002
  },
962
- "premium_research": {
963
- "choice": "premium_research",
1003
+ "openai_research": {
1004
+ "choice": "openai_research",
964
1005
  "displayName": "Premium Research",
965
1006
  "description": "Higher-quality research profile.",
966
1007
  "provider": "openai",
@@ -974,11 +1015,6 @@
974
1015
  "allowFileSearch": true
975
1016
  },
976
1017
  "reason": "Good when research quality matters more than cost.",
977
- "api": {
978
- "defaultTransport": "openrouter",
979
- "vendorModelId": "gpt-5.5",
980
- "openRouterModelId": "openai/gpt-5.5"
981
- },
982
1018
  "verification": {
983
1019
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
984
1020
  "sourceRefs": [
@@ -988,8 +1024,8 @@
988
1024
  },
989
1025
  "modelStatus": "verified"
990
1026
  },
991
- "long_context_research": {
992
- "choice": "long_context_research",
1027
+ "google_research": {
1028
+ "choice": "google_research",
993
1029
  "displayName": "Long-Context Research",
994
1030
  "description": "Research profile optimized for large context.",
995
1031
  "provider": "google",
@@ -1003,11 +1039,6 @@
1003
1039
  "allowFileSearch": true
1004
1040
  },
1005
1041
  "reason": "Good when research requires very large context windows.",
1006
- "api": {
1007
- "defaultTransport": "openrouter",
1008
- "vendorModelId": "gemini-3.5-flash",
1009
- "openRouterModelId": "google/gemini-3.5-flash"
1010
- },
1011
1042
  "verification": {
1012
1043
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1013
1044
  "sourceRefs": [
@@ -1015,18 +1046,24 @@
1015
1046
  "openrouter:catalog"
1016
1047
  ]
1017
1048
  },
1018
- "modelStatus": "predicted"
1049
+ "modelStatus": "verified"
1019
1050
  }
1020
1051
  },
1021
1052
  "fallbackChoiceOrder": [
1022
1053
  "default",
1023
- "premium_research",
1024
- "long_context_research"
1054
+ "openai_research",
1055
+ "google_research"
1025
1056
  ],
1026
1057
  "requiredCapabilities": {
1027
1058
  "reasoning": "high",
1028
1059
  "context": "large",
1029
- "quality": "high"
1060
+ "quality": "high",
1061
+ "inputModalities": [
1062
+ "text"
1063
+ ],
1064
+ "outputModalities": [
1065
+ "text"
1066
+ ]
1030
1067
  }
1031
1068
  },
1032
1069
  "cyber": {
@@ -1056,11 +1093,6 @@
1056
1093
  "outputMode": "text"
1057
1094
  },
1058
1095
  "reason": "Nuanced reasoning for loopholes, fraud indicators, and subtle contract risks.",
1059
- "api": {
1060
- "defaultTransport": "openrouter",
1061
- "vendorModelId": "claude-sonnet-4-5",
1062
- "openRouterModelId": "anthropic/claude-sonnet-4.5"
1063
- },
1064
1096
  "verification": {
1065
1097
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1066
1098
  "sourceRefs": [
@@ -1082,11 +1114,6 @@
1082
1114
  "outputMode": "schema"
1083
1115
  },
1084
1116
  "reason": "Massive context for raw security logs and structured JSON alerts at lower cost.",
1085
- "api": {
1086
- "defaultTransport": "openrouter",
1087
- "vendorModelId": "gemini-3.5-flash",
1088
- "openRouterModelId": "google/gemini-3.5-flash"
1089
- },
1090
1117
  "verification": {
1091
1118
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1092
1119
  "sourceRefs": [
@@ -1094,7 +1121,7 @@
1094
1121
  "openrouter:catalog"
1095
1122
  ]
1096
1123
  },
1097
- "modelStatus": "predicted"
1124
+ "modelStatus": "verified"
1098
1125
  },
1099
1126
  "deep_forensics": {
1100
1127
  "choice": "deep_forensics",
@@ -1110,11 +1137,6 @@
1110
1137
  "outputMode": "text"
1111
1138
  },
1112
1139
  "reason": "Top-tier reliability for complex logic flaws in code or architecture.",
1113
- "api": {
1114
- "defaultTransport": "openrouter",
1115
- "vendorModelId": "gpt-5.5",
1116
- "openRouterModelId": "openai/gpt-5.5"
1117
- },
1118
1140
  "verification": {
1119
1141
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1120
1142
  "sourceRefs": [
@@ -1133,7 +1155,13 @@
1133
1155
  "requiredCapabilities": {
1134
1156
  "reasoning": "high",
1135
1157
  "coding": true,
1136
- "context": "large"
1158
+ "context": "large",
1159
+ "inputModalities": [
1160
+ "text"
1161
+ ],
1162
+ "outputModalities": [
1163
+ "text"
1164
+ ]
1137
1165
  }
1138
1166
  },
1139
1167
  "content": {
@@ -1163,11 +1191,6 @@
1163
1191
  "outputMode": "text"
1164
1192
  },
1165
1193
  "reason": "Natural, least AI-sounding prose for marketing and long-form copy.",
1166
- "api": {
1167
- "defaultTransport": "openrouter",
1168
- "vendorModelId": "claude-sonnet-4-5",
1169
- "openRouterModelId": "anthropic/claude-sonnet-4.5"
1170
- },
1171
1194
  "verification": {
1172
1195
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1173
1196
  "sourceRefs": [
@@ -1190,11 +1213,6 @@
1190
1213
  "outputMode": "schema"
1191
1214
  },
1192
1215
  "reason": "Hundreds of persona-led pages need cost efficiency and structured front-matter output.",
1193
- "api": {
1194
- "defaultTransport": "openrouter",
1195
- "vendorModelId": "gemini-3.1-flash-lite",
1196
- "openRouterModelId": "google/gemini-3.1-flash-lite"
1197
- },
1198
1216
  "verification": {
1199
1217
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1200
1218
  "sourceRefs": [
@@ -1202,7 +1220,7 @@
1202
1220
  "openrouter:catalog"
1203
1221
  ]
1204
1222
  },
1205
- "modelStatus": "predicted"
1223
+ "modelStatus": "verified"
1206
1224
  },
1207
1225
  "brand_voice": {
1208
1226
  "choice": "brand_voice",
@@ -1216,11 +1234,6 @@
1216
1234
  "outputMode": "text"
1217
1235
  },
1218
1236
  "reason": "When brand voice, tone, and persuasive copywriting are paramount.",
1219
- "api": {
1220
- "defaultTransport": "openrouter",
1221
- "vendorModelId": "claude-opus-4-8",
1222
- "openRouterModelId": "anthropic/claude-opus-4.8"
1223
- },
1224
1237
  "verification": {
1225
1238
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1226
1239
  "sourceRefs": [
@@ -1239,7 +1252,13 @@
1239
1252
  "requiredCapabilities": {
1240
1253
  "reasoning": "medium",
1241
1254
  "context": "standard",
1242
- "quality": "high"
1255
+ "quality": "high",
1256
+ "inputModalities": [
1257
+ "text"
1258
+ ],
1259
+ "outputModalities": [
1260
+ "text"
1261
+ ]
1243
1262
  }
1244
1263
  },
1245
1264
  "summarization": {
@@ -1268,11 +1287,6 @@
1268
1287
  "outputMode": "text"
1269
1288
  },
1270
1289
  "reason": "Fast and capable at reading comprehension and triage summaries.",
1271
- "api": {
1272
- "defaultTransport": "openrouter",
1273
- "vendorModelId": "claude-haiku-4-5",
1274
- "openRouterModelId": "anthropic/claude-haiku-4.5"
1275
- },
1276
1290
  "verification": {
1277
1291
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1278
1292
  "sourceRefs": [
@@ -1287,18 +1301,13 @@
1287
1301
  "displayName": "Mega Context Summarization",
1288
1302
  "description": "Compressing entire repositories, books, or multi-year document histories.",
1289
1303
  "provider": "google",
1290
- "modelId": "gemini-2.5-pro",
1304
+ "modelId": "gemini-3.5-flash",
1291
1305
  "runtime": {
1292
1306
  "reasoningEffort": "high",
1293
1307
  "toolPolicy": "none",
1294
1308
  "outputMode": "text"
1295
1309
  },
1296
- "reason": "When input exceeds ~200k tokens, Pro-tier long context handles needle-in-haystack retrieval best.",
1297
- "api": {
1298
- "defaultTransport": "openrouter",
1299
- "vendorModelId": "gemini-2.5-pro",
1300
- "openRouterModelId": "google/gemini-2.5-pro"
1301
- },
1310
+ "reason": "When input exceeds ~200k tokens, Gemini 3.5 Flash long context handles needle-in-haystack retrieval best.",
1302
1311
  "verification": {
1303
1312
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1304
1313
  "sourceRefs": [
@@ -1316,7 +1325,13 @@
1316
1325
  "requiredCapabilities": {
1317
1326
  "reasoning": "low",
1318
1327
  "cost": "low",
1319
- "context": "large"
1328
+ "context": "large",
1329
+ "inputModalities": [
1330
+ "text"
1331
+ ],
1332
+ "outputModalities": [
1333
+ "text"
1334
+ ]
1320
1335
  }
1321
1336
  },
1322
1337
  "vision": {
@@ -1345,11 +1360,6 @@
1345
1360
  "outputMode": "text"
1346
1361
  },
1347
1362
  "reason": "Strong spatial reasoning and chart interpretation.",
1348
- "api": {
1349
- "defaultTransport": "openrouter",
1350
- "vendorModelId": "gpt-4.1",
1351
- "openRouterModelId": "openai/gpt-4.1"
1352
- },
1353
1363
  "verification": {
1354
1364
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1355
1365
  "sourceRefs": [
@@ -1371,11 +1381,6 @@
1371
1381
  "outputMode": "schema"
1372
1382
  },
1373
1383
  "reason": "Maintains document hierarchy and outputs extracted data to strict JSON schemas.",
1374
- "api": {
1375
- "defaultTransport": "openrouter",
1376
- "vendorModelId": "claude-sonnet-4-6",
1377
- "openRouterModelId": "anthropic/claude-sonnet-4.6"
1378
- },
1379
1384
  "verification": {
1380
1385
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1381
1386
  "sourceRefs": [
@@ -1393,105 +1398,20 @@
1393
1398
  "requiredCapabilities": {
1394
1399
  "reasoning": "medium",
1395
1400
  "supportsVision": true,
1396
- "context": "large"
1397
- }
1398
- },
1399
- "open_weights": {
1400
- "profile": "open_weights",
1401
- "displayName": "Open Weights Ecosystem",
1402
- "description": "Hosted open-source models as a hedge against proprietary lock-in, with pathways to self-hosting.",
1403
- "category": "resilience",
1404
- "aliases": [
1405
- "llama",
1406
- "qwen",
1407
- "mistral",
1408
- "self-hostable"
1409
- ],
1410
- "defaultChoice": "default",
1411
- "choices": {
1412
- "default": {
1413
- "choice": "default",
1414
- "displayName": "Llama 3.3 70B",
1415
- "description": "Standard open-weights workhorse with a clear self-hosting path when compliance requires it.",
1416
- "provider": "together",
1417
- "modelId": "meta-llama/Llama-3.3-70B-Instruct-Turbo",
1418
- "runtime": {
1419
- "instructionTier": "default",
1420
- "backend": "openrouter",
1421
- "reasoningEffort": "medium",
1422
- "toolPolicy": "none",
1423
- "outputMode": "text"
1424
- },
1425
- "metadata": {
1426
- "openRouter": "vendor-direct"
1427
- },
1428
- "reason": "Direct pathway to self-hosting if privacy or vendor independence is required.",
1429
- "api": {
1430
- "defaultTransport": "direct",
1431
- "vendorModelId": "meta-llama/Llama-3.3-70B-Instruct-Turbo",
1432
- "openRouterModelId": null
1433
- },
1434
- "verification": {
1435
- "lastVerifiedAt": "2026-05-29T17:08:03Z",
1436
- "sourceRefs": [
1437
- "vendor:together",
1438
- "openrouter:catalog"
1439
- ]
1440
- },
1441
- "modelStatus": "verified",
1442
- "deploymentType": "openWeightsHosted"
1443
- },
1444
- "multilingual_code": {
1445
- "choice": "multilingual_code",
1446
- "displayName": "Qwen 2.5 72B",
1447
- "description": "Strong open-weights option for coding and non-English workloads.",
1448
- "provider": "together",
1449
- "modelId": "Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
1450
- "runtime": {
1451
- "instructionTier": "default",
1452
- "backend": "openrouter",
1453
- "reasoningEffort": "high",
1454
- "toolPolicy": "none",
1455
- "outputMode": "text"
1456
- },
1457
- "metadata": {
1458
- "openRouter": "vendor-direct"
1459
- },
1460
- "reason": "Top-tier Chinese open-weights model; exceptionally strong at coding and multilingual tasks.",
1461
- "api": {
1462
- "defaultTransport": "direct",
1463
- "vendorModelId": "Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
1464
- "openRouterModelId": null
1465
- },
1466
- "verification": {
1467
- "lastVerifiedAt": "2026-05-29T17:08:03Z",
1468
- "sourceRefs": [
1469
- "vendor:together",
1470
- "openrouter:catalog"
1471
- ]
1472
- },
1473
- "modelStatus": "verified",
1474
- "deploymentType": "openWeightsHosted"
1475
- }
1476
- },
1477
- "fallbackChoiceOrder": [
1478
- "default",
1479
- "multilingual_code"
1480
- ],
1481
- "requiredCapabilities": {
1482
- "reasoning": "medium",
1483
- "coding": true,
1484
- "cost": "medium"
1485
- },
1486
- "deploymentType": "openWeightsHosted",
1487
- "metadata": {
1488
- "deploymentStrategy": "openWeightsHosted"
1401
+ "context": "large",
1402
+ "inputModalities": [
1403
+ "text",
1404
+ "image"
1405
+ ],
1406
+ "outputModalities": [
1407
+ "text"
1408
+ ]
1489
1409
  }
1490
1410
  },
1491
1411
  "local": {
1492
1412
  "profile": "local",
1493
- "displayName": "Local / CPU",
1494
- "description": "On-device inference via FuncX CPU backends. No OpenRouter. Uses cpu instruction tier.",
1413
+ "displayName": "Local / CPU (no OpenRouter)",
1414
+ "description": "On-device inference only — llama.cpp GGUF or Transformers.js on CPU. Does not call OpenRouter or any cloud LLM API.",
1495
1415
  "category": "local",
1496
1416
  "aliases": [
1497
1417
  "weak",
@@ -1499,61 +1419,66 @@
1499
1419
  "on-device"
1500
1420
  ],
1501
1421
  "defaultChoice": "llama_cpp_gguf",
1422
+ "deploymentType": "selfHosted",
1423
+ "metadata": {
1424
+ "transport": "cpu-local",
1425
+ "openRouter": "cpu-local",
1426
+ "billingModel": "self_hosted"
1427
+ },
1502
1428
  "choices": {
1503
1429
  "llama_cpp_gguf": {
1504
1430
  "choice": "llama_cpp_gguf",
1505
- "displayName": "llama.cpp (GGUF)",
1506
- "description": "Local GGUF via node-llama-cpp. Path from LLAMA_CPP_MODEL_PATH.",
1431
+ "displayName": "llama.cpp GGUF (CPU, offline)",
1432
+ "description": "Runs a local GGUF weights file via node-llama-cpp. Configure LLAMA_CPP_MODEL_PATH. No network LLM calls.",
1507
1433
  "provider": "local",
1508
1434
  "modelId": "funcx:llama-cpp:gguf",
1509
1435
  "runtime": {
1510
1436
  "instructionTier": "cpu",
1437
+ "executionMode": "offline",
1511
1438
  "backend": "llama-cpp",
1512
1439
  "reasoningEffort": "minimal",
1513
- "executionMode": "offline",
1514
1440
  "temperature": 0.1,
1515
1441
  "toolPolicy": "none",
1516
1442
  "outputMode": "text"
1517
1443
  },
1518
1444
  "metadata": {
1445
+ "openRouter": "cpu-local",
1519
1446
  "funcxBackend": "llama-cpp",
1520
1447
  "envModelPath": "LLAMA_CPP_MODEL_PATH",
1521
1448
  "envThreads": "LLAMA_CPP_THREADS",
1522
1449
  "envContextSize": "LLAMA_CPP_CONTEXT_SIZE",
1523
1450
  "defaultModelPath": "./models/model.gguf",
1524
1451
  "optionalDep": "node-llama-cpp",
1525
- "billingModel": "self_hosted"
1526
- },
1527
- "api": {
1528
- "defaultTransport": "direct",
1529
- "vendorModelId": "funcx:llama-cpp:gguf",
1530
- "openRouterModelId": null
1452
+ "billingModel": "self_hosted",
1453
+ "device": "cpu"
1531
1454
  },
1532
1455
  "verification": {
1533
1456
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1534
1457
  "sourceRefs": [
1535
1458
  "vendor:local",
1536
- "openrouter:catalog"
1459
+ "cpu:self-hosted"
1537
1460
  ]
1538
1461
  },
1539
- "modelStatus": "verified"
1462
+ "modelStatus": "verified",
1463
+ "deploymentType": "selfHosted"
1540
1464
  },
1541
1465
  "transformersjs_default": {
1542
1466
  "choice": "transformersjs_default",
1543
- "displayName": "Transformers.js (CPU)",
1544
- "description": "Hugging Face model via @huggingface/transformers on CPU.",
1467
+ "displayName": "Transformers.js (CPU, offline)",
1468
+ "description": "Runs a Hugging Face model in-browser/on-node via @huggingface/transformers on CPU only. No OpenRouter.",
1545
1469
  "provider": "local",
1546
1470
  "modelId": "Xenova/distilbart-cnn-6-6",
1547
1471
  "runtime": {
1548
1472
  "instructionTier": "cpu",
1473
+ "executionMode": "offline",
1549
1474
  "backend": "transformersjs",
1550
1475
  "reasoningEffort": "minimal",
1551
- "executionMode": "offline",
1552
1476
  "temperature": 0.1,
1553
1477
  "toolPolicy": "none",
1554
1478
  "outputMode": "text"
1555
1479
  },
1556
1480
  "metadata": {
1481
+ "openRouter": "cpu-local",
1557
1482
  "funcxBackend": "transformersjs",
1558
1483
  "envModelId": "TRANSFORMERS_JS_MODEL_ID",
1559
1484
  "envCacheDir": "TRANSFORMERS_JS_CACHE_DIR",
@@ -1563,19 +1488,15 @@
1563
1488
  "device": "cpu",
1564
1489
  "billingModel": "self_hosted"
1565
1490
  },
1566
- "api": {
1567
- "defaultTransport": "direct",
1568
- "vendorModelId": "Xenova/distilbart-cnn-6-6",
1569
- "openRouterModelId": null
1570
- },
1571
1491
  "verification": {
1572
1492
  "lastVerifiedAt": "2026-05-29T17:08:03Z",
1573
1493
  "sourceRefs": [
1574
1494
  "vendor:local",
1575
- "openrouter:catalog"
1495
+ "cpu:self-hosted"
1576
1496
  ]
1577
1497
  },
1578
- "modelStatus": "verified"
1498
+ "modelStatus": "verified",
1499
+ "deploymentType": "selfHosted"
1579
1500
  }
1580
1501
  },
1581
1502
  "fallbackChoiceOrder": [
@@ -1584,7 +1505,13 @@
1584
1505
  ],
1585
1506
  "requiredCapabilities": {
1586
1507
  "reasoning": "minimal",
1587
- "cost": "low"
1508
+ "cost": "low",
1509
+ "inputModalities": [
1510
+ "text"
1511
+ ],
1512
+ "outputModalities": [
1513
+ "text"
1514
+ ]
1588
1515
  }
1589
1516
  },
1590
1517
  "coding": {
@@ -1604,7 +1531,13 @@
1604
1531
  "reasoning": "high",
1605
1532
  "coding": true,
1606
1533
  "context": "large",
1607
- "quality": "high"
1534
+ "quality": "high",
1535
+ "inputModalities": [
1536
+ "text"
1537
+ ],
1538
+ "outputModalities": [
1539
+ "text"
1540
+ ]
1608
1541
  },
1609
1542
  "choices": {
1610
1543
  "default": {
@@ -1622,11 +1555,6 @@
1622
1555
  "outputMode": "text"
1623
1556
  },
1624
1557
  "reason": "Strong instruction following and code quality for everyday engineering tasks.",
1625
- "api": {
1626
- "defaultTransport": "openrouter",
1627
- "vendorModelId": "claude-sonnet-4-5",
1628
- "openRouterModelId": "anthropic/claude-sonnet-4.5"
1629
- },
1630
1558
  "verification": {
1631
1559
  "lastVerifiedAt": "2026-05-29T20:57:08Z",
1632
1560
  "sourceRefs": [
@@ -1648,11 +1576,6 @@
1648
1576
  "outputMode": "text"
1649
1577
  },
1650
1578
  "reason": "Solid alternative for multi-file edits and API-heavy codebases.",
1651
- "api": {
1652
- "defaultTransport": "openrouter",
1653
- "vendorModelId": "gpt-4.1",
1654
- "openRouterModelId": "openai/gpt-4.1"
1655
- },
1656
1579
  "verification": {
1657
1580
  "lastVerifiedAt": "2026-05-29T20:57:08Z",
1658
1581
  "sourceRefs": [
@@ -1661,8 +1584,8 @@
1661
1584
  ]
1662
1585
  }
1663
1586
  },
1664
- "cost_coding": {
1665
- "choice": "cost_coding",
1587
+ "deepseek_coding": {
1588
+ "choice": "deepseek_coding",
1666
1589
  "displayName": "Budget Coding",
1667
1590
  "description": "Lower-cost coding option for simpler changes.",
1668
1591
  "provider": "deepseek",
@@ -1674,11 +1597,6 @@
1674
1597
  "outputMode": "text"
1675
1598
  },
1676
1599
  "reason": "Cost-effective for smaller patches, tests, and boilerplate generation.",
1677
- "api": {
1678
- "defaultTransport": "openrouter",
1679
- "vendorModelId": "deepseek-chat",
1680
- "openRouterModelId": "deepseek/deepseek-chat"
1681
- },
1682
1600
  "verification": {
1683
1601
  "lastVerifiedAt": "2026-05-29T20:57:08Z",
1684
1602
  "sourceRefs": [
@@ -1686,12 +1604,36 @@
1686
1604
  "openrouter:catalog"
1687
1605
  ]
1688
1606
  }
1607
+ },
1608
+ "minimax_coding": {
1609
+ "choice": "minimax_coding",
1610
+ "displayName": "MiniMax M2.5 Coding",
1611
+ "description": "Cost-efficient coding model with strong SWE-bench performance.",
1612
+ "provider": "minimax",
1613
+ "modelId": "minimax-m2.5",
1614
+ "modelStatus": "verified",
1615
+ "runtime": {
1616
+ "instructionTier": "default",
1617
+ "backend": "openrouter",
1618
+ "reasoningEffort": "high",
1619
+ "toolPolicy": "read-only",
1620
+ "outputMode": "text"
1621
+ },
1622
+ "reason": "Strong coding benchmarks at a fraction of flagship Claude or GPT pricing.",
1623
+ "verification": {
1624
+ "lastVerifiedAt": "2026-05-30T00:00:00Z",
1625
+ "sourceRefs": [
1626
+ "vendor:minimax",
1627
+ "openrouter:catalog"
1628
+ ]
1629
+ }
1689
1630
  }
1690
1631
  },
1691
1632
  "fallbackChoiceOrder": [
1692
1633
  "default",
1693
1634
  "openai_coding",
1694
- "cost_coding"
1635
+ "deepseek_coding",
1636
+ "minimax_coding"
1695
1637
  ]
1696
1638
  },
1697
1639
  "extraction": {
@@ -1711,7 +1653,13 @@
1711
1653
  "structuredOutput": true,
1712
1654
  "reasoning": "minimal",
1713
1655
  "cost": "low",
1714
- "supportsJsonSchema": true
1656
+ "supportsJsonSchema": true,
1657
+ "inputModalities": [
1658
+ "text"
1659
+ ],
1660
+ "outputModalities": [
1661
+ "text"
1662
+ ]
1715
1663
  },
1716
1664
  "runtime": {
1717
1665
  "outputMode": "json",
@@ -1732,11 +1680,6 @@
1732
1680
  "temperature": 0
1733
1681
  },
1734
1682
  "reason": "Optimized for bulk extraction where latency and cost dominate.",
1735
- "api": {
1736
- "defaultTransport": "openrouter",
1737
- "vendorModelId": "gemini-2.5-flash-lite",
1738
- "openRouterModelId": "google/gemini-2.5-flash-lite"
1739
- },
1740
1683
  "verification": {
1741
1684
  "lastVerifiedAt": "2026-05-29T20:57:08Z",
1742
1685
  "sourceRefs": [
@@ -1745,8 +1688,8 @@
1745
1688
  ]
1746
1689
  }
1747
1690
  },
1748
- "quality_extraction": {
1749
- "choice": "quality_extraction",
1691
+ "anthropic_extraction": {
1692
+ "choice": "anthropic_extraction",
1750
1693
  "displayName": "Quality Extraction",
1751
1694
  "description": "Higher-quality extraction when ambiguity or long documents matter.",
1752
1695
  "provider": "anthropic",
@@ -1759,11 +1702,6 @@
1759
1702
  "temperature": 0
1760
1703
  },
1761
1704
  "reason": "Better entity boundaries and taxonomy consistency on messy inputs.",
1762
- "api": {
1763
- "defaultTransport": "openrouter",
1764
- "vendorModelId": "claude-haiku-4-5",
1765
- "openRouterModelId": "anthropic/claude-haiku-4.5"
1766
- },
1767
1705
  "verification": {
1768
1706
  "lastVerifiedAt": "2026-05-29T20:57:08Z",
1769
1707
  "sourceRefs": [
@@ -1775,7 +1713,7 @@
1775
1713
  },
1776
1714
  "fallbackChoiceOrder": [
1777
1715
  "default",
1778
- "quality_extraction"
1716
+ "anthropic_extraction"
1779
1717
  ]
1780
1718
  },
1781
1719
  "routing": {
@@ -1794,7 +1732,13 @@
1794
1732
  "requiredCapabilities": {
1795
1733
  "reasoning": "minimal",
1796
1734
  "cost": "low",
1797
- "latency": "low"
1735
+ "latency": "low",
1736
+ "inputModalities": [
1737
+ "text"
1738
+ ],
1739
+ "outputModalities": [
1740
+ "text"
1741
+ ]
1798
1742
  },
1799
1743
  "choices": {
1800
1744
  "default": {
@@ -1811,11 +1755,6 @@
1811
1755
  "temperature": 0
1812
1756
  },
1813
1757
  "reason": "Minimize spend on per-request routing and orchestration gates.",
1814
- "api": {
1815
- "defaultTransport": "openrouter",
1816
- "vendorModelId": "gemini-2.5-flash-lite",
1817
- "openRouterModelId": "google/gemini-2.5-flash-lite"
1818
- },
1819
1758
  "verification": {
1820
1759
  "lastVerifiedAt": "2026-05-29T20:57:08Z",
1821
1760
  "sourceRefs": [
@@ -1838,11 +1777,6 @@
1838
1777
  "temperature": 0
1839
1778
  },
1840
1779
  "reason": "Better instruction adherence for multi-label or nested routing trees.",
1841
- "api": {
1842
- "defaultTransport": "openrouter",
1843
- "vendorModelId": "claude-haiku-4-5",
1844
- "openRouterModelId": "anthropic/claude-haiku-4.5"
1845
- },
1846
1780
  "verification": {
1847
1781
  "lastVerifiedAt": "2026-05-29T20:57:08Z",
1848
1782
  "sourceRefs": [