Agents

Alert Watchtower

Watches your tokens and explains every alert.

Give it a list of tokens and optionally a webhook URL. It returns what is happening right now on each token (recent signals with the brief that explains them) and, with a webhook, keeps watching: every new signal or brief is pushed to you as a signed message.

When to use it #

  • You hold or follow a few tokens and want every alert explained.
  • An app needs signed webhooks without building the signal engine.

Built for: Funds & market makers · Active traders

How it decides #

  • Collects recent signals at or above your severity on your tokens, each with the brief that explains it.
  • With a webhook URL it also creates a monitor, so new signals and briefs are pushed to you, signed.

Verdicts #

VerdictMeaning
ACTIVEThere are alerts in the window.
QUIETNothing at your severity.

Input #

POST/v1/agents/alert-watchtower

Body

  • tokensstring[]required

  • webhook_urlstringoptional

    Optional public https URL for continuous alerts
  • min_severityinteger (1–3)optionaldefault 2

  • hoursinteger (1–48)optionaldefault 24

Examples #

Real runs, captured from the live service.

ADA, LINK and SOL

Request
curl -X POST "https://coingraph.ai/api/v1/agents/alert-watchtower" \
  -H "content-type: application/json" \
  -d '{"tokens":["cardano","chainlink","solana"],"min_severity":2}'
Response · real, captured 2026-10-06 23:24 UTC · long lists trimmed
{
  "object": "agent_run",
  "id": "run_fb42ac1558de083154fc",
  "as_of": "2026-10-06T23:23:30.834Z",
  "data": {
    "run_id": "run_fb42ac1558de083154fc",
    "agent": "alert-watchtower",
    "agent_version": "1.0.0",
    "as_of": "2026-10-06T23:23:30.834Z",
    "verdict": "ACTIVE",
    "summary": "7 alerts in the last 24h on 3 of 3 tokens; latest: LINK volume spike.",
    "result": {
      "tokens": [
        "cardano",
        "chainlink",
        "solana"
      ],
      "alerts": [
        {
          "at": "2026-10-06T20:15:51.450Z",
          "token": "LINK",
          "kind": "volume_spike",
          "direction": "neutral",
          "severity": 2,
          "explained_by": null,
          "details": {
            "median_15m_24h": 170380,
            "volume_usd_15m": 817977
          }
        },
        {
          "at": "2026-10-06T20:13:51.562Z",
          "token": "LINK",
          "kind": "volume_spike",
          "direction": "neutral",
          "severity": 2,
          "explained_by": null,
          "details": {
            "median_15m_24h": 169891,
            "volume_usd_15m": 812684
          }
        },
        {
          "at": "2026-10-06T16:45:52.401Z",
          "token": "ADA",
          "kind": "volume_spike",
          "direction": "neutral",
          "severity": 2,
          "explained_by": null,
          "details": {
            "median_15m_24h": 461710,
            "volume_usd_15m": 2646548
          }
        },
        "… 4 more"
      ],
      "per_token": [
        {
          "token": "cardano",
          "alerts": 2
        },
        {
          "token": "chainlink",
          "alerts": 2
        },
        {
          "token": "solana",
          "alerts": 3
        }
      ],
      "watch": null
    },
    "reasons": [
      {
        "text": "LINK: volume spike (neutral, severity 2)",
        "source": "coingraph:signals"
      },
      {
        "text": "LINK: volume spike (neutral, severity 2)",
        "source": "coingraph:signals"
      },
      {
        "text": "ADA: volume spike (neutral, severity 2)",
        "source": "coingraph:signals"
      },
      "… 2 more"
    ],
    "warnings": [],
    "links": {},
    "disclaimer": "CoinGraph never trades, holds funds or gives financial advice. The caller decides.",
    "hash": "11746c68721ec32b7e317e682d28dd8451633d03a8d3246945638a1b4475cd7d",
    "verify_url": "https://coingraph.ai/api/v1/verify/run_fb42ac1558de083154fc"
  },
  "sources": []
}

Result fields #

Inside data.result:

FieldContents
alerts[]Token, kind, direction, severity, time and the explaining brief.
per_tokenCounts per token.
watchThe monitor id and how messages are signed (only with a webhook).
i

Note

The monitor secret is returned once in the response and is not stored in the public run record.

Use it from Claude #

With CoinGraph connected (how), ask in plain words, or call the tool directly:

MCP tools/call
{
  "name": "run_alert_watchtower",
  "arguments": {
    "tokens": [
      "cardano",
      "chainlink",
      "solana"
    ],
    "min_severity": 2
  }
}

The proof for any run: https://coingraph.ai/proof/run_…