Upstream Status Pages

The public status of the services that the platform depends on: the AI providers, and AWS in the platform’s region.

Many problems that users report start upstream: an AI provider that is slow or down makes prompts fail, and an AWS outage in the platform’s region can stop its nodes or its cluster. The Smarter Operations MCP server’s platform_status and eks_status tools (smarter.apps.mcpserver.status.tools) use this module to check the providers’ own public status pages, so that a help desk answer can say “the problem is upstream” with evidence. It reads:

  • the AI providers’ status pages of STATUS_PAGES. Each is an Atlassian Statuspage, whose /api/v2/status.json gives an overall indicator, none, minor, major or critical, and a description, e.g. “All Systems Operational”. provider_statuses() reads them.

  • the AWS service status feeds of AWS_SERVICES in the platform’s region, e.g. EKS in ca-central-1. Each is an RSS feed at https://status.aws.amazon.com/rss/<service>-<region>.rss, whose items are the service’s recent events. aws_service_events() reads them. They need no AWS account, unlike the AWS Health api, which requires a paid support plan, and they cost nothing.

Every feed is fetched with smarter.apps.llmtool.plugin.safe_http.fetch(), the platform’s guarded HTTP client, which refuses private addresses and limits the size of a response. A feed is cached for FEED_CACHE_TTL seconds, so that several tool calls in a row fetch it once. A feed that cannot be read is reported as unknown, never as healthy, and the failure is not cached.

The text of a feed is written by its provider, and is passed to an LLM: the tools mark their results as data, not instructions.

Note

Experimental. The MCPServer was designed and coded by Claude Code (Anthropic’s Claude Opus 5.5), with Lawrence McDaniel as co-author. It is experimental, and will be documented.

smarter.apps.mcpserver.status.feeds.AWS_SERVICES: tuple[tuple[str, str], ...] = (('eks', 'EKS'), ('ec2', 'EC2'))

each one’s name in its feed’s url, and its name for people.

EKS runs the cluster’s control plane, and EC2 runs its nodes.

(('eks', 'EKS'), ('ec2', 'EC2'))
Type:

The AWS services whose status feeds are read

class smarter.apps.mcpserver.status.feeds.AwsEvent(service, published, title, description)[source]

Bases: object

An event of an AWS service in the platform’s region, e.g. “Increased API error rates”, from its RSS feed.

__init__(service, published, title, description)
description: str

The event’s details, as AWS wrote them.

published: datetime | None

When AWS posted the event, in UTC, or None if the feed did not say.

service: str

The service’s name for people, e.g. EKS.

title: str

The event’s title, as AWS wrote it.

class smarter.apps.mcpserver.status.feeds.ProviderStatus(name, url, indicator='unknown', description='the status page could not be read')[source]

Bases: object

An AI provider’s status, as its status page reports it, for platform_status.

provider_statuses() builds it. A page that cannot be read keeps the unknown indicator, so that it is never mistaken for a provider that works.

__init__(name, url, indicator='unknown', description='the status page could not be read')
description: str = 'the status page could not be read'

The status in words, from the page, or why it is unknown.

indicator: str = 'unknown'

none, minor, major or critical, from the page, or unknown if it could not be read.

name: str

The provider’s name, e.g. OpenAI.

property operational: bool

Whether the provider reports that everything works.

Returns:

True only for the indicator none. A page that could not be read is not operational.

url: str

The status page that people can open, e.g. https://status.openai.com/.

smarter.apps.mcpserver.status.feeds.STATUS_PAGES: tuple[tuple[str, str], ...] = (('OpenAI', 'https://status.openai.com/api/v2/status.json'), ('Anthropic', 'https://status.claude.com/api/v2/status.json'), ('Mistral', 'https://status.mistral.ai/api/v2/status.json'))

each one’s name, and the url of its status.

Add a provider here when its status page offers /api/v2/status.json. Google’s status page does not: it publishes its incidents in another format, so Gemini is not checked.

(
    ('OpenAI', 'https://status.openai.com/api/v2/status.json'),
    ('Anthropic', 'https://status.claude.com/api/v2/status.json'),
    ('Mistral', 'https://status.mistral.ai/api/v2/status.json'),
)
Type:

The AI providers whose status page is an Atlassian Statuspage

smarter.apps.mcpserver.status.feeds.aws_service_events(region, now=None)[source]

Read the recent events of the AWS services of AWS_SERVICES in a region.

An event older than AWS_EVENT_PERIOD is left out. An event without a date is kept, rather than hidden, and is listed first, as if it were current, because it may be. It never raises: a feed that cannot be read is named in the second list, and logged.

Side effects: one HTTPS GET per service, unless its feed is cached (see fetch_aws_feed()).

Parameters:
  • region (str) – The AWS region, e.g. smarter_settings.aws_region.

  • now (datetime | None) – The current time, which tests set. By default, the current time in UTC.

Return type:

tuple[list[AwsEvent], list[str]]

Returns:

The recent events of every service, newest first, and the names of the services whose feed could not be read, e.g. ["EC2"]. An empty first list means that AWS reports no events.

smarter.apps.mcpserver.status.feeds.provider_statuses()[source]

Read the status of each AI provider of STATUS_PAGES.

It never raises: a page that cannot be read is reported as unknown, and logged.

Side effects: one HTTPS GET per provider, unless its page is cached (see fetch_statuspage()).

Return type:

list[ProviderStatus]

Returns:

Each provider’s status, in the order of STATUS_PAGES.