LLMIntel Model Lifecycle
@llmintel/mcp
An MCP server that tells your coding agent whether a model id is safe to use.
LLMs are trained on a snapshot of the world and will confidently write gpt-4-32k into your code
long after it stops answering. This server gives the agent a live lookup for whether a model is
deprecated and when it stops working. It returns the replacement too. Answers are normalized across
OpenAI, Anthropic, Azure AI Foundry, AWS Bedrock, Google, and Cohere, and parsed from each
provider's own deprecation pages.
No API key, no signup. The catalog is public.
Install
Add it to any MCP host. The package runs straight from npm via npx.
Cursor
In .cursor/mcp.json:
{
"mcpServers": {
"llmintel": {
"command": "npx",
"args": ["-y", "@llmintel/mcp"]
}
}
}Claude Code
claude mcp add llmintel -- npx -y @llmintel/mcpClaude Desktop
Same shape as the Cursor block above, in claude_desktop_config.json.
Hosted endpoint (no install)
The same five tools are served over Streamable HTTP at https://llmintel.ai/v1/mcp. Hosts that take
a URL need no Node and no package:
{
"mcpServers": {
"llmintel": {
"url": "https://llmintel.ai/v1/mcp"
}
}
}The endpoint is stateless and read-only. It answers from the same catalog the npm package queries.
Related MCP server: Dependency Freshness MCP Server
Tools
Tool | Returns |
| Whether one model id is safe to use: lifecycle state, the retirement deadline in days, the replacement, and the source link. |
| What breaks in the next 90 days. Past-due models are listed first, then upcoming ones soonest-first. |
| The provider's own recommendation for what to move to. Falls back to same-provider active models when none was published. |
| Catalog search filtered by provider and lifecycle state. |
| The change feed across all providers, for questions like "what was deprecated this month". |
Example
You: Before we ship this, check the model ids in
src/agents/.
The agent calls check_model for each one and gets back:
DO NOT USE — this model is retired; API calls to it fail.
"claude-sonnet-4-20250514" resolves to the tracked model anthropic/claude-sonnet-4-20250514.
Model: claude-sonnet-4-20250514 (anthropic/claude-sonnet-4-20250514)
Provider: anthropic
Lifecycle state: retired — retired; calls fail
Deprecated: 2026-04-14 (105 days ago)
Retirement: 2026-06-15 (43 days ago)
The provider has not named a replacement. Use suggest_replacement for options.
Pricing/limits: $3/1M in · $15/1M out
Source: https://docs.anthropic.com/en/docs/about-claude/model-deprecations
Provider's own term: "Retired"Deadlines are always given in days, because a model cannot reliably judge whether 2026-07-30 is
soon.
Design notes
A failed lookup is never a safety verdict. If the catalog is unreachable, the tool returns an MCP error and says so. An agent that read a network failure as "no deprecation found" would happily ship a retired model id. A model that simply isn't tracked gets the same treatment: it returns "not in the catalog, verify with the provider", never "OK".
Pass whatever string is literally in the code (gpt-4o, anthropic/claude-opus-4-1, azure/gpt-4o)
and it resolves to the canonical tracked model.
When the provider's own deprecation notice names a successor, that is what you get. Otherwise the fallback list of same-provider active models is labelled as candidates to evaluate, so an agent can tell the two apart.
Anything past its retirement date is broken now, so it gets its own heading instead of sitting in "retiring soon".
Configuration
Both variables are optional.
Variable | Default | Purpose |
| none | Raises the rate-limit budget. The catalog itself is public, so you do not need this. |
|
| Point at a self-hosted or staging catalog. |
Anonymous callers get 30 requests/minute per IP, enough for interactive agent use.
Data provenance
Every record links to the provider page it was parsed from and preserves the provider's verbatim
lifecycle term (sourceTerm), so a normalization decision is always auditable. Changes go through a
human verification queue before publication. Collector freshness is public at
/v1/status.
The same data is available as a plain REST API, also without a key. See llmintel.ai/docs.
Development
pnpm --filter @llmintel/mcp build
pnpm exec vitest run packages/mcp # protocol-level tests against a fake catalog
# Drive the built binary against a live catalog
pnpm --filter @llmintel/mcp smoke
LLMINTEL_BASE_URL=http://localhost:3000 pnpm --filter @llmintel/mcp smokeLicense
MIT © LLMIntel
Available Tools
5 toolscheck_modelCheck a model's lifecycle statusARead-onlyInspect
Check whether an LLM model id is safe to use, deprecated, or retired, and what to migrate to. Accepts the exact string used in code (e.g. 'gpt-4o', 'claude-sonnet-4-5-20250929', 'anthropic/claude-opus-4-1'). Call this before writing or changing any hardcoded model id.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model id or alias exactly as it appears in code, e.g. 'gpt-4o'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint and openWorldHint, indicating a safe read operation with dynamic results. The description adds value by disclosing that it returns safety status (safe/deprecated/retired) and migration info, and by specifying input exactness. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose+output, input examples, usage guideline. Front-loaded with primary action. No unnecessary words, every sentence adds distinct value. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple tool with one param, no output schema, and annotations covering read-only/open-world, the description covers the purpose, input format, output summary (status+migration), and usage context. It is nearly complete; a minor gap is that 'what to migrate to' is mentioned but not explicitly stated as a replacement ID. Still very good.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes the single 'model' parameter with examples. The tool description reinforces this with additional examples ('gpt-4o', etc.) and emphasizes exact string usage. Schema coverage is 100%, so baseline is 3; the extra examples and clarity push it to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and clearly identifies the resource (LLM model id lifecycle status). It distinguishes from sibling tools like 'list_retiring_models' or 'suggest_replacement' by emphasizing it checks a single exact model id string. The examples and usage directive further clarify its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Call this before writing or changing any hardcoded model id.' It does not explicitly state when not to use it, but the sibling context and focus on a single model id imply alternatives like 'list_retiring_models' for broader checks. The guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_retiring_modelsList models retiring soonARead-onlyInspect
List tracked models scheduled to retire within a time window, soonest first. Use this to audit a codebase or plan migration work.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Restrict to one provider. Omit for all providers. | |
| withinDays | No | Only include models retiring within this many days. Defaults to 180. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and open-world hints. Description adds the sorting order ('soonest first'), which is useful but minor. No mention of pagination, rate limits, or other behaviors beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are efficient and front-loaded. First sentence states the core function and sort order; second sentence adds practical usage context. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, full schema coverage, and read-only annotations, the description is mostly complete. It lacks details on return format or error handling, but these are acceptable omissions for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters documented). The tool description does not add any additional meaning or context about the parameters beyond their schema definitions, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists retiring models with a time window and sort order. It doesn't explicitly compare to siblings, but 'audit a codebase or plan migration work' provides context that distinguishes from general search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to audit a codebase or plan migration work,' providing clear use cases. However, no mention of when not to use or alternatives like 'recent_lifecycle_changes' or 'check_model'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_lifecycle_changesRecent lifecycle changesARead-onlyInspect
Lifecycle state changes across all tracked providers, newest first. Use this to answer 'what model deprecations happened recently?'.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Restrict to one provider. | |
| sinceDays | No | Look back this many days. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and dynamic data. The description adds ordering (newest first) and scope (across all tracked providers), which are useful beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose and a clear use case. Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema, but the description implies a list of lifecycle changes. Given the simplicity and annotations, it is mostly complete, though the exact fields of each change could be clarified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema: provider and sinceDays are already described thoroughly in the schema. No additional param semantics provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists lifecycle state changes across providers, newest first, and provides a concrete example use case ('what model deprecations happened recently?'). This distinguishes it from siblings like check_model (single model) and list_retiring_models (specific subset).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes an explicit usage example ('Use this to answer...'), providing clear context. However, it does not specify when not to use it or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_modelsSearch the model catalogARead-onlyInspect
List tracked models, optionally filtered by provider and lifecycle state. Use this to discover what is currently available from a provider.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results. | |
| state | No | Filter by canonical lifecycle state, e.g. 'active' or 'deprecated'. | |
| provider | No | Filter by provider. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, indicating safe read behavior and that results may vary. The description adds no additional behavioral traits (e.g., pagination, rate limits). Given the annotations, the description is adequate but not enhanced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loading the action and filtering. Every sentence adds value with no redundancy or waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description could provide more detail on return format. It only says 'list models,' which implies a list but lacks specifics. Complexity is low, so it is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The description only reiterates optional filtering without adding new meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List tracked models' with optional filtering by provider and lifecycle state. It captures the core purpose and distinguishes it from siblings like list_retiring_models or check_model by focusing on general discovery. However, it does not explicitly differentiate from similar sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to discover what is currently available from a provider,' giving clear usage context. It does not provide when-not-to-use or alternative tools, but the guidance is sufficient for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_replacementSuggest a replacement for a modelARead-onlyInspect
Given a deprecated or retiring model, return the provider's recommended replacement(s) and, when none is published, active models from the same provider to consider.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model id or alias to find a replacement for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the behavior beyond annotations: it returns recommended replacements when available, and falls back to active models from the same provider. This adds value over the annotations (readOnlyHint, openWorldHint) and is fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded and contains no unnecessary words. Every part is essential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description explains the return value clearly (replacement(s) or active models). No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the input parameter description is adequate. The tool description does not add further details about the parameter format or examples, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (suggest replacement), the resource (deprecated/retiring model), and the fallback behavior (returning active models from the same provider). It effectively distinguishes from sibling tools like list_retiring_models and check_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use the tool: when a model is deprecated or retiring. However, it does not explicitly state when not to use it or mention alternative tools for other scenarios, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
check_model - First observed
list_retiring_models - First observed
recent_lifecycle_changes - First observed
search_models - First observed
suggest_replacement
TDQS
Each tool serves a distinct purpose: recent changes, model check, retiring list, replacement suggestion, and filtered search. No overlap or confusion.
Four tools follow verb_noun snake_case pattern (check_model, list_retiring_models, suggest_replacement, search_models), but recent_lifecycle_changes uses an adjective_noun pattern, creating a minor inconsistency.
Five tools are well-suited for a model lifecycle server, covering essential queries without being excessive or sparse.
The tool surface covers key lifecycle needs: checking status, listing retiring models, suggesting replacements, viewing recent changes, and search. No obvious gaps for a read-only information server.
Maintenance
Related MCP Connectors
Check if an AI model is deprecated, retiring, or silently changed price or context window.
The changelog of record for the AI stack: sunset checks, deprecations, pricing, and model events.
Real-time B2A and M2M deprecation feeds for AI agents and dev pipelines.
Live status, API pricing and rate limits for ChatGPT, Claude, Gemini, Cursor and 42+ AI tools.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to check software end-of-life dates and support status using the endoflife.date API, providing accurate information on software lifecycle, security status, and upgrade recommendations in real-time.58MIT
- AlicenseAqualityBmaintenanceChecks npm and PyPI packages for outdated versions, deprecation status, and breaking changes with cited sources, enabling AI agents to verify dependency freshness.117ISC
- FlicenseNot gradedqualityDmaintenanceProvides verified, up-to-date model IDs, pricing, and specs for over 100 models across 19 providers, preventing AI agents from using outdated or hallucinated model names.-

endoflife-mcpofficial
AlicenseAqualityAmaintenanceSoftware end-of-life intelligence for AI agents: EOL dates, support timelines and 0-100 upgrade risk scores for 480+ products. Check whether a version is still supported, score its risk, or audit an entire stack.5MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hivemindunit/llmintel-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server