# Alerts

Set, change and delete alerts on price, chart lines and indicators. These don’t need May place orders.

## list_alerts

Your price and rule alerts: on or off, when last fired, why the app switched one off.

Marks: Reads only.

### Inputs

Takes no inputs.

What the AI app reads: The user's alerts: price alerts (fire once at a price, drawn as lines on the chart) and rule alerts (conditions on a timeframe — chart lines, indicators, several at once). Each says whether it is on, when it last fired, and why it was switched off if the app did that.

## list_chart_lines

The lines saved on a market’s chart that an alert can follow.

Marks: Reads only.

### Inputs

- `symbol`: text (2–40 characters), required. A market as the exchange names it, like `BTC-PERP`, `HYPE-SPOT` or `xyz:AAPL-PERP`.

What the AI app reads: The lines saved on a market's chart that an alert can follow — trend lines, arrows, rays, extended and horizontal lines, parallel channels — with the drawingId create_alert needs. Points are {time: unix seconds, price}.

## create_alert

Sets a price alert, or a rule alert of up to five conditions on price, a chart line or an indicator. It reaches you through the bell, email and Discord, as set in Settings › Notifications.

Marks: Makes changes.

### Inputs

- `symbol`: text (2–40 characters), required. A market as the exchange names it, like `BTC-PERP`, `HYPE-SPOT` or `xyz:AAPL-PERP`.
- `direction`: one of `above`, `below`.
- `target`: number (above 0).
- `conditions`: list of 1 to 5; each one of 4 shapes.
  - When `type` is `price`:
    - `op`: one of `crossesAbove`, `crossesBelow`, `above`, `below`, required.
    - `value`: number (above 0), required.
  - When `type` is `line`:
    - `drawingId`: text (not empty, up to 64 characters), required. From `list_chart_lines`.
    - `op`: one of `crossesAbove`, `crossesBelow`, `crosses`, `above`, `below`, `enters`, `exits`, `inside`, `outside`, required.
    - `scale`: one of `linear`, `log`.
  - When `type` is `study`:
    - `left`: object, required.
      - `ind`: one of `value`, `close`, `open`, `high`, `low`, `volume`, `sma`, `ema`, `rsi`, `macd`, `macdSignal`, `macdHist`, `bbUpper`, `bbMiddle`, `bbLower`, `atr`, `volumeSma`, required.
      - `value`: number.
      - `period`: whole number (1 to 500).
      - `fast`: whole number (1 to 500).
      - `slow`: whole number (1 to 500).
      - `signal`: whole number (1 to 500).
      - `stdDev`: number (above 0, up to 10).
    - `op`: one of `crossesAbove`, `crossesBelow`, `above`, `below`, required.
    - `right`: same as `left`, required.
  - When `type` is `custom`:
    - `name`: text (up to 60 characters).
    - `alertId`: text (not empty, up to 64 characters), required.
    - `blocks`: list of 1 to 40; each with these fields (more allowed), required.
      - `id`: text (not empty, up to 64 characters), required.
      - `type`: one of `price`, `input`, `ma`, `osc`, `math`, `cross`, `plot`, `alert`, required.
      - `name`: text (up to 40 characters).
      - `message`: text (up to 200 characters).
- `combine`: one of `all`, `any`.
- `interval`: one of `1m`, `3m`, `5m`, `15m`, `30m`, `1h`, `2h`, `4h`, `8h`, `12h`, `1d`.
- `triggerOn`: one of `close`, `live`.
- `frequency`: one of `once`, `bar`, `every`.
- `cooldownMinutes`: whole number (1 to 10,080).
- `note`: text (up to 200 characters).

What the AI app reads: Set an alert on a market (symbol like BTC-PERP or HYPE-SPOT). It reaches the user through the app's bell, email and Discord, as they chose in Settings › Notifications. Give direction + target for a price alert, or conditions for a rule alert. A price alert is { direction: "above"|"below", target } — it fires once when the price gets there and shows as a line on the chart. A rule alert is 1–5 `conditions` on one market and timeframe (`interval`), joined by combine "all" (default) or "any": {type: "price", op: "crossesAbove"|"crossesBelow"|"above"|"below", value}; {type: "line", drawingId (from list_chart_lines), op} — op "crossesAbove"|"crossesBelow"|"crosses"|"above"|"below" for a line, "enters"|"exits"|"crossesAbove"|"crossesBelow"|"inside"|"outside" for a channel; {type: "study", left, op: "crossesAbove"|"crossesBelow"|"above"|"below", right} where left and right are {ind: "close"|"open"|"high"|"low"|"volume"|"sma"|"ema"|"rsi"|"macd"|"macdSignal"|"macdHist"|"bbUpper"|"bbMiddle"|"bbLower"|"atr"|"volumeSma", period?, fast?, slow?, signal?, stdDev?} or {ind: "value", value} — e.g. RSI 14 above 70 is {type: "study", left: {ind: "rsi", period: 14}, op: "above", right: {ind: "value", value: 70}}, and EMA 20 crossing above EMA 50 is {type: "study", left: {ind: "ema", period: 20}, op: "crossesAbove", right: {ind: "ema", period: 50}}. triggerOn "close" (default) checks when each bar closes; "live" checks every 30 seconds on the forming bar too (not with volume). frequency "once" (default) switches the alert off after it fires, "bar" fires at most once per bar, "every" fires again after cooldownMinutes (default 60).

## update_alert

Moves, changes, pauses or turns back on an alert; a changed alert fires again from now.

Marks: Makes changes.

### Inputs

- `alertId`: id, required. From `list_alerts`.
- `on`: `true` or `false`.
- `direction`: one of `above`, `below`.
- `target`: number (above 0).
- `conditions`: list of 1 to 5; each one of 4 shapes.
  - When `type` is `price`:
    - `op`: one of `crossesAbove`, `crossesBelow`, `above`, `below`, required.
    - `value`: number (above 0), required.
  - When `type` is `line`:
    - `drawingId`: text (not empty, up to 64 characters), required. From `list_chart_lines`.
    - `op`: one of `crossesAbove`, `crossesBelow`, `crosses`, `above`, `below`, `enters`, `exits`, `inside`, `outside`, required.
    - `scale`: one of `linear`, `log`.
  - When `type` is `study`:
    - `left`: object, required.
      - `ind`: one of `value`, `close`, `open`, `high`, `low`, `volume`, `sma`, `ema`, `rsi`, `macd`, `macdSignal`, `macdHist`, `bbUpper`, `bbMiddle`, `bbLower`, `atr`, `volumeSma`, required.
      - `value`: number.
      - `period`: whole number (1 to 500).
      - `fast`: whole number (1 to 500).
      - `slow`: whole number (1 to 500).
      - `signal`: whole number (1 to 500).
      - `stdDev`: number (above 0, up to 10).
    - `op`: one of `crossesAbove`, `crossesBelow`, `above`, `below`, required.
    - `right`: same as `left`, required.
  - When `type` is `custom`:
    - `name`: text (up to 60 characters).
    - `alertId`: text (not empty, up to 64 characters), required.
    - `blocks`: list of 1 to 40; each with these fields (more allowed), required.
      - `id`: text (not empty, up to 64 characters), required.
      - `type`: one of `price`, `input`, `ma`, `osc`, `math`, `cross`, `plot`, `alert`, required.
      - `name`: text (up to 40 characters).
      - `message`: text (up to 200 characters).
- `combine`: one of `all`, `any`.
- `interval`: one of `1m`, `3m`, `5m`, `15m`, `30m`, `1h`, `2h`, `4h`, `8h`, `12h`, `1d`.
- `triggerOn`: one of `close`, `live`.
- `frequency`: one of `once`, `bar`, `every`.
- `cooldownMinutes`: whole number (1 to 10,080) or `null`.
- `note`: text (up to 200 characters) or `null`.

What the AI app reads: Change an alert (alertId from list_alerts): move a price alert (target, direction), change a rule alert's conditions, combine, interval, triggerOn, frequency or cooldownMinutes, change its note, or turn it off and on (on: false / true). A changed or re-armed alert fires again from now. `conditions` replaces the whole list; leave it out to keep a condition made in the indicator builder.

## delete_alert

Deletes an alert for good. Pausing it with `update_alert` keeps it.

Marks: Makes changes · Can’t be undone.

### Inputs

- `alertId`: id, required. From `list_alerts`.

What the AI app reads: Delete an alert for good (alertId from list_alerts). Tell the user which one first; update_alert with on: false only pauses it.

Updated: 2026-10-20

Web page: https://buildtrade.app/docs/tools/alerts/
