Cloud retirements, end of support dates and IaC breaking changes for Azure, AWS, GCP and OCI.
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.
Returns one published item in full: its dates, summary, impact, migration path, replacement, affected versions and sources, as Markdown and as structured data. Use it with the slug of a row that search_items returned; the address of the item page or its short address works too. An unknown slug is answered as an error, and so is a withdrawn item, with the notice that it was withdrawn.
Slug of the item, as in the slug field of a row. The address of the item page, of its Markdown or JSON form, or its short address is accepted too.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http eolwatch https://eolwatch.dev/mcp
Returns one published item in full: its dates, summary, impact, migration path, replacement, affected versions and sources, as Markdown and as structured data. Use it with the slug of a row that search_items returned; the address of the item page or its short address works too. An unknown slug is answered as an error, and so is a withdrawn item, with the notice that it was withdrawn.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Slug of the item, as in the slug field of a row. The address of the item page, of its Markdown or JSON form, or its short address is accepted too. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Slug of the item, as in the slug field of a row. The address of the item page, of its Markdown or JSON form, or its short address is accepted too."
}
},
"additionalProperties": false
}Returns what the page of one provider, tool or module shows: the range of releases that is tracked, the summary sentence, the notices and the breaking changes of each release that lists any. Send from with the version in use to get only the releases above it. Read the notices before you call a range clear: they say which releases were not tracked or whose release notes were not read.
| Argument | Type | Description |
|---|---|---|
| from | string | The version in use, or a version constraint, of at most 64 characters. Only releases newer than that version are in the answer. For a constraint, that version is the lowest one the constraint allows. Leave it out for every tracked release whose release notes were read and list a breaking change. |
| provider* | string | Key of the provider, tool or module, as in the key field of list_providers. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"provider"
],
"properties": {
"from": {
"type": "string",
"maxLength": 64,
"description": "The version in use, or a version constraint, of at most 64 characters. Only releases newer than that version are in the answer. For a constraint, that version is the lowest one the constraint allows. Leave it out for every tracked release whose release notes were read and list a breaking change."
},
"provider": {
"enum": [
"azurerm",
"azapi",
"aws",
"oci",
"bicep",
"avm-res-network-virtualnetwork",
"avm-res-storage-storageaccount",
"avm-res-network-networksecuritygroup",
"avm-res-compute-virtualmachine",
"avm-res-resources-resourcegroup",
"avm-res-managedidentity-userassignedidentity",
"avm-res-network-privatednszone",
"avm-res-operationalinsights-workspace",
"avm-res-network-routetable",
"avm-res-network-natgateway",
"avm-res-network-publicipaddress",
"avm-res-cognitiveservices-account",
"avm-res-network-firewallpolicy",
"avm-res-containerregistry-registry",
"avm-res-containerservice-managedcluster",
"avm-res-network-privateendpoint",
"avm-res-web-site",
"avm-res-network-loadbalancer",
"avm-res-dbforpostgresql-flexibleserver",
"avm-res-network-bastionhost"
],
"type": "string",
"description": "Key of the provider, tool or module, as in the key field of list_providers."
}
},
"additionalProperties": false
}Lists the infrastructure as code providers, tools and modules whose releases are read for breaking changes, each with its newest tracked release. Use it to find the key that get_provider_changes takes.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Lists every service that has a published item, with its number of items, how many of them are upcoming and the date of the next one. Use it to find the slug of a service before you filter search_items by service, or to see what is tracked for one cloud.
| Argument | Type | Description |
|---|---|---|
| q | string | Search text of at most 100 characters. Every word must occur in the name or the slug of the service. |
| cloud | string | Only the services of this cloud. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 100,
"description": "Search text of at most 100 characters. Every word must occur in the name or the slug of the service."
},
"cloud": {
"enum": [
"azure",
"aws",
"gcp",
"oci",
"multi"
],
"type": "string",
"description": "Only the services of this cloud."
}
},
"additionalProperties": false
}Returns one page of the changelog of EOL Watch, newest first: items added, effective dates changed, items updated and items withdrawn. Use it to see what changed since you last read the data.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page of the changelog, from 1. One page holds 50 changes, and a page past the end is the last page. |
| cloud | string | Only changes to items of this cloud. |
| change | string | Only this kind of change: added, date_changed, updated or withdrawn. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Page of the changelog, from 1. One page holds 50 changes, and a page past the end is the last page."
},
"cloud": {
"enum": [
"azure",
"aws",
"gcp",
"oci",
"multi"
],
"type": "string",
"description": "Only changes to items of this cloud."
},
"change": {
"enum": [
"added",
"date_changed",
"updated",
"withdrawn"
],
"type": "string",
"description": "Only this kind of change: added, date_changed, updated or withdrawn."
}
},
"additionalProperties": false
}Lists published items of EOL Watch: retirements, end of support dates and breaking changes. Filter by cloud, kind of change, category, service, search text and effective date. Without status it lists upcoming items only, soonest first. To list ended items, breaking changes in effect or every item, send status ended, in_effect or all. Use it for questions such as what retires in the next 90 days or what is due for one service. It returns one page of compact rows as a Markdown table and as structured data, with the UTC day the countdowns were counted for (as_of). Call get_item for the full text of one item. This tool does not check an estate: that check runs in the reader's browser only.
| Argument | Type | Description |
|---|---|---|
| q | string | Search text of at most 100 characters. Every word must occur in the title, the summary, the service, the slug or an affected version. |
| to | string | Latest effective_date to include (YYYY-MM-DD). An item without a date never matches. A month, quarter or year is compared by its first day; use within_days for what is due or what ended. |
| dir | string | asc (the default) or desc. The added order ignores it. |
| from | string | Earliest effective_date to include (YYYY-MM-DD). An item without a date never matches. A month, quarter or year is compared by its first day; use within_days for what is due or what ended. |
| sort | string | date (the default): by effective_date, items without a date last; a list of ended items or of changes in effect (status=ended, status=in_effect) is ordered by the last day of each effective period. added: newest first by created_at, then by the later announcement date (items without one last), then by the soonest effective date, then by title. service: by service name. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 13, 2026.
| type | array | Kinds of change to include. Leave it out for every kind. |
| cloud | array | Clouds to include. Leave it out for every cloud. |
| limit | integer | Most items in one answer: 1 to 100, 25 by default. |
| offset | integer | Number of matching items to skip. Send the next_offset of an answer to get the next page. |
| status | string | upcoming (the default): items whose effective period is not over, including items without a date. ended: retirements and end of support dates whose whole period is over. in_effect: breaking changes whose date has passed (a breaking change takes effect, it does not end, so it is never in ended). all: every item. |
| service | string | Service slug of at most 80 characters, as in the service_slug field. Two clouds can use the same slug, so send cloud with it. |
| category | string | Category group, as in the address of a category page. |
| within_days | integer | Only items at most this many days from the as_of day (1 to 3650). With status upcoming: items due in the next N days, including an item whose month, quarter or year has started and is not over. With status ended or in_effect: items that ended or took effect in the last N days. With status all: all of these. Cannot be combined with from or to. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 100,
"description": "Search text of at most 100 characters. Every word must occur in the title, the summary, the service, the slug or an affected version."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest effective_date to include (YYYY-MM-DD). An item without a date never matches. A month, quarter or year is compared by its first day; use within_days for what is due or what ended."
},
"dir": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "asc (the default) or desc. The added order ignores it."
},
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest effective_date to include (YYYY-MM-DD). An item without a date never matches. A month, quarter or year is compared by its first day; use within_days for what is due or what ended."
},
"sort": {
"enum": [
"date",
"added",
"service"
],
"type": "string",
"description": "date (the default): by effective_date, items without a date last; a list of ended items or of changes in effect (status=ended, status=in_effect) is ordered by the last day of each effective period. added: newest first by created_at, then by the later announcement date (items without one last), then by the soonest effective date, then by title. service: by service name."
},
"type": {
"type": "array",
"items": {
"enum": [
"retirement",
"end_of_support",
"breaking_change"
],
"type": "string"
},
"description": "Kinds of change to include. Leave it out for every kind."
},
"cloud": {
"type": "array",
"items": {
"enum": [
"azure",
"aws",
"gcp",
"oci",
"multi"
],
"type": "string"
},
"description": "Clouds to include. Leave it out for every cloud."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Most items in one answer: 1 to 100, 25 by default."
},
"offset": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Number of matching items to skip. Send the next_offset of an answer to get the next page."
},
"status": {
"enum": [
"upcoming",
"ended",
"in_effect",
"all"
],
"type": "string",
"description": "upcoming (the default): items whose effective period is not over, including items without a date. ended: retirements and end of support dates whose whole period is over. in_effect: breaking changes whose date has passed (a breaking change takes effect, it does not end, so it is never in ended). all: every item."
},
"service": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 80,
"description": "Service slug of at most 80 characters, as in the service_slug field. Two clouds can use the same slug, so send cloud with it."
},
"category": {
"enum": [
"services",
"features",
"kubernetes",
"runtimes",
"databases",
"compute-skus",
"os-images",
"apis-sdks",
"iac",
"other"
],
"type": "string",
"description": "Category group, as in the address of a category page."
},
"within_days": {
"type": "integer",
"maximum": 3650,
"minimum": 1,
"description": "Only items at most this many days from the as_of day (1 to 3650). With status upcoming: items due in the next N days, including an item whose month, quarter or year has started and is not over. With status ended or in_effect: items that ended or took effect in the last N days. With status all: all of these. Cannot be combined with from or to."
}
},
"additionalProperties": false
}