{
  "markdown": "[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Go](https://img.shields.io/badge/Go-1.23-00ADD8?logo=go&logoColor=white)](https://go.dev)\n[![Models](https://img.shields.io/badge/Models-107-blueviolet)](https://github.com/aezizhu/universal-model-registry)\n[![Providers](https://img.shields.io/badge/Providers-19-orange)](https://github.com/aezizhu/universal-model-registry)\n[![Tests](https://img.shields.io/badge/Tests-156%20passing-brightgreen)](https://github.com/aezizhu/universal-model-registry)\n\n# Model ID Cheatsheet\n\n**Stop your AI coding agent from hallucinating outdated model names.** This MCP server gives any AI assistant instant access to accurate, up-to-date API model IDs, pricing, and specs for **107 models across 19 providers**.\n\nBuilt in Go. Single 10MB binary. Zero external calls. Sub-millisecond responses. Auto-updated daily.\n\n```diff\n- model = \"gpt-4-turbo\"           # Hallucinated - doesn't exist anymore\n+ model = \"gpt-5.3-codex\"         # Correct - verified against official docs\n```\n\n```diff\n- model = \"claude-3-opus-20240229\" # Deprecated\n+ model = \"claude-opus-4-6\"        # Current - latest Anthropic flagship\n```\n\n---\n\n## Quick Start\n\nPick **one** option below. You'll be up and running in under a minute.\n\n### Option A: Claude Code (one command)\n\n```bash\nclaude mcp add --transport sse --scope user model-id-cheatsheet \\\n  https://universal-model-registry-production.up.railway.app/sse\n```\n\nVerify it works:\n\n```bash\nclaude mcp list\n# Should show: model-id-cheatsheet ... Connected\n```\n\nThen start a new Claude Code session and ask: *\"What's the latest OpenAI model?\"* - it will use the tools automatically.\n\n### Option B: Cursor\n\nAdd to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"model-id-cheatsheet\": {\n      \"url\": \"https://universal-model-registry-production.up.railway.app/sse\"\n    }\n  }\n}\n```\n\nRestart Cursor to pick up the change.\n\n### Option C: Windsurf\n\nAdd to Settings > MCP Servers (or edit `~/.codeium/windsurf/mcp_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"model-id-cheatsheet\": {\n      \"serverUrl\": \"https://universal-model-registry-production.up.railway.app/sse\"\n    }\n  }\n}\n```\n\n### Option D: Codex CLI\n\nAdd to `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.model-id-cheatsheet]\ncommand = \"uvx\"\nargs = [\"mcp-proxy\", \"--transport\", \"sse\", \"https://universal-model-registry-production.up.railway.app/sse\"]\n```\n\n### Option E: OpenCode\n\nAdd to `~/.config/opencode/opencode.json`:\n\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"mcp\": {\n    \"model-id-cheatsheet\": {\n      \"type\": \"remote\",\n      \"url\": \"https://universal-model-registry-production.up.railway.app/sse\"\n    }\n  }\n}\n```\n\n### Option F: Any MCP Client\n\nConnect to the SSE endpoint directly (no API key, no auth):\n\n```\nhttps://universal-model-registry-production.up.railway.app/sse\n```\n\nOr use the Streamable HTTP transport:\n\n```\nhttps://universal-model-registry-production.up.railway.app/mcp\n```\n\n### Verify Your Setup\n\nOnce connected, try asking your AI assistant any of these:\n\n- *\"What's the correct model ID for Claude Opus 4.6?\"*\n- *\"Is gpt-4o still available?\"*\n- *\"Compare gpt-5.2 vs claude-opus-4-6\"*\n- *\"What's the cheapest model with vision?\"*\n\nIf the agent calls a tool like `get_model_info` or `check_model_status` before answering, it's working.\n\n---\n\n## How It Works\n\nYour AI agent gains **6 tools** that it calls automatically before writing any model ID:\n\n| Tool | What It Does | Example Prompt |\n|------|-------------|----------------|\n| `get_model_info(model_id)` | Full specs: API ID, pricing, context window, capabilities | \"What's the model ID for Claude Sonnet?\" |\n| `list_models(provider?, status?, capability?)` | Browse and filter the registry | \"Show me all current Google models\" |\n| `recommend_model(task, budget?)` | Ranked recommendations for a task | \"Best model for coding, cheap budget\" |\n| `check_model_status(model_id)` | Verify if a model is current, legacy, or deprecated | \"Is gpt-4o still available?\" |\n| `compare_models(model_ids)` | Side-by-side comparison table | \"Compare gpt-5.2 vs claude-opus-4-6\" |\n| `search_models(query)` | Free-text search across all fields | \"Search for reasoning models\" |\n\n### Resources\n\n| URI | Description |\n|-----|-------------|\n| `model://registry/all` | Full JSON dump of all 107 models |\n| `model://registry/current` | Only current (non-deprecated) models as JSON |\n| `model://registry/pricing` | Pricing table sorted cheapest-first (markdown) |\n\n### What Happens Under the Hood\n\n1. You ask your agent to write code or answer a model question\n2. The agent automatically calls the appropriate tool (e.g., `get_model_info`)\n3. The server responds in sub-milliseconds with verified data (no external API calls)\n4. The agent writes code with the correct, current model ID\n\nThe server instructions tell the agent: *\"NEVER use a model ID from your training data without verifying it first.\"* This means the agent will always check before writing.\n\n---\n\n## Real-World Examples\n\n**Writing an API call:**\n\n```python\n# You: \"Call the OpenAI API with their best coding model\"\n# Agent calls: get_model_info(\"gpt-5.4\")\nresponse = client.chat.completions.create(\n    model=\"gpt-5.4\",  # Verified via model registry\n    messages=[...]\n)\n```\n\n**Catching deprecated models:**\n\n```python\n# You: \"Use gpt-4o for this task\"\n# Agent calls: check_model_status(\"gpt-4o\")\n# Agent: \"gpt-4o is deprecated. I'll use gpt-5 instead.\"\nresponse = client.chat.completions.create(\n    model=\"gpt-5\",  # Updated automatically\n    messages=[...]\n)\n```\n\n**Finding the cheapest option:**\n\n```python\n# You: \"Use the cheapest model that supports vision\"\n# Agent calls: list_models(capability=\"vision\", status=\"current\")\nresponse = client.chat.completions.create(\n    model=\"gpt-5-nano\",  # $0.05/$0.40 per 1M tokens\n    messages=[...]\n)\n```\n\n**Comparing options:**\n\n```python\n# You: \"Should I use Claude or GPT for this?\"\n# Agent calls: compare_models([\"claude-opus-4-6\", \"gpt-5.2\"])\n# Agent gets a side-by-side table and makes a recommendation\n```\n\n---\n\n## Resource Footprint\n\nA common concern: *\"Will this slow down my agent or eat tokens?\"*\n\n| Metric | Value |\n|--------|-------|\n| Binary size | ~10MB |\n| Runtime memory | Minimal (static in-memory map, no database) |\n| External API calls | Zero (all data is baked in) |\n| Response time | Sub-millisecond |\n| Token cost per tool call | ~200-500 tokens (small text response) |\n| Tool schema overhead | ~500-800 tokens in system prompt |\n\nFor comparison, a single web search costs more tokens than all 6 tool schemas combined.\n\n---\n\n## Covered Models (107 total)\n\n### Current Models (79)\n\n| Provider | Models | API IDs |\n|----------|--------|---------|\n| **OpenAI** (15) | GPT-5.4, GPT-5.4 Pro, GPT-5.3 Instant, GPT-5.2, GPT-5.2 Pro, GPT-5.1, GPT-5.1 Codex, GPT-5.1 Mini, GPT-5, GPT-5 Mini, GPT-5 Nano, GPT-4.1 Mini, GPT-4.1 Nano, o3, o4-mini | `gpt-5.4`, `gpt-5.4-pro`, `gpt-5.3-chat-latest`, `gpt-5.2`, `gpt-5.2-pro`, `gpt-5.1`, `gpt-5.1-codex`, `gpt-5.1-mini`, `gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `gpt-4.1-mini`, `gpt-4.1-nano`, `o3`, `o4-mini` |\n| **Anthropic** (4) | Claude Opus 4.6, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5 | `claude-opus-4-6`, `claude-sonnet-4-6`, `claude-sonnet-4-5-20250929`, `claude-haiku-4-5-20251001` |\n| **Mistral** (11) | Mistral Large 3, Mistral Medium 3, Mistral Small 3.2, Mistral Saba, Ministral 3B, Ministral 8B, Ministral 14B, Magistral Small 1.2, Magistral Medium 1.2, Devstral 2, Devstral Small 2 | `mistral-large-2512`, `mistral-medium-2505`, `mistral-small-2506`, `mistral-saba-2502`, `ministral-3b-2512`, `ministral-8b-2512`, `ministral-14b-2512`, `magistral-small-2509`, `magistral-medium-2509`, `devstral-2512`, `devstral-small-2512` |\n| **Amazon** (6) | Nova Micro, Nova Lite, Nova Pro, Nova Premier, Nova 2 Lite, Nova 2 Pro | `amazon-nova-micro`, `amazon-nova-lite`, `amazon-nova-pro`, `amazon-nova-premier`, `amazon-nova-2-lite`, `amazon-nova-2-pro` |\n| **Google** (5) | Gemini 3.1 Pro, Gemini 3.1 Flash Lite, Gemini 3 Flash, Gemini 2.5 Pro, Gemini 2.5 Flash | `gemini-3.1-pro-preview`, `gemini-3.1-flash-lite-preview`, `gemini-3-flash-preview`, `gemini-2.5-pro`, `gemini-2.5-flash` |\n| **Cohere** (5) | Command A, Command A Reasoning, Command A Vision, Command A Translate, Command R7B | `command-a-03-2025`, `command-a-reasoning-08-2025`, `command-a-vision-07-2025`, `command-a-translate-08-2025`, `command-r7b-12-2024` |\n| **xAI** (4) | Grok 4, Grok 4.1 Fast, Grok 4 Fast, Grok Code Fast 1 | `grok-4`, `grok-4.1-fast`, `grok-4-fast`, `grok-code-fast-1` |\n| **Microsoft** (4) | Phi-4, Phi-4 Multimodal, Phi-4 Reasoning, Phi-4 Reasoning Plus | `phi-4`, `phi-4-multimodal-instruct`, `phi-4-reasoning`, `phi-4-reasoning-plus` |\n| **Perplexity** (4) | Sonar, Sonar Pro, Sonar Reasoning Pro, Sonar Deep Research | `sonar`, `sonar-pro`, `sonar-reasoning-pro`, `sonar-deep-research` |\n| **Moonshot** (3) | Kimi K2.5, Kimi K2 Thinking, Kimi K2 (0905) | `kimi-k2.5`, `kimi-k2-thinking`, `kimi-k2-0905-preview` |\n| **Tencent** (3) | Hunyuan TurboS, Hunyuan T1, Hunyuan A13B | `hunyuan-turbos`, `hunyuan-t1`, `hunyuan-a13b` |\n| **Zhipu** (3) | GLM-5, GLM-4.7, GLM-4.7 FlashX | `glm-5`, `glm-4.7`, `glm-4.7-flashx` |\n| **Meta** (2) | Llama 4 Maverick, Llama 4 Scout | `llama-4-maverick`, `llama-4-scout` |\n| **DeepSeek** (2) | DeepSeek Reasoner, DeepSeek Chat | `deepseek-reasoner`, `deepseek-chat` |\n| **NVIDIA** (2) | Nemotron 3 Nano 30B, Nemotron Ultra 253B | `nvidia/nemotron-3-nano-30b-a3b`, `nvidia/llama-3.1-nemotron-ultra-253b-v1` |\n| **AI21** (2) | Jamba Large 1.7, Jamba Mini 1.7 | `jamba-large-1.7`, `jamba-mini-1.7` |\n| **MiniMax** (2) | MiniMax M2.5, MiniMax M2.5 Lightning | `minimax-m2.5`, `minimax-m2.5-lightning` |\n| **Kuaishou** (1) | KAT-Coder Pro | `kat-coder-pro` |\n| **Xiaomi** (1) | MiMo V2 Flash | `mimo-v2-flash` |\n\n### Legacy & Deprecated Models (30)\n\nTracked so your agent can detect outdated model IDs and suggest current replacements:\n\n- **OpenAI**: `gpt-5.3-codex` (deprecated), `gpt-5.2-codex` (deprecated), `gpt-5.1-codex-mini` (deprecated), `o3-pro` (deprecated), `o3-deep-research` (deprecated), `o3-mini` (legacy), `gpt-4.1` (deprecated), `gpt-4o` (deprecated), `gpt-4o-mini` (deprecated)\n- **Anthropic**: `claude-opus-4-5` (legacy), `claude-opus-4-1` (legacy), `claude-opus-4-0` (legacy), `claude-sonnet-4-0` (legacy), `claude-3-7-sonnet-20250219` (deprecated)\n- **Google**: `gemini-3-pro-preview` (deprecated), `gemini-3-pro-image-preview` (deprecated), `gemini-2.5-flash-lite` (deprecated), `gemini-2.0-flash-lite` (deprecated), `gemini-2.0-flash` (deprecated)\n- **xAI**: `grok-4.1` (deprecated), `grok-3` (legacy), `grok-3-mini` (legacy)\n- **Mistral**: `mistral-small-2503` (legacy), `codestral-2508` (legacy)\n- **MiniMax**: `minimax-m2.1` (legacy), `minimax-01` (deprecated)\n- **Meta**: `llama-3.3-70b` (legacy)\n- **DeepSeek**: `deepseek-r1` (legacy), `deepseek-v3` (deprecated)\n- **Zhipu**: `glm-4.6v` (deprecated)\n\n---\n\n## Self-Hosting\n\nIf you prefer to run the server locally instead of using the hosted endpoint:\n\n### Option 1: Build from Source (recommended for local use)\n\nRequires Go 1.23+.\n\n```bash\ngit clone https://github.com/aezizhu/universal-model-registry.git\ncd universal-model-registry/go-server\ngo build -o model-id-cheatsheet ./cmd/server\n```\n\nThen add it to Claude Code as a local stdio server (zero latency, no network):\n\n```bash\nclaude mcp add --scope user model-id-cheatsheet -- /path/to/model-id-cheatsheet\n```\n\nOr run in SSE mode for other clients:\n\n```bash\nMCP_TRANSPORT=sse PORT=8000 ./model-id-cheatsheet\n# Endpoint: http://localhost:8000/sse\n```\n\n### Option 2: Docker\n\n```bash\ngit clone https://github.com/aezizhu/universal-model-registry.git\ncd universal-model-registry\ndocker build -t model-id-cheatsheet .\ndocker run -p 8000:8000 model-id-cheatsheet\n```\n\nYour SSE endpoint will be at `http://localhost:8000/sse`.\n\n### Option 3: Deploy to Railway\n\n[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/template)\n\nOr manually:\n\n```bash\nrailway login\nrailway init\nrailway up\n```\n\n---\n\n## Staying Up to Date\n\nModel data is automatically checked and updated **daily at 7 PM Pacific Time** -- no human intervention needed.\n\n**How it works:**\n\n1. Railway cron runs the updater daily, scraping 6 providers' public documentation pages (no API keys needed)\n2. **Models removed from docs** --> auto-deprecated via PR (status changed to `\"deprecated\"` in code)\n3. **New models detected** --> GitHub issue created for review\n4. CI runs on the auto-generated PR --> if tests pass --> **auto-merged** into main\n5. Railway auto-deploys from main\n\n**No provider API keys required.** The updater reads publicly available documentation pages to detect model changes. Only `GITHUB_TOKEN` and `GITHUB_REPO` are needed for creating PRs and issues.\n\n<details>\n<summary><strong>Auto-Update Pipeline Details</strong></summary>\n\n**Railway Cron (primary)** -- The hosted instance uses a Railway cron service that runs the updater daily. See `configs/railway-updater.toml` for the configuration.\n\nRequired env vars (set in Railway dashboard):\n- `GITHUB_TOKEN` -- GitHub personal access token with repo scope\n- `GITHUB_REPO` -- Repository in `\"owner/repo\"` format (e.g. `\"aezizhu/universal-model-registry\"`)\n\n**Providers checked (via public docs):**\n- OpenAI (via GitHub SDK source), Anthropic, Google, Mistral, xAI, DeepSeek\n\n**CI/CD Workflows:**\n- `.github/workflows/ci.yml` -- runs tests on every PR\n- `.github/workflows/auto-merge.yml` -- auto-merges bot PRs (labeled `auto-update`) after CI passes\n\n**GitHub Actions (alternative)** -- A GitHub Actions workflow is also included at `.github/workflows/auto-update.yml` for users who self-host without Railway. No API keys needed -- only `GITHUB_TOKEN` (automatically provided by GitHub Actions).\n\n</details>\n\n---\n\n## Security\n\n- **Rate limiting**: 60 requests/minute per IP\n- **Connection limits**: Max 5 SSE connections per IP, 100 total\n- **Request body limit**: 64KB max\n- **Input sanitization**: All string inputs truncated to safe lengths\n- **HTTP hardening**: ReadTimeout 15s, ReadHeaderTimeout 5s, IdleTimeout 120s, 64KB max headers\n- **Non-root Docker**: Containers run as unprivileged user\n- **Graceful shutdown**: Clean connection draining on SIGINT/SIGTERM\n\n## Tech Stack\n\n- **Language**: Go 1.23\n- **MCP SDK**: `github.com/modelcontextprotocol/go-sdk` v1.3.0 (official)\n- **Transports**: stdio, SSE, Streamable HTTP\n- **Binary size**: ~10MB\n- **Tests**: 156 unit tests\n- **Security**: Per-IP rate limiting, connection limits, input sanitization\n- **Deploy**: Docker (alpine), Railway\n\n## Contributing\n\nContributions are welcome! Whether it's adding a new model, fixing data, or improving the server:\n\n1. Fork the repo and clone it locally\n2. Edit model data in `go-server/internal/models/data.go`\n3. Update test counts in `go-server/internal/models/data_test.go`\n4. Run the tests:\n   ```bash\n   cd go-server && go test ./... -v\n   ```\n5. Submit a PR -- we'll review it quickly\n\nIf you spot an outdated model or incorrect pricing, opening an issue is just as helpful.\n\n## License\n\nMIT\n",
  "bytes": 15150,
  "sha": "1c8b14ca6ad5803677dd43f5c6270b1d5a8c28bd318d82a9f29ca3cc31030217",
  "repo_slug": "aezizhu/universal-model-registry",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_aezizhu_model_id_cheatsheet_dc06c07f/readme"
}