MCP server
Give your coding agent the catalog, so it can check which parameters a model accepts before it calls one — instead of guessing from training data and eating a 400, or worse, having a parameter silently ignored. Hosted over Streamable HTTP, nothing to install.
Connect a client
Endpoint:
https://modelparams.dev/mcp.
Pick a client to see its install command.
claude mcp add --transport http modelparams https://modelparams.dev/mcp
codex mcp add modelparams --url https://modelparams.dev/mcp
Add to opencode.json under `mcp`.
{
"mcp": {
"modelparams": {
"type": "remote",
"url": "https://modelparams.dev/mcp",
"enabled": true
}
}
}
Cursor Settings → MCP → add a server.
{
"mcpServers": {
"modelparams": {
"type": "http",
"url": "https://modelparams.dev/mcp"
}
}
}
Any client that takes a JSON `mcpServers` block.
{
"mcpServers": {
"modelparams": {
"type": "http",
"url": "https://modelparams.dev/mcp"
}
}
}
Any client that takes a JSON `mcpServers` block.
{
"mcpServers": {
"modelparams": {
"type": "http",
"url": "https://modelparams.dev/mcp"
}
}
}
Tools
Four read-only tools, all answering from the catalog this site is serving.
validate_model_params
Check a set of request parameters against what a model actually accepts, before you call it. Catches unknown parameters, out-of-range values, and combinations the provider rejects — such as top_p alongside a non-default temperature on Anthropic models. Returns a corrected `safeParams` payload that is guaranteed to validate.
{
"type": "object",
"properties": {
"model": {
"type": "string",
"description": "Catalog id, bare slug, or wire string with baseUrl."
},
"baseUrl": {
"type": "string",
"description": "The base URL your SDK uses."
},
"params": {
"type": "object",
"additionalProperties": true,
"description": "Provider-native parameter paths to values."
}
},
"required": [
"model"
],
"additionalProperties": false
}
{
"model": "anthropic/claude-3-opus-20240229",
"valid": false,
"summary": "1 parameter(s) would be rejected or silently ignored by anthropic/claude-3-opus-20240229.",
"issues": [
{
"path": "top_p",
"code": "not_applicable",
"message": "top_p does not apply when temperature ≠ 1",
"conflictsWith": [
"temperature"
]
}
],
"safeParams": {
"temperature": 0.5
}
}
get_model_params
Every parameter one model accepts — type, allowed range or enum values, default, and the conditional rules that gate it. Also returns lifecycle status and migration guidance when tracked.
{
"type": "object",
"properties": {
"model": {
"type": "string",
"description": "Catalog id, bare slug, or wire string with baseUrl."
},
"baseUrl": {
"type": "string",
"description": "The base URL your SDK uses."
}
},
"required": [
"model"
],
"additionalProperties": false
}
{
"model": "anthropic/claude-opus-4-8",
"provider": "anthropic",
"authType": "api_key",
"status": "active",
"parameterCount": 6,
"params": [
{
"path": "temperature",
"type": "number",
"default": 1,
"range": {
"min": 0,
"max": 1
},
"group": "sampling"
}
],
"defaults": {
"temperature": 1
},
"docs": "https://modelparams.dev/models/anthropic/claude-opus-4-8"
}
list_models
Model ids in the catalog, optionally filtered by provider or a substring. Use it to resolve the exact id the other tools expect.
{
"type": "object",
"properties": {
"provider": {
"type": "string",
"description": "Restrict to one provider slug, e.g. \"anthropic\"."
},
"query": {
"type": "string",
"description": "Case-insensitive substring match on the model id."
},
"limit": {
"type": "integer",
"minimum": 1,
"description": "Default 100."
}
},
"additionalProperties": false
}
{
"total": 382,
"returned": 3,
"truncated": false,
"providers": [
"alibaba",
"anthropic",
"bedrock"
],
"models": [
"anthropic/claude-opus-4-8",
"anthropic/claude-sonnet-4-6",
"anthropic/claude-haiku-4-5"
]
}
list_provider_models
Everything one provider serves in one call: its models, the wire id each one needs, their lifecycle status, and the parameter surfaces they expose. Models that share a surface share a profile, so a provider with dozens of models stays small enough to read. Use it to pick a model and configure it in one step — especially on Bedrock and Vertex, where parameter paths differ from the model's native API.
{
"type": "object",
"properties": {
"provider": {
"type": "string",
"description": "Provider slug, e.g. \"bedrock\", \"vertex\", \"anthropic\"."
},
"query": {
"type": "string",
"description": "Case-insensitive substring match on the model id."
},
"limit": {
"type": "integer",
"minimum": 1,
"description": "Default 200."
}
},
"required": [
"provider"
],
"additionalProperties": false
}
{
"provider": "bedrock",
"baseUrls": [
"https://bedrock-runtime.*.amazonaws.com"
],
"total": 56,
"returned": 56,
"truncated": false,
"paramProfiles": [
{
"id": "p1",
"modelCount": 41,
"parameterCount": 4,
"params": [
{
"path": "inferenceConfig.maxTokens",
"type": "integer",
"range": {
"min": 1
}
}
],
"defaults": {}
}
],
"models": [
{
"model": "bedrock/claude-opus-4-6",
"authType": "api_key",
"wireId": "{scope}.anthropic.claude-opus-4-6-v1",
"profile": "p2"
}
],
"wireIdNote": "A wireId containing {scope} needs one substitution before you send it…"
}
For agents
Prefer a plain file? The whole catalog, including this MCP server, is described in /llms.txt and /llms-full.txt.