All skills
twitterredditforumsweb Product & Customer Insights

Outage Early-Warning Siren

Detect an incident from a corroborated cross-platform complaint surge minutes before the support queue floods

Run this skill with your agent
1. Connect the MCP server
https://apidirect.io/mcp?token=YOUR_API_KEY
2. Then ask your agent — name the skill so it runs this exact playbook
Use the outage-early-warning-siren skill: Watch X and alert me the moment {brand} looks like it's having an outage.
Naming the skill (outage-early-warning-siren) makes your agent run this exact playbook instead of improvising its own searches. In clients that support MCP prompts (Claude Desktop, Claude Code, Cursor) it also appears as a prompt named outage-early-warning-siren, and any agent can call get_skill(skill_id="outage-early-warning-siren") directly.

What it does

Customers complain publicly long before they open a ticket. This skill watches real-time complaint volume on X — and optionally Reddit, forums, and the open web (Downdetector-style trackers and status pages) — against normal background noise, weights it by complainer reach, and fires the siren only when a corroborated surge across the sources you enabled looks like a genuine outage rather than one-off gripes.

Who it's for: Support leads and on-call/reliability teams

Inputs

Input Required Description Example
brand Yes Brand, app, or service name people would mention when it breaks Figma
platforms No Comma-separated list of platforms to run — options: twitter, reddit, forums, web. Omit to run all of them; name specific platforms to limit the run. reddit, forums, web
depth No How many result pages to pull per source. Higher means broader coverage and a more reliable volume read, but slower. Maps to the pages/page param on each search. 10
time_window No Freshness window for the forums and web sweeps (the only two sources that accept a time filter). Use a tight window like 'hour' for a true early-warning siren. Allowed values: hour, day, week, month, year, any. hour
country No Optional region to narrow the forums and web sweeps when you suspect a geo-localized outage (e.g. a single cloud region). Leave blank for a global read. us

How your agent runs it

  1. 1
    search_twitter(query='{brand} down OR broken OR "not working" OR outage', sort_by=most_recent, pages=10, get_sentiment=true)

    Always-on real-time base. Count fresh complaints and keep only items with polarity==negative or dominant_emotion in anger/fear. Judge the rate against normal background chatter for {brand} so isolated gripes don't trip the siren, and capture the earliest complaint timestamps plus the loudest tweet_id and complainant_username for later steps.

  2. 2
    search_reddit(query='{brand} down OR outage OR "not working"', sort_by=most_recent, page=10, get_sentiment=true)

    Only run if {platforms} includes reddit: sweep fresh subreddit threads (the classic 'is {brand} down?' posts) and keep negative/anger items. A simultaneous spike here corroborating X is strong evidence of a real shared incident rather than noise.

  3. 3
    search_forums(query='{brand} down OR outage OR "not working"', time=hour, page=10, get_sentiment=true)

    Only run if {platforms} includes forums: pull forum threads within {time_window} reporting {brand} failures. Treat a cluster of fresh negative posts as independent corroboration of an active outage, especially for B2B/technical products whose users live on forums before they tweet.

  4. 4
    search_web(query='is {brand} down', time=hour, include_ai_overview=true, pages=10)

    Only run if {platforms} includes web: catch Downdetector-style outage trackers, third-party status reports, and aggregator pages for {brand} within {time_window}. The AI overview gives a fast human-readable 'is it down right now' verdict to gut-check the social signal.

  5. 5
    twitter_user_profile(username=<loudest_complainant_username>)

    For the top recent complainers surfaced in step 1, pull followers_count and verified to weight blast radius by reach. A verified or high-follower complainer means a far larger audience already sees the problem, raising the alert severity.

  6. 6
    twitter_tweet_comments(tweet_id=<loudest_complaint_id>, get_sentiment=true)

    Check the pile-on replies on the loudest tweet from step 1 to confirm a real shared incident (many users echoing the same failure) versus an isolated account issue, then emit the final go/no-go alert combining this with any corroborating sources you enabled.

Delivers: A go/no-go outage alert with estimated blast radius (a cross-platform complaint surge weighted by complainer reach) plus links to the earliest complaints across every source you enabled, so on-call can confirm and respond before the support queue floods.

Tools used

The full playbook

This is exactly what the MCP returns to your agent (via the outage-early-warning-siren prompt or get_skill tool), with your inputs filled in.

SKILL: Outage Early-Warning Siren
Customers complain publicly long before they open a ticket. This skill watches real-time complaint volume on X — and optionally Reddit, forums, and the open web (Downdetector-style trackers and status pages) — against normal background noise, weights it by complainer reach, and fires the siren only when a corroborated surge across the sources you enabled looks like a genuine outage rather than one-off gripes.

You are running this skill on API Direct via its MCP tools. Execute the steps below yourself by calling the named tools in order — values in <angle brackets> come from a previous step. Then deliver the result described at the end.

INPUTS:
  - brand (required): <brand — ASK THE USER>
      Brand, app, or service name people would mention when it breaks
  - platforms (optional): (optional — e.g. reddit, forums, web)
      Comma-separated list of platforms to run — options: twitter, reddit, forums, web. Omit to run all of them; name specific platforms to limit the run.
  - depth (optional): 10 (default — override if you like)
      How many result pages to pull per source. Higher means broader coverage and a more reliable volume read, but slower. Maps to the pages/page param on each search.
  - time_window (optional): hour (default — override if you like)
      Freshness window for the forums and web sweeps (the only two sources that accept a time filter). Use a tight window like 'hour' for a true early-warning siren. Allowed values: hour, day, week, month, year, any.
  - country (optional): (optional — e.g. us)
      Optional region to narrow the forums and web sweeps when you suspect a geo-localized outage (e.g. a single cloud region). Leave blank for a global read.

PLATFORM SELECTION: some steps are gated with "Only run if {platforms} includes X". If the user supplied a `platforms` value, run only the steps whose platform is listed. If the user did NOT supply `platforms`, run ALL steps — every platform the skill supports.

STEPS:
  1. Tool `search_twitter` — search_twitter(query='{brand} down OR broken OR "not working" OR outage', sort_by=most_recent, pages=10, get_sentiment=true)
     Always-on real-time base. Count fresh complaints and keep only items with polarity==negative or dominant_emotion in anger/fear. Judge the rate against normal background chatter for {brand} so isolated gripes don't trip the siren, and capture the earliest complaint timestamps plus the loudest tweet_id and complainant_username for later steps.
  2. Tool `search_reddit` — search_reddit(query='{brand} down OR outage OR "not working"', sort_by=most_recent, page=10, get_sentiment=true)
     Only run if {platforms} includes reddit: sweep fresh subreddit threads (the classic 'is {brand} down?' posts) and keep negative/anger items. A simultaneous spike here corroborating X is strong evidence of a real shared incident rather than noise.
  3. Tool `search_forums` — search_forums(query='{brand} down OR outage OR "not working"', time=hour, page=10, get_sentiment=true)
     Only run if {platforms} includes forums: pull forum threads within hour reporting {brand} failures. Treat a cluster of fresh negative posts as independent corroboration of an active outage, especially for B2B/technical products whose users live on forums before they tweet.
  4. Tool `search_web` — search_web(query='is {brand} down', time=hour, include_ai_overview=true, pages=10)
     Only run if {platforms} includes web: catch Downdetector-style outage trackers, third-party status reports, and aggregator pages for {brand} within hour. The AI overview gives a fast human-readable 'is it down right now' verdict to gut-check the social signal.
  5. Tool `twitter_user_profile` — twitter_user_profile(username=<loudest_complainant_username>)
     For the top recent complainers surfaced in step 1, pull followers_count and verified to weight blast radius by reach. A verified or high-follower complainer means a far larger audience already sees the problem, raising the alert severity.
  6. Tool `twitter_tweet_comments` — twitter_tweet_comments(tweet_id=<loudest_complaint_id>, get_sentiment=true)
     Check the pile-on replies on the loudest tweet from step 1 to confirm a real shared incident (many users echoing the same failure) versus an isolated account issue, then emit the final go/no-go alert combining this with any corroborating sources you enabled.

DELIVER: A go/no-go outage alert with estimated blast radius (a cross-platform complaint surge weighted by complainer reach) plus links to the earliest complaints across every source you enabled, so on-call can confirm and respond before the support queue floods.

Note: each underlying tool call is billed at its normal endpoint price; get_sentiment adds a small per-page surcharge. Page through results as needed but stop once you have enough to deliver the outcome.