EOSL.ai — Hardware End-of-Life Database
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Hardware end-of-life dates by part number, each linked to the vendor's own bulletin.
| Author | ai.eosl |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 69 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"EOSL.ai — Hardware End-of-Life Database": {
"url": "https://eosl.ai/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (5)
lookup_partLook 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.
Parameters:
part_number(required) — string — Vendor part number / SKU, e.g. "WS-C3850-48P-S" or "FG-100F".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.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
bulk_checkCheck 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.
Parameters:
part_numbers(required) — 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.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
search_modelsSearch 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.
Parameters:
query(required) — string — Search text, 1-120 characters.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_familyFetch 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.
Parameters:
slug(required) — string — Family slug, e.g. "cisco-catalyst-3850".
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_vendorsList 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.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.