Skip to main content
Menu

Agents

Everything on down.guide is free to read by machine: no key, no account. Be reasonable with request rates; responses are cached for a minute.

MCP

Add the MCP server

Streamable HTTP, no auth. Two tools: search finds an operation and execute runs it. The old tools (get_provider, list_feed and the rest) still answer; they are deprecated and leave these docs on 2027-01-10.

Set up the down.guide MCP server for me. down.guide is a free, public outage feed for 400 cloud and SaaS providers: no login, no API key.

- Server name: down-guide
- Transport: Streamable HTTP
- URL: https://mcp.down.guide/mcp

Add it the way you normally add MCP servers (your CLI command or your MCP config file), then confirm it connects and lists its two tools, search and execute. To finish, use them to run the stack.check operation on this project's package.json or lockfile and tell me which of my providers have a problem right now.

Paste this into any coding agent. It adds the server with its own MCP setup.

incident.list
The newest incidents across providers
incident.get
One incident by id: a down.guide id (DWN-…)
provider.list
The provider catalog with live state; q matches names and category narrows it
provider.get
One provider by id: the provider's slug or name, such as github or aws
cascade.list
Upstream outages and the providers that broke with them, newest first; provider names the upstream
cascade.get
One cascade by id: the cascade's slug, such as aws-2026-11-06
entities.search
Search incidents
feed.read
The items a /feed subscriber gets, as JSON Feed, newest first
stack.check
Which providers a project depends on, and whether any has a problem now
dependency.check
One dependency to the providers behind it and their live state
leaderboard.get
The Down Index
feedback.send
Send a note to the people who run down.guide
report.outage
Report that a provider isn't working for you (or for the agent's user) right now
report.affected
Say an existing incident affects you

REST

REST API

Every MCP operation has a REST twin returning the same JSON.

OpenAPI
Get provider
GET /api/v1/providers/<slug>
List feed
GET /api/v1/incidents
Get incident
GET /api/v1/incidents/<id>
Get cascade
GET /api/v1/cascades/<slug>
Search
GET /api/v1/search
Check stack
POST /api/v1/check
Check dependency
GET /api/v1/dependency
Get leaderboard
GET /api/v1/leaderboard
Send feedback
POST /api/v1/feedback
Report outage
POST /api/v1/reports
Report affected
POST /api/v1/reports/affected
Catalog
GET /api/v1/providers
Every provider, one line each
GET /api/v1/status
curl https://down.guide/api/v1/providers/github

Feeds

Feeds and badges

RSS, Atom or JSON Feed: incidents by default, or cascades too, filtered by provider, category, impact or region. Badges show a provider's live state.

https://down.guide/feed?provider=github,vercel&filter=major&format=json
https://down.guide/feed?type=all&provider=aws
[![GitHub status](https://down.guide/badge/github.svg)](https://down.guide/providers/github)

Docs

Docs for agents

Every page also has a markdown copy: add .md to the URL.

llms.txt · llms-full.txt · openapi.json · agent.json

Changelog

Changelog, 2026-11-10

Old names answer with Deprecation and Sunset headers until 2027-01-09, then stop.

The MCP server lists exactly two tools that never change: search finds an operation and execute runs one. Every capability is an operation (provider.get, incident.list, stack.check, entities.search, <type>.list and <type>.get, with a REST twin each), so a new one never changes the tool list. The old tools (get_provider, list_feed and the rest) stay callable and are no longer listed: deprecated since 2026-11-11, removed from these docs on 2027-01-10.

Every entity type has a REST list and get in one shape (https://down.guide/openapi.json lists them): /api/v1/incidents, /providers and /cascades answer { items, next_cursor, total? } and every object carries type (incident, provider or cascade), kind, id, url and title. /api/v1/cascades is new, with limit (1 to 200, default 30) and cursor, and a parameter that is unknown or does not apply is a 400. /api/v1/providers takes limit, cursor and q, and without a limit still returns the whole catalog in one answer, providers beside items.

Every incident carries confidence (confirmed or corroborated), confidenceLabel, acknowledged (true when the provider's own page posted it, from acknowledgedAt), providerStatus and cascade, in incident JSON, feeds, search and MCP results. The labels are the same words as cve.now: Confirmed and Corroborated.

confidence:, acknowledged: and cascade: are search keys, and confidence is a typed parameter of search, list_feed and /api/v1/incidents. confidence:unverified is valid and matches nothing: unverified evidence is never public.

The get_cascade MCP tool and GET /api/v1/cascades/<slug> return one cascade (an upstream outage and the providers that broke with it, with the incident behind each); an incident's cascade field is the slug. The CLI has the same as down.guide cascade <slug>.

Search is one search, the same on cve.now and down.guide. type: (and the type parameter) takes entity types: incident, provider and cascade, or all; date: is the shared name for started:, and filter:major is the priority slice /feed?filter=major reads. The response's items hold the matching incidents and the providers and cascades the query names, each tagged with its type and an exact name match first; results holds the incidents alone, as before. facets gains type.

Regions come at three levels: region: a cloud provider's own region, as the provider names it (us-east-1, europe-west4); area: a market area (us, eu, apac, latam, me); country: one country (au, ca, in, jp).

level (each incident)
Now confidence (confirmed or corroborated) and acknowledged; not_acknowledged is corroborated with acknowledged false, and signal is unverified and never served
levelLabel (each incident)
Now confidenceLabel (Confirmed or Corroborated)
status (each incident)
Now providerStatus (an update's own status keeps its name)
event (each incident)
Now cascade
facets.level (search)
Now facets.confidence
level: (search)
Now confidence: (confirmed, corroborated or unverified) and acknowledged: (true or false); level:not_acknowledged is acknowledged:false
event: and has:event (search)
Now cascade: and has:cascade
level (search, list_feed and /api/v1/incidents (/feed?level= keeps working))
Now the confidence parameter