Skip to content

Commit 23fabe8

Browse files
ericyangpanclaude
andcommitted
refactor(schema)!: migrate model schema from string to number for token counts
BREAKING CHANGE: Model schema now uses numeric values for contextWindow and maxOutput instead of string values with K/M suffixes. - Rename totalContext to contextWindow in schema - Change contextWindow type from string to number (e.g., "32K" -> 32000) - Change maxOutput type from string to number (e.g., "4K" -> 4096) - Add releaseDate field (string | null, ISO 8601 format) - Add inputModalities array field (image, text, file) - Move benchmarks field before platformUrls in schema order - Update all 27 model manifests to comply with new schema This change improves type safety and enables better programmatic access to token count data. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 8ba9a59 commit 23fabe8

27 files changed

+267
-191
lines changed

manifests/$schemas/model.schema.json

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
"type": "string",
1515
"description": "Model parameter size (e.g., '7B', '32B', '200B')"
1616
},
17-
"totalContext": {
18-
"type": "string",
19-
"description": "Total context window size (e.g., '32K', '64K', '200K')"
17+
"contextWindow": {
18+
"type": "number",
19+
"description": "Total context window size in tokens (e.g., 32000, 64000, 200000)"
2020
},
2121
"maxOutput": {
22-
"type": "string",
23-
"description": "Maximum output token size (e.g., '4K', '8K')"
22+
"type": "number",
23+
"description": "Maximum output token size in tokens (e.g., 4096, 8192)"
2424
},
2525
"tokenPricing": {
2626
"type": "object",
@@ -42,9 +42,20 @@
4242
"required": ["input", "output", "cache"],
4343
"additionalProperties": false
4444
},
45-
"platformUrls": {
46-
"$ref": "./ref/platform-urls.schema.json",
47-
"description": "URLs to various third-party platform pages for this model"
45+
"releaseDate": {
46+
"type": ["string", "null"],
47+
"format": "date",
48+
"description": "Model release date in ISO 8601 format (YYYY-MM-DD), null if release date is unknown"
49+
},
50+
"inputModalities": {
51+
"type": "array",
52+
"description": "Input modalities supported by the model",
53+
"items": {
54+
"type": "string",
55+
"enum": ["image", "text", "file"]
56+
},
57+
"uniqueItems": true,
58+
"minItems": 1
4859
},
4960
"benchmarks": {
5061
"type": "object",
@@ -80,9 +91,22 @@
8091
}
8192
},
8293
"additionalProperties": false
94+
},
95+
"platformUrls": {
96+
"$ref": "./ref/platform-urls.schema.json",
97+
"description": "URLs to various third-party platform pages for this model"
8398
}
8499
},
85-
"required": ["size", "totalContext", "maxOutput", "tokenPricing", "platformUrls"]
100+
"required": [
101+
"size",
102+
"contextWindow",
103+
"maxOutput",
104+
"tokenPricing",
105+
"releaseDate",
106+
"inputModalities",
107+
"benchmarks",
108+
"platformUrls"
109+
]
86110
}
87111
]
88112
}

manifests/models/claude-haiku-4-5.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
"docsUrl": "https://docs.anthropic.com/claude/docs/models-overview",
1414
"vendor": "Anthropic",
1515
"size": "Unknown",
16-
"totalContext": "200K",
17-
"maxOutput": "8K",
16+
"contextWindow": 200000,
17+
"maxOutput": 8000,
1818
"tokenPricing": {
1919
"input": 1,
2020
"output": 1,
2121
"cache": null
2222
},
23-
"platformUrls": {
24-
"huggingface": null,
25-
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-5-haiku",
26-
"openrouter": "https://openrouter.ai/anthropic/claude-haiku-4.5"
27-
},
23+
"releaseDate": null,
24+
"inputModalities": ["text"],
2825
"benchmarks": {
2926
"sweBench": null,
3027
"terminalBench": 0.298,
3128
"sciCode": null,
3229
"liveCodeBench": null
30+
},
31+
"platformUrls": {
32+
"huggingface": null,
33+
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-5-haiku",
34+
"openrouter": "https://openrouter.ai/anthropic/claude-haiku-4.5"
3335
}
3436
}

manifests/models/claude-opus-4-1.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
"docsUrl": "https://docs.anthropic.com/claude/docs/models-overview",
1414
"vendor": "Anthropic",
1515
"size": "Unknown",
16-
"totalContext": "200K",
17-
"maxOutput": "8K",
16+
"contextWindow": 200000,
17+
"maxOutput": 8000,
1818
"tokenPricing": {
1919
"input": 15,
2020
"output": 75,
2121
"cache": null
2222
},
23-
"platformUrls": {
24-
"huggingface": null,
25-
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-1-opus",
26-
"openrouter": "https://openrouter.ai/anthropic/claude-opus-4.1"
27-
},
23+
"releaseDate": "2025-08-01",
24+
"inputModalities": ["text"],
2825
"benchmarks": {
2926
"sweBench": null,
3027
"terminalBench": 0.38,
3128
"sciCode": null,
3229
"liveCodeBench": 46.9
30+
},
31+
"platformUrls": {
32+
"huggingface": null,
33+
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-1-opus",
34+
"openrouter": "https://openrouter.ai/anthropic/claude-opus-4.1"
3335
}
3436
}

manifests/models/claude-opus-4.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
"docsUrl": "https://docs.anthropic.com/claude/docs/models-overview",
1414
"vendor": "Anthropic",
1515
"size": "Unknown",
16-
"totalContext": "200K",
17-
"maxOutput": "8K",
16+
"contextWindow": 200000,
17+
"maxOutput": 8000,
1818
"tokenPricing": {
1919
"input": 15,
2020
"output": 75,
2121
"cache": null
2222
},
23-
"platformUrls": {
24-
"huggingface": null,
25-
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-opus",
26-
"openrouter": "https://openrouter.ai/anthropic/claude-opus-4"
27-
},
23+
"releaseDate": null,
24+
"inputModalities": ["text"],
2825
"benchmarks": {
2926
"sweBench": null,
3027
"terminalBench": 0.578,
3128
"sciCode": null,
3229
"liveCodeBench": 56.6
30+
},
31+
"platformUrls": {
32+
"huggingface": null,
33+
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-opus",
34+
"openrouter": "https://openrouter.ai/anthropic/claude-opus-4"
3335
}
3436
}

manifests/models/claude-sonnet-4-5.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
"docsUrl": "https://docs.anthropic.com/claude/docs/models-overview",
1414
"vendor": "Anthropic",
1515
"size": "Unknown",
16-
"totalContext": "200K",
17-
"maxOutput": "8K",
16+
"contextWindow": 200000,
17+
"maxOutput": 8000,
1818
"tokenPricing": {
1919
"input": 3,
2020
"output": 3,
2121
"cache": null
2222
},
23-
"platformUrls": {
24-
"huggingface": null,
25-
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-5-sonnet",
26-
"openrouter": "https://openrouter.ai/anthropic/claude-sonnet-4.5"
27-
},
23+
"releaseDate": null,
24+
"inputModalities": ["text"],
2825
"benchmarks": {
2926
"sweBench": null,
3027
"terminalBench": 0.428,
3128
"sciCode": null,
3229
"liveCodeBench": 47.1
30+
},
31+
"platformUrls": {
32+
"huggingface": null,
33+
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-5-sonnet",
34+
"openrouter": "https://openrouter.ai/anthropic/claude-sonnet-4.5"
3335
}
3436
}

manifests/models/claude-sonnet-4.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
"docsUrl": "https://docs.anthropic.com/claude/docs/models-overview",
1414
"vendor": "Anthropic",
1515
"size": "Unknown",
16-
"totalContext": "200K",
17-
"maxOutput": "8K",
16+
"contextWindow": 200000,
17+
"maxOutput": 8000,
1818
"tokenPricing": {
1919
"input": 3,
2020
"output": 3,
2121
"cache": null
2222
},
23-
"platformUrls": {
24-
"huggingface": null,
25-
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-sonnet",
26-
"openrouter": "https://openrouter.ai/anthropic/claude-sonnet-4"
27-
},
23+
"releaseDate": null,
24+
"inputModalities": ["text"],
2825
"benchmarks": {
2926
"sweBench": null,
3027
"terminalBench": 0.428,
3128
"sciCode": null,
3229
"liveCodeBench": 55.9
30+
},
31+
"platformUrls": {
32+
"huggingface": null,
33+
"artificialAnalysis": "https://artificialanalysis.ai/models/claude-4-sonnet",
34+
"openrouter": "https://openrouter.ai/anthropic/claude-sonnet-4"
3335
}
3436
}

manifests/models/composer.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
"docsUrl": "https://cursor.com/blog/composer",
1414
"vendor": "Anysphere",
1515
"size": "Unknown",
16-
"totalContext": "Unknown",
17-
"maxOutput": "Unknown",
16+
"contextWindow": 128000,
17+
"maxOutput": 8000,
1818
"tokenPricing": {
1919
"input": 0,
2020
"output": 0,
2121
"cache": null
2222
},
23-
"platformUrls": {
24-
"huggingface": null,
25-
"artificialAnalysis": null,
26-
"openrouter": null
27-
},
23+
"releaseDate": null,
24+
"inputModalities": ["text"],
2825
"benchmarks": {
2926
"sweBench": null,
3027
"terminalBench": null,
3128
"sciCode": null,
3229
"liveCodeBench": null
30+
},
31+
"platformUrls": {
32+
"huggingface": null,
33+
"artificialAnalysis": null,
34+
"openrouter": null
3335
}
3436
}

manifests/models/deepseek-r1.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
"docsUrl": "https://huggingface.co/deepseek-ai/DeepSeek-R1",
1414
"vendor": "DeepSeek",
1515
"size": "671B",
16-
"totalContext": "64K",
17-
"maxOutput": "4K",
16+
"contextWindow": 64000,
17+
"maxOutput": 4000,
1818
"tokenPricing": {
1919
"input": 0.14,
2020
"output": 0.14,
2121
"cache": null
2222
},
23-
"platformUrls": {
24-
"huggingface": "https://huggingface.co/deepseek-ai/DeepSeek-R1",
25-
"artificialAnalysis": "https://artificialanalysis.ai/models/deepseek-r1",
26-
"openrouter": "https://openrouter.ai/deepseek/deepseek-r1"
27-
},
23+
"releaseDate": null,
24+
"inputModalities": ["text"],
2825
"benchmarks": {
2926
"sweBench": null,
3027
"terminalBench": null,
3128
"sciCode": 4.6,
3229
"liveCodeBench": 73.1
30+
},
31+
"platformUrls": {
32+
"huggingface": "https://huggingface.co/deepseek-ai/DeepSeek-R1",
33+
"artificialAnalysis": "https://artificialanalysis.ai/models/deepseek-r1",
34+
"openrouter": "https://openrouter.ai/deepseek/deepseek-r1"
3335
}
3436
}

manifests/models/deepseek-v3-terminus.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
"docsUrl": "https://huggingface.co/deepseek-ai/DeepSeek-V3.1-Terminus",
1414
"vendor": "DeepSeek",
1515
"size": "67B",
16-
"totalContext": "64K",
17-
"maxOutput": "4K",
16+
"contextWindow": 64000,
17+
"maxOutput": 4000,
1818
"tokenPricing": {
1919
"input": 0.14,
2020
"output": 0.14,
2121
"cache": null
2222
},
23-
"platformUrls": {
24-
"huggingface": "https://huggingface.co/deepseek-ai/DeepSeek-V3.1-Terminus",
25-
"artificialAnalysis": "https://artificialanalysis.ai/models/deepseek-v3-1-terminus",
26-
"openrouter": "https://openrouter.ai/deepseek/deepseek-v3.1-terminus"
27-
},
23+
"releaseDate": null,
24+
"inputModalities": ["text"],
2825
"benchmarks": {
2926
"sweBench": null,
3027
"terminalBench": null,
3128
"sciCode": 3.1,
3229
"liveCodeBench": 27.2
30+
},
31+
"platformUrls": {
32+
"huggingface": "https://huggingface.co/deepseek-ai/DeepSeek-V3.1-Terminus",
33+
"artificialAnalysis": "https://artificialanalysis.ai/models/deepseek-v3-1-terminus",
34+
"openrouter": "https://openrouter.ai/deepseek/deepseek-v3.1-terminus"
3335
}
3436
}

manifests/models/gemini-2-5-flash.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
"docsUrl": "https://ai.google.dev/docs",
1414
"vendor": "Google",
1515
"size": "Unknown",
16-
"totalContext": "128K",
17-
"maxOutput": "8K",
16+
"contextWindow": 128000,
17+
"maxOutput": 8000,
1818
"tokenPricing": {
1919
"input": 0.3,
2020
"output": 0.3,
2121
"cache": null
2222
},
23-
"platformUrls": {
24-
"huggingface": null,
25-
"artificialAnalysis": "https://artificialanalysis.ai/models/gemini-2-5-flash",
26-
"openrouter": "https://openrouter.ai/google/gemini-2.5-flash"
27-
},
23+
"releaseDate": null,
24+
"inputModalities": ["text"],
2825
"benchmarks": {
2926
"sweBench": 28.73,
3027
"terminalBench": 0.171,
3128
"sciCode": null,
3229
"liveCodeBench": 61.9
30+
},
31+
"platformUrls": {
32+
"huggingface": null,
33+
"artificialAnalysis": "https://artificialanalysis.ai/models/gemini-2-5-flash",
34+
"openrouter": "https://openrouter.ai/google/gemini-2.5-flash"
3335
}
3436
}

0 commit comments

Comments
 (0)