Skip to main content
Glama

Propose creating, editing or deleting an alert (user approves)

propose_alert_change
Destructive

Propose a change to the user's price and value alerts: create a new one, edit one, or delete one, picked by action. Use this when the user asks to be told when something happens ("alert me if BTC drops below 60k", "email me when my portfolio passes 100k") or to change or remove an alert; to see which alerts exist, and their ids, call get_alerts instead, and always call it before an update or delete. This does NOT take effect when you call it: it returns a link the user has to open and approve in their own browser, so tell them to open it rather than saying it is done. Alerts are a Pro feature: an account without Pro gets upgrade_required, and a connection the user did not grant "propose changes" gets write_not_permitted; read either out and stop. Arguments by action. create: kind, op, threshold, plus subject for the asset kinds, optional repeat, cooldownSec, channels, note. update: alertId plus only the fields to change (op, threshold, enabled, repeat, cooldownSec, channels, note); kind and subject cannot be edited, so delete and re-create instead. delete: alertId only. An argument the action does not take is refused, not ignored.

Input Schema

NameRequiredDescriptionDefault
opNoFire when the watched value goes above or below the threshold.
kindNocreate only. What the alert watches: asset_price (one asset's USD price), asset_pct (one asset's 24h % change), portfolio_value (total USD value), portfolio_pct (portfolio 24h % change), holding_value (USD value of the user's position in one asset), holding_weight (one asset's share of the portfolio, %).
noteNoA short note shown with the alert, up to 200 characters. On update, an empty string clears it.
actionYescreate a new alert, update an existing one (by alertId), or delete one (by alertId).
repeatNoonce (default): fire one time, then pause. recurring: fire every time the level is crossed again, no more often than cooldownSec.
alertIdNoupdate and delete only: the `id` of the alert, exactly as get_alerts returns it.
enabledNoupdate only: false pauses the alert, true turns it back on.
profileNoWhich portfolio to read, for accounts with more than one: its id, or its name (exact, case-insensitive, e.g. "Trading"). Omit to read this connection's default portfolio; every answer names the portfolio it read in `profile`. An unknown or shared name returns profile_not_found or profile_ambiguous listing the real ones, and list_profiles shows them up front.
subjectNocreate only, and required for asset_price, asset_pct, holding_value and holding_weight: the ticker, e.g. BTC. Omit for the portfolio kinds.
channelsNoWhere it is delivered. ["inapp"] (default) shows it in the app's notifications; ["inapp", "email"] also emails the user (the app's "Also email me" option).
thresholdNoThe trigger level, in the kind's unit: USD for asset_price, portfolio_value and holding_value (greater than 0); percent for asset_pct and portfolio_pct (signed, so -10 means a 10% drop); percent of the portfolio, 0 to 100, for holding_weight.
cooldownSecNorecurring alerts: minimum seconds between two notifications, 60 to 604800. Omit for the default (1 hour, or 6 hours for the % and allocation kinds).

Output Schema

NameRequiredDescriptionDefault
errorNoPresent ONLY when the call was refused instead of answered: upgrade_required (Pro plan needed), not_found, profile_not_found, profile_ambiguous, invalid_arguments, write_not_permitted. No data fields come with it; read `message` to the user rather than retrying the same call.
titleNoWhat the change does.
statusNoAlways this: nothing has been applied yet.
messageNoPlain-language explanation that accompanies `error`, `data_status` or a proposed change. Read it to the user.
previewNoCourtesy diff; the authoritative one is on the confirm page.
profileNoThe portfolio these figures belong to (absent on list_profiles).
next_stepNoWhat the user should do about data_status.
expires_atNoWhen the link stops working, epoch ms.
source_urlNoLink to the page in the WhereItGoes app that shows this data.
confirm_urlNoThe link the user must open and approve; tell them to open it.
data_statusNoPresent only when the portfolio has no data yet. nothing_connected: no exchange and no wallet is connected, so empty lists and zeros mean "no data", NOT a $0 portfolio, and no data fields come with it (except on get_connections, get_alerts, get_target_allocation and list_profiles, which also answer). Send the user to next_step. syncing: a source is connected but its first sync is still running, so figures are partial and not final.
upgrade_urlNoWhere the user can upgrade, on an upgrade_required refusal.
stock_assetsNoPresent when the answer mentions Binance Stocks shares (EQ_<ticker>): they are US stocks, not crypto.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / data_status
      Added value: +{
      +  "description": "Present only when the portfolio has no data yet. nothing_connected: no exchange and no wallet is connected, so empty lists and zeros mean \"no data\", NOT a $0 portfolio, and no data fields come with it (except on get_connections, get_alerts, get_target_allocation and list_profiles, which also answer). Send the user to next_step. syncing: a source is connected but its first sync is still running, so figures are partial and not final.",
      +  "enum": [
      +    "nothing_connected",
      +    "syncing"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / message / description
      Previous value: -"Plain-language explanation that accompanies `error` or a proposed change."New value: +"Plain-language explanation that accompanies `error`, `data_status` or a proposed change. Read it to the user."
    • addedOutput schema / properties / next_step
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "What the user should do about data_status.",
      +  "properties": {
      +    "action": {
      +      "enum": [
      +        "connect_a_source",
      +        "wait_for_first_sync"
      +      ],
      +      "type": "string"
      +    },
      +    "add_exchange_url": {
      +      "description": "App page to connect an exchange with a read-only API key.",
      +      "type": "string"
      +    },
      +    "add_wallet_url": {
      +      "description": "App page to add a wallet address to watch.",
      +      "type": "string"
      +    },
      +    "settings_url": {
      +      "type": "string"
      +    },
      +    "sync_status_url": {
      +      "description": "App page showing sync progress.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "action"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.