InTouch Hub · Blue Isle Software

API Health Monitor

Cluster failures across multiple HTTP endpoint health checks. AI groups failures by region, service, or status code and identifies likely root causes when failures share a pattern.

API Health Monitor Skill

Turn a wall of HTTP probe results into a one-paragraph "what is broken and why" — clustered by region, service, or status code.

The Problem

When 4 of 22 endpoints fail, the question is rarely "which 4" — it is "what do they have in common?" A human eyes the list and spots the pattern in 5 seconds. AI does the same automatically and scales as you add endpoints.

How It Works

  1. A runtimeenv task hits each endpoint with curl and emits a JSON list of results
  2. The api-health-monitor skill clusters failures and identifies likely root causes
  3. The message task delivers the digest

Setup

  1. Install this skill
  2. Edit the endpoint list in the YAML below — name, region, service, URL per line
  3. Schedule for whatever cadence makes sense (5 minutes for canaries, 15 minutes for production)

Example YAML Job

name: api-health-check
version: 1.0.0
description: Multi-endpoint health probe with AI clustering

notifications:
  - userNames: [intouch]
    alertOnError: true

tasks:
  - name: probe-endpoints
    tool: runtimeenv
    properties:
      scriptContent: |
        #!/bin/bash
        endpoints=(
          "checkout-api-us|us-east-1|checkout|https://api.example.com/checkout/health"
          "checkout-api-eu|eu-west-1|checkout|https://eu.api.example.com/checkout/health"
          "inventory-us|us-east-1|inventory|https://api.example.com/inv/health"
          "inventory-eu|eu-west-1|inventory|https://eu.api.example.com/inv/health"
        )
        echo "["
        first=1
        for e in "${endpoints[@]}"; do
          IFS='|' read -r name region service url <<< "$e"
          [ $first -eq 0 ] && echo ","
          first=0
          result=$(curl -s -o /dev/null -w "%{http_code} %{time_total}" --max-time 10 "$url" || echo "000 -1")
          read -r code t <<< "$result"
          status=$([ "$code" = "000" ] && echo "TIMEOUT" || echo "$code")
          ms=$(awk "BEGIN{printf \"%d\", $t*1000}")
          printf '  {"name":"%s","region":"%s","service":"%s","url":"%s","status":"%s","responseTimeMs":%s}' \
            "$name" "$region" "$service" "$url" "$status" "$ms"
        done
        echo
        echo "]"

  - name: digest
    tool: skill
    properties:
      skillName: api-health-monitor
      input: "{{probe-endpoints.output}}"

  - name: send
    tool: message
    properties:
      subject: "API health"
      body: "{{digest.answer}}"
      userNames: "intouch"

Customization

Cost