Skip to main content
Glama

Market Indicators

Calculate indicators from your own candles

compute_indicators
Read-onlyIdempotent

Calculates indicators from prices the user gives. Use it when the user gives their own prices and wants indicators calculated, such as "calculate ATR and stochastic from these candles". Best for any asset the user has prices for: stocks, crypto, commodities or a spreadsheet column, and for atr, stochastic and vwap. Input tips: pass prices (2 to 250 candles, oldest first, each with a numeric close and optionally time, open, high, low and volume) and indicators from sma, ema, rsi, macd, bollinger, atr, stochastic and vwap; optionally periods and series_length. atr and stochastic need high and low on every candle, and vwap needs high, low and volume. Returns the latest value and a short series for each indicator, with the settings used. Makes no outside request and keeps nothing. Not for: fetching prices, forecasts, or buy or sell advice. Informational only, not financial advice; gives no signals.

Example tool call

This call uses example arguments supplied in the tool’s input schema.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "prices": [
        {
          "close": 10
        },
        {
          "close": 11
        },
        {
          "close": 12
        },
        {
          "close": 11
        },
        {
          "close": 13
        },
        {
          "close": 14
        }
      ],
      "periods": {
        "sma": 3
      },
      "indicators": [
        "sma"
      ]
    },
    "name": "compute_indicators"
  }
}

Input Schema

NameRequiredDescriptionDefault
pricesYesCandles, oldest first, 2 to 250, such as [{"time": "2026-09-01", "high": 10.6, "low": 9.7, "close": 10.2}]. Prices are plain numbers in any one unit.
periodsNoLookback length per indicator, in candles, such as {"sma": 50}. Any left out use the default shown. Whole numbers from 2 to 100.
indicatorsYesIndicators to calculate, such as ["rsi", "macd"]: sma, ema, rsi, macd (12, 26, 9), bollinger (2 standard deviations), atr, stochastic (%K and %D) and vwap (cumulative over the given candles)
series_lengthNoHow many of the most recent values to return for each indicator, such as 10. 5 by default.

Output Schema

NameRequiredDescriptionDefault
asOfYesDate or time of the last price used, or the date of the call when no price was read
errorNoPresent when status is not ok: a stable code, what went wrong and what to do next.
noticeYesNot-financial-advice notice. Show it with the numbers.
sourceYesWhere the prices came from
statusYesok, or why nothing was calculated; error.hint then says what to do next
candlesYesNumber of candles the indicators were calculated over. 0 when the call was refused before any price was read.
libraryYesThe library that did the calculation
skippedYesRequested indicators that could not be calculated, with the reason. Empty when all were calculated.
indicatorsYesOne entry per calculated indicator, in the order asked. Empty when status is not ok.
latestCloseYesClose of the last candle or ECB rate. null when no price was read.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "indicators": [
      +      "sma"
      +    ],
      +    "periods": {
      +      "sma": 3
      +    },
      +    "prices": [
      +      {
      +        "close": 10
      +      },
      +      {
      +        "close": 11
      +      },
      +      {
      +        "close": 12
      +      },
      +      {
      +        "close": 11
      +      },
      +      {
      +        "close": 13
      +      },
      +      {
      +        "close": 14
      +      }
      +    ]
      +  }
      +]
  2. Changed25 schema fields changed
    • changedInput schema / properties / indicators / description
      Previous value: -"Indicators to calculate: sma, ema, rsi, macd (12, 26, 9), bollinger (2 standard deviations), atr, stochastic (%K and %D) and vwap (cumulative over the given candles)"New value: +"Indicators to calculate, such as [\"rsi\", \"macd\"]: sma, ema, rsi, macd (12, 26, 9), bollinger (2 standard deviations), atr, stochastic (%K and %D) and vwap (cumulative over the given candles)"
    • changedInput schema / properties / periods / description
      Previous value: -"Lookback length per indicator, in candles; any left out use the default shown"New value: +"Lookback length per indicator, in candles, such as {\"sma\": 50}. Any left out use the default shown. Whole numbers from 2 to 100."
    • changedInput schema / properties / prices / description
      Previous value: -"Candles, oldest first, at most 250"New value: +"Candles, oldest first, 2 to 250, such as [{\"time\": \"2026-09-01\", \"high\": 10.6, \"low\": 9.7, \"close\": 10.2}]. Prices are plain numbers in any one unit."
    • addedInput schema / properties / prices / items / properties / close / description
      Added value: +"Closing price of the candle, such as 101.2. Used by every indicator."
    • changedInput schema / properties / prices / items / properties / high / description
      Previous value: -"Needed for atr, stochastic and vwap"New value: +"Highest price of the candle, such as 102.3. Needed on every candle for atr, stochastic and vwap; not below low."
    • changedInput schema / properties / prices / items / properties / low / description
      Previous value: -"Needed for atr, stochastic and vwap"New value: +"Lowest price of the candle, such as 99.8. Needed on every candle for atr, stochastic and vwap."
    • addedInput schema / properties / prices / items / properties / open / description
      Added value: +"Opening price of the candle, such as 101.5. Optional; no indicator reads it."
    • changedInput schema / properties / prices / items / properties / volume / description
      Previous value: -"Needed for vwap"New value: +"Traded volume of the candle, such as 15400, 0 or more. Needed on every candle for vwap."
    • changedInput schema / properties / series_length / description
      Previous value: -"How many of the most recent values to return for each indicator, 5 by default"New value: +"How many of the most recent values to return for each indicator, such as 10. 5 by default."
    • changedOutput schema / properties / asOf / description
      Previous value: -"Date or time of the last price used"New value: +"Date or time of the last price used, or the date of the call when no price was read"
    • changedOutput schema / properties / candles / description
      Previous value: -"Number of candles the indicators were calculated over"New value: +"Number of candles the indicators were calculated over. 0 when the call was refused before any price was read."
    • addedOutput schema / properties / error / properties / code / description
      Added value: +"Stable code, such as invalid_symbol, invalid_prices, invalid_periods or nothing_to_calculate"
    • addedOutput schema / properties / error / properties / hint / description
      Added value: +"The next step: what to change in the call or tell the user"
    • addedOutput schema / properties / error / properties / message / description
      Added value: +"What went wrong"
    • addedOutput schema / properties / indicators / description
      Added value: +"One entry per calculated indicator, in the order asked. Empty when status is not ok."
    • addedOutput schema / properties / indicators / items / oneOf
      Added value: +[
      +  {
      +    "properties": {
      +      "indicator": {
      +        "enum": [
      +          "sma",
      +          "ema"
      +        ],
      +        "type": "string"
      +      },
      +      "latest": {
      +        "description": "One value of the indicator at one candle",
      +        "properties": {
      +          "index": {
      +            "description": "Position of the candle, 0 is the oldest",
      +            "type": "integer"
      +          },
      +          "time": {
      +            "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "value": {
      +            "description": "Moving average, in the price unit",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "index",
      +          "time",
      +          "value"
      +        ],
      +        "type": "object"
      +      },
      +      "params": {
      +        "description": "The settings used",
      +        "properties": {
      +          "period": {
      +            "description": "Lookback in candles",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "period"
      +        ],
      +        "type": "object"
      +      },
      +      "series": {
      +        "description": "The most recent values, oldest first, ending with latest",
      +        "items": {
      +          "description": "One value of the indicator at one candle",
      +          "properties": {
      +            "index": {
      +              "description": "Position of the candle, 0 is the oldest",
      +              "type": "integer"
      +            },
      +            "time": {
      +              "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "value": {
      +              "description": "Moving average, in the price unit",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "index",
      +            "time",
      +            "value"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "indicator",
      +      "params",
      +      "latest",
      +      "series"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "indicator": {
      +        "enum": [
      +          "rsi"
      +        ],
      +        "type": "string"
      +      },
      +      "latest": {
      +        "description": "One value of the indicator at one candle",
      +        "properties": {
      +          "index": {
      +            "description": "Position of the candle, 0 is the oldest",
      +            "type": "integer"
      +          },
      +          "time": {
      +            "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "value": {
      +            "description": "RSI, from 0 to 100",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "index",
      +          "time",
      +          "value"
      +        ],
      +        "type": "object"
      +      },
      +      "params": {
      +        "description": "The settings used",
      +        "properties": {
      +          "period": {
      +            "description": "Lookback in candles",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "period"
      +        ],
      +        "type": "object"
      +      },
      +      "series": {
      +        "description": "The most recent values, oldest first, ending with latest",
      +        "items": {
      +          "description": "One value of the indicator at one candle",
      +          "properties": {
      +            "index": {
      +              "description": "Position of the candle, 0 is the oldest",
      +              "type": "integer"
      +            },
      +            "time": {
      +              "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "value": {
      +              "description": "RSI, from 0 to 100",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "index",
      +            "time",
      +            "value"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "indicator",
      +      "params",
      +      "latest",
      +      "series"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "indicator": {
      +        "enum": [
      +          "atr"
      +        ],
      +        "type": "string"
      +      },
      +      "latest": {
      +        "description": "One value of the indicator at one candle",
      +        "properties": {
      +          "index": {
      +            "description": "Position of the candle, 0 is the oldest",
      +            "type": "integer"
      +          },
      +          "time": {
      +            "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "value": {
      +            "description": "Average true range, in the price unit",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "index",
      +          "time",
      +          "value"
      +        ],
      +        "type": "object"
      +      },
      +      "params": {
      +        "description": "The settings used",
      +        "properties": {
      +          "period": {
      +            "description": "Lookback in candles",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "period"
      +        ],
      +        "type": "object"
      +      },
      +      "series": {
      +        "description": "The most recent values, oldest first, ending with latest",
      +        "items": {
      +          "description": "One value of the indicator at one candle",
      +          "properties": {
      +            "index": {
      +              "description": "Position of the candle, 0 is the oldest",
      +              "type": "integer"
      +            },
      +            "time": {
      +              "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "value": {
      +              "description": "Average true range, in the price unit",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "index",
      +            "time",
      +            "value"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "indicator",
      +      "params",
      +      "latest",
      +      "series"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "indicator": {
      +        "enum": [
      +          "vwap"
      +        ],
      +        "type": "string"
      +      },
      +      "latest": {
      +        "description": "One value of the indicator at one candle",
      +        "properties": {
      +          "index": {
      +            "description": "Position of the candle, 0 is the oldest",
      +            "type": "integer"
      +          },
      +          "time": {
      +            "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "value": {
      +            "description": "Volume-weighted average price over all the given candles, in the price unit",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "index",
      +          "time",
      +          "value"
      +        ],
      +        "type": "object"
      +      },
      +      "params": {
      +        "description": "Empty: VWAP has no setting",
      +        "properties": {},
      +        "required": [],
      +        "type": "object"
      +      },
      +      "series": {
      +        "description": "The most recent values, oldest first, ending with latest",
      +        "items": {
      +          "description": "One value of the indicator at one candle",
      +          "properties": {
      +            "index": {
      +              "description": "Position of the candle, 0 is the oldest",
      +              "type": "integer"
      +            },
      +            "time": {
      +              "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "value": {
      +              "description": "Volume-weighted average price over all the given candles, in the price unit",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "index",
      +            "time",
      +            "value"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "indicator",
      +      "params",
      +      "latest",
      +      "series"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "indicator": {
      +        "enum": [
      +          "macd"
      +        ],
      +        "type": "string"
      +      },
      +      "latest": {
      +        "description": "One value of the indicator at one candle",
      +        "properties": {
      +          "histogram": {
      +            "description": "MACD minus signal",
      +            "type": "number"
      +          },
      +          "index": {
      +            "description": "Position of the candle, 0 is the oldest",
      +            "type": "integer"
      +          },
      +          "macd": {
      +            "description": "MACD line",
      +            "type": "number"
      +          },
      +          "signal": {
      +            "description": "Signal line",
      +            "type": "number"
      +          },
      +          "time": {
      +            "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "index",
      +          "time",
      +          "macd",
      +          "signal",
      +          "histogram"
      +        ],
      +        "type": "object"
      +      },
      +      "params": {
      +        "description": "The settings used",
      +        "properties": {
      +          "fast": {
      +            "description": "Fast EMA length (12)",
      +            "type": "integer"
      +          },
      +          "signal": {
      +            "description": "Signal EMA length (9)",
      +            "type": "integer"
      +          },
      +          "slow": {
      +            "description": "Slow EMA length (26)",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "fast",
      +          "slow",
      +          "signal"
      +        ],
      +        "type": "object"
      +      },
      +      "series": {
      +        "description": "The most recent values, oldest first, ending with latest",
      +        "items": {
      +          "description": "One value of the indicator at one candle",
      +          "properties": {
      +            "histogram": {
      +              "description": "MACD minus signal",
      +              "type": "number"
      +            },
      +            "index": {
      +              "description": "Position of the candle, 0 is the oldest",
      +              "type": "integer"
      +            },
      +            "macd": {
      +              "description": "MACD line",
      +              "type": "number"
      +            },
      +            "signal": {
      +              "description": "Signal line",
      +              "type": "number"
      +            },
      +            "time": {
      +              "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "index",
      +            "time",
      +            "macd",
      +            "signal",
      +            "histogram"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "indicator",
      +      "params",
      +      "latest",
      +      "series"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "indicator": {
      +        "enum": [
      +          "bollinger"
      +        ],
      +        "type": "string"
      +      },
      +      "latest": {
      +        "description": "One value of the indicator at one candle",
      +        "properties": {
      +          "index": {
      +            "description": "Position of the candle, 0 is the oldest",
      +            "type": "integer"
      +          },
      +          "lower": {
      +            "description": "Lower band",
      +            "type": "number"
      +          },
      +          "middle": {
      +            "description": "Middle band (the SMA)",
      +            "type": "number"
      +          },
      +          "time": {
      +            "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "upper": {
      +            "description": "Upper band",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "index",
      +          "time",
      +          "lower",
      +          "middle",
      +          "upper"
      +        ],
      +        "type": "object"
      +      },
      +      "params": {
      +        "description": "The settings used",
      +        "properties": {
      +          "deviations": {
      +            "description": "Band width in standard deviations (2)",
      +            "type": "integer"
      +          },
      +          "period": {
      +            "description": "Lookback in candles",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "period",
      +          "deviations"
      +        ],
      +        "type": "object"
      +      },
      +      "series": {
      +        "description": "The most recent values, oldest first, ending with latest",
      +        "items": {
      +          "description": "One value of the indicator at one candle",
      +          "properties": {
      +            "index": {
      +              "description": "Position of the candle, 0 is the oldest",
      +              "type": "integer"
      +            },
      +            "lower": {
      +              "description": "Lower band",
      +              "type": "number"
      +            },
      +            "middle": {
      +              "description": "Middle band (the SMA)",
      +              "type": "number"
      +            },
      +            "time": {
      +              "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "upper": {
      +              "description": "Upper band",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "index",
      +            "time",
      +            "lower",
      +            "middle",
      +            "upper"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "indicator",
      +      "params",
      +      "latest",
      +      "series"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "indicator": {
      +        "enum": [
      +          "stochastic"
      +        ],
      +        "type": "string"
      +      },
      +      "latest": {
      +        "description": "One value of the indicator at one candle",
      +        "properties": {
      +          "d": {
      +            "description": "Stochastic %D, from 0 to 100",
      +            "type": "number"
      +          },
      +          "index": {
      +            "description": "Position of the candle, 0 is the oldest",
      +            "type": "integer"
      +          },
      +          "k": {
      +            "description": "Stochastic %K, from 0 to 100",
      +            "type": "number"
      +          },
      +          "time": {
      +            "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "index",
      +          "time",
      +          "k",
      +          "d"
      +        ],
      +        "type": "object"
      +      },
      +      "params": {
      +        "description": "The settings used",
      +        "properties": {
      +          "dPeriod": {
      +            "description": "%D length (3)",
      +            "type": "integer"
      +          },
      +          "period": {
      +            "description": "%K lookback in candles",
      +            "type": "integer"
      +          },
      +          "slowing": {
      +            "description": "%K smoothing (3)",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "period",
      +          "slowing",
      +          "dPeriod"
      +        ],
      +        "type": "object"
      +      },
      +      "series": {
      +        "description": "The most recent values, oldest first, ending with latest",
      +        "items": {
      +          "description": "One value of the indicator at one candle",
      +          "properties": {
      +            "d": {
      +              "description": "Stochastic %D, from 0 to 100",
      +              "type": "number"
      +            },
      +            "index": {
      +              "description": "Position of the candle, 0 is the oldest",
      +              "type": "integer"
      +            },
      +            "k": {
      +              "description": "Stochastic %K, from 0 to 100",
      +              "type": "number"
      +            },
      +            "time": {
      +              "description": "Time of the candle as given, or the ECB rate date; null when the candle had none",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "index",
      +            "time",
      +            "k",
      +            "d"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "indicator",
      +      "params",
      +      "latest",
      +      "series"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties / indicators / items / properties
      Removed value: -{
      -  "indicator": {
      -    "enum": [
      -      "sma",
      -      "ema",
      -      "rsi",
      -      "macd",
      -      "bollinger",
      -      "atr",
      -      "stochastic",
      -      "vwap"
      -    ],
      -    "type": "string"
      -  },
      -  "latest": {
      -    "description": "One value of the indicator: the candle's position (0 is the first), its time when one was given, and the value or values",
      -    "properties": {
      -      "d": {
      -        "type": "number"
      -      },
      -      "histogram": {
      -        "type": "number"
      -      },
      -      "index": {
      -        "type": "integer"
      -      },
      -      "k": {
      -        "type": "number"
      -      },
      -      "lower": {
      -        "type": "number"
      -      },
      -      "macd": {
      -        "type": "number"
      -      },
      -      "middle": {
      -        "type": "number"
      -      },
      -      "signal": {
      -        "type": "number"
      -      },
      -      "time": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "upper": {
      -        "type": "number"
      -      },
      -      "value": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "index",
      -      "time"
      -    ],
      -    "type": "object"
      -  },
      -  "params": {
      -    "description": "The settings used",
      -    "type": "object"
      -  },
      -  "series": {
      -    "description": "The most recent values, oldest first, ending with latest",
      -    "items": {
      -      "description": "One value of the indicator: the candle's position (0 is the first), its time when one was given, and the value or values",
      -      "properties": {
      -        "d": {
      -          "type": "number"
      -        },
      -        "histogram": {
      -          "type": "number"
      -        },
      -        "index": {
      -          "type": "integer"
      -        },
      -        "k": {
      -          "type": "number"
      -        },
      -        "lower": {
      -          "type": "number"
      -        },
      -        "macd": {
      -          "type": "number"
      -        },
      -        "middle": {
      -          "type": "number"
      -        },
      -        "signal": {
      -          "type": "number"
      -        },
      -        "time": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "upper": {
      -          "type": "number"
      -        },
      -        "value": {
      -          "type": "number"
      -        }
      -      },
      -      "required": [
      -        "index",
      -        "time"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  }
      -}
    • removedOutput schema / properties / indicators / items / required
      Removed value: -[
      -  "indicator",
      -  "params",
      -  "latest",
      -  "series"
      -]
    • removedOutput schema / properties / indicators / items / type
      Removed value: -"object"
    • addedOutput schema / properties / latestClose / description
      Added value: +"Close of the last candle or ECB rate. null when no price was read."
    • addedOutput schema / properties / notice / description
      Added value: +"Not-financial-advice notice. Show it with the numbers."
    • changedOutput schema / properties / skipped / description
      Previous value: -"Requested indicators that could not be calculated, with the reason"New value: +"Requested indicators that could not be calculated, with the reason. Empty when all were calculated."
    • addedOutput schema / properties / skipped / items / properties / indicator / enum
      Added value: +[
      +  "sma",
      +  "ema",
      +  "rsi",
      +  "macd",
      +  "bollinger",
      +  "atr",
      +  "stochastic",
      +  "vwap"
      +]
    • addedOutput schema / properties / skipped / items / properties / reason / description
      Added value: +"Why, such as too few candles or a missing high, low or volume"
    • addedOutput schema / properties / status / description
      Added value: +"ok, or why nothing was calculated; error.hint then says what to do next"
  3. Changed1 schema field changed
    • removedOutput schema / properties / note_from_openkrill
      Removed value: -{
      -  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      -  "type": "string"
      -}
  4. Changed1 schema field changed
    • addedOutput schema / properties / note_from_openkrill
      Added value: +{
      +  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      +  "type": "string"
      +}
  5. First observed

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile is covered; the description still adds real behavior: no outside request, no stored data, and per-indicator data prerequisites (atr/stochastic need high+low, vwap needs high+low+volume). It stops short of describing failure modes, such as what happens when a requested period exceeds the candle count.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and the routing condition, then input tips, then return behavior, then exclusions. The slight repetition between the opening sentence and "Use it when the user gives their own prices" is the only redundancy, and every remaining sentence carries usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite four parameters including a nested candle array with per-field requirements, the description supplies the candle ordering, limits, indicator enum list, and data requirements per indicator. An output schema exists, yet the one-line statement of what is returned (latest value plus short series with settings used) still helps the agent relay results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries parameter detail; the description still reinforces the essentials in prose (2–250 candles oldest first, close required, optional periods and series_length, prices in any one unit). This adds modest orientation value but is largely a restatement of structured fields, not new semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Calculates indicators") plus the defining input source ("prices the user gives"), which cleanly separates it from the sibling get_indicators that fetches prices itself. The title and first sentence agree, so an agent can pick this tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger conditions ("when the user gives their own prices"), a concrete example utterance, asset coverage (stocks, crypto, commodities, spreadsheet column) and a named exclusion list ("Not for: fetching prices, forecasts, or buy or sell advice"). The only minor gap is that it does not name the sibling get_indicators by name as the alternative for fetching prices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.