Hardware end-of-life dates by part number, each linked to the vendor's own bulletin.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check up to 200 part numbers in one call (read-only, no auth; for a single part use lookup_part). Returns a per-part row (status, EOSL date, source URL, page URL) plus summary counts: past, endingSoon, supported, active, notFound. Never partial and never destructive: unknown or malformed entries do not fail the call, each simply returns found:false in its row.
Part numbers to check; max 200 after case-insensitive deduplication. Punctuation differences (dashes, dots, spaces) are tolerated by the matcher, so raw inventory strings are fine.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Check up to 200 part numbers in one call (read-only, no auth; for a single part use lookup_part). Returns a per-part row (status, EOSL date, source URL, page URL) plus summary counts: past, endingSoon, supported, active, notFound. Never partial and never destructive: unknown or malformed entries do not fail the call, each simply returns found:false in its row.
| Argument | Type | Description |
|---|---|---|
| part_numbers* | array | Part numbers to check; max 200 after case-insensitive deduplication. Punctuation differences (dashes, dots, spaces) are tolerated by the matcher, so raw inventory strings are fine. |
{
"type": "object",
"required": [
"part_numbers"
],
"properties": {
"part_numbers": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 200,
"minItems": 1,
"description": "Part numbers to check; max 200 after case-insensitive deduplication. Punctuation differences (dashes, dots, spaces) are tolerated by the matcher, so raw inventory strings are fine."
}
}
}Fetch the full source-backed record for one product family by slug (from search_models or lookup_part pageUrl): lifecycle dates per SKU group, every part number, support runway score factors, and the vendor bulletin URLs. Read-only; an unknown slug returns found:false with a hint, never an error.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Family slug, e.g. "cisco-catalyst-3850". |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Family slug, e.g. \"cisco-catalyst-3850\"."
}
}
}List all vendors tracked by EOSL.ai with family counts and vendor page URLs. Read-only, no parameters. Use this first to check whether a vendor is covered at all; for specific models use search_models, for a part number use lookup_part.
No arguments.
{
"type": "object",
"properties": {}
}Look up one hardware part number or model name in the EOSL.ai database (read-only, no auth; for many parts use bulk_check). Returns support status, End-of-Sale and End-of-Service-Life dates, support runway score, and the primary vendor bulletin URL backing the dates. Matching is exact, then punctuation-insensitive, then Fortinet short-SKU aliases (FG-60E -> FortiGate-60E); a model/family name (e.g. "7010TX-48") that matches no SKU returns the family-level record, flagged matchedVia:family-name. Anything else returns found:false rather than a guessed date.
| Argument | Type | Description |
|---|---|---|
| vendor | string | Optional vendor, e.g. "Cisco". A tracked vendor restricts the match to that vendor (a part tracked under another vendor returns found:false naming that vendor). A string that is not a tracked vendor is ignored and reported back as vendorHint. |
| part_number* | string | Vendor part number / SKU, e.g. "WS-C3850-48P-S" or "FG-100F". |
{
"type": "object",
"required": [
"part_number"
],
"properties": {
"vendor": {
"type": "string",
"description": "Optional vendor, e.g. \"Cisco\". A tracked vendor restricts the match to that vendor (a part tracked under another vendor returns found:false naming that vendor). A string that is not a tracked vendor is ignored and reported back as vendorHint."
},
"part_number": {
"type": "string",
"description": "Vendor part number / SKU, e.g. \"WS-C3850-48P-S\" or \"FG-100F\"."
}
}
}Search tracked product families by vendor, product line, or series name (case-insensitive substring, e.g. "nexus 9300"). Read-only. Returns up to 10 families with status, EOSL window, and page URL. Use this for discovery when you have a name; for an exact part number use lookup_part, and use get_family with a returned slug for the full record.
| Argument | Type | Description |
|---|---|---|
| query* | string | Search text, 1-120 characters. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Search text, 1-120 characters."
}
}
}