{"name":"down.guide","description":"Free outage feed: live status of 400+ cloud, SaaS and developer providers from their official status pages.","url":"https://down.guide","provider":{"organization":"Sazabi","url":"https://www.sazabi.com/?utm_source=down-guide&utm_medium=agent-json"},"mcp":{"url":"https://mcp.down.guide/mcp","transport":"streamable-http","auth":"none","tools":["search","execute"],"operations":["entities.search","entities.get","entities.list","feed.read","rankings.list","rankings.get","feedback.send","stack.check","dependency.check","report.outage","report.affected"],"unlistedOperations":{"incident.list":"entities.list","incident.get":"entities.get","provider.list":"entities.list","provider.get":"entities.get","cascade.list":"entities.list","cascade.get":"entities.get","leaderboard.get":"rankings.get"},"deprecatedTools":{"since":"2026-11-11","docsRemovedOn":"2027-01-10","note":"Callable, not listed by tools/list. Each is replaced by the operation named in replacements.","replacements":{"get_provider":"provider.get","list_feed":"incident.list","get_incident":"incident.get","get_cascade":"cascade.get","search":"entities.search","check_stack":"stack.check","check_dependency":"dependency.check","get_leaderboard":"leaderboard.get","send_feedback":"feedback.send","report_outage":"report.outage","report_affected":"report.affected"}}},"api":{"openapi":"https://down.guide/openapi.json","base":"https://down.guide/api/v1","auth":"none"},"docs":{"llms":"https://down.guide/llms.txt","llmsFull":"https://down.guide/llms-full.txt","changelog":"https://down.guide/changelog","changelogJson":"https://down.guide/changelog.json","changelogFeed":"https://down.guide/changelog.xml","markdown":"Append .md to any page URL"},"feeds":{"rss":"https://down.guide/feed","atom":"https://down.guide/feed?format=atom","json":"https://down.guide/feed?format=json"},"skills":[{"name":"down-guide","url":"https://down.guide/.well-known/agent-skills/down-guide/SKILL.md"}],"capabilities":[{"name":"entities.search","description":"Search incidents (400 days), providers and cascades: the one tool for finding past and present incidents, by words or by fields, and the providers and cascades a query names. Pass q (free text plus query keys: provider:, category:, impact:, region:, component:, confidence:, acknowledged: (true or false), state:, kind:, date: or started: (>30d, 2026-10, <2026-01-01), type: (incident, provider, cascade, or all; type:provider lists providers), filter:major, duration: (>2h), has: (rca, summary, lead, cascade), cause: (deploy_config, dns, network, certificate, capacity, upstream, datacenter, security), cascade:, sort: (relevance, started, duration, index); terms are ANDed, commas OR values, a leading - excludes), the typed parameters, or both: each parameter is ANDed with q as its key term. With no words, results are newest first, so provider: [\"github\"] lists GitHub's newest incidents. Words match whole words and their English forms, a misspelled word also matches the closest indexed names (githb finds GitHub), and \"last week\" or \"past month\" read as a started: bound. The answer is items: the incidents that match, and, when the query names a provider or cascade exactly, a row for it first; results holds the incidents alone, as it always did. Each result's match says why it matched: the fields each word hit (provider, title, summary, components, updates), the names a misspelled word was also searched as (alsoAs), and the key terms it meets. query echoes what ran, facets counts every match by type, provider, category, impact, confidence, kind and state, and problems lists anything the query couldn't use (a query with problems returns no results). With no matches, suggestions lists broader queries that do match; an empty answer is not evidence that nothing happened. Pass next_cursor back as cursor for the next page."},{"name":"entities.get","description":"One entity by id, any type (incident, provider, cascade): what its page shows, as JSON, the same as GET /api/v1/<path>/<id>. type may be left out when the id's shape names the type (an advisory id, SZB-…, DWN-…); a slug or a package needs it. An unknown id answers not_found."},{"name":"entities.list","description":"One page of one entity type (incident, provider, cascade), the same as GET /api/v1/<path>: the type's own filters from the registry, limit and cursor. A filter the type does not take is refused with the ones it does. The answer is { items, next_cursor } and every item carries type, kind, id, url and title."},{"name":"feed.read","description":"The items a /feed subscriber gets, as JSON Feed, newest first: the default feed, or the record types (incident, cascade) and filters you name (provider, category, region, component, confidence, filter=major, impact, state). To search use entities.search; to list one type with paging use entities.list."},{"name":"rankings.list","description":"Every ranking the site has, with its id, title, the entity type it ranks, its periods (time tokens, default first), the archive it keeps (week or month, for at) and the filters rankings.get takes. url is the ranking's page, null for a ranking only the API serves."},{"name":"rankings.get","description":"One ranking's rows, ranked. id is a ranking from rankings.list (incidents, providers-uptime, providers-downtime). period picks a rolling window from the ranking's periods (7d, 30d, 365d, all, 90d; default the first), at an archived ISO week (2026-W45) or month (2026-10) when the ranking keeps that archive; a ranking with no periods shows the current week or month. The filters are the ranking's own (tech, ecosystem, filter, category). Any other argument or value answers 400 with the valid ones. The answer is { id, title, type, period or at, url, rows }."},{"name":"feedback.send","description":"Send a note to the people who run down.guide: a wrong provider mapping, a missing provider, a bad summary. Not public."},{"name":"stack.check","description":"Which providers a project depends on, and whether any has a problem now. Pass manifest_content: the contents of a package.json, any lockfile, requirements.txt, go.mod, Gemfile, Terraform, docker-compose, a .env file (only variable names are read) or a list of domains (manifest_name, the file name, is optional: it labels the evidence and breaks ties); packages: the (ecosystem, name) pairs of a lockfile you parsed yourself, names only and no versions (the down.guide CLI does this, so a large lockfile never travels); providers: slugs; or stack_id: the id of a stack saved with POST https://down.guide/api/v1/stacks (the same body as /api/v1/check; only the provider slugs are kept). They combine. Returns each provider with the reasons it matched, a confidence (likely, or possible for weak evidence like a bare REDIS_URL or a homepage link), live state, open incidents and a feed URL for exactly that stack. problems and openIncidents count only likely matches; possibleProblems lists the rest. manifest_content is not stored. No providers matched means none found, not that the project has no providers."},{"name":"dependency.check","description":"One dependency to the providers behind it and their live state: a package name (openai, npm:@aws-sdk/client-s3, pypi:stripe), an API host (api.github.com), an environment variable name (STRIPE_SECRET_KEY), a Terraform provider or resource, a container image or a provider name."},{"name":"report.outage","description":"Report that a provider isn't working for you (or for the agent's user) right now. Reports count only in aggregate against the provider's own baseline, are deduplicated per caller per 10 minutes, and alone never make a public claim."},{"name":"report.affected","description":"Say an existing incident affects you. Counted in aggregate on the incident page, deduplicated per caller per 10 minutes."}]}