Skip to main content
Glama
JerBouma

Finance Toolkit

overlap

Read-onlyIdempotent

Calculate overlap technical indicators such as moving averages, VWAP, Parabolic SAR, pivot points and Fibonacci levels directly on price data without fetching prices first.

Instructions

Overlap technical indicators drawn over the price (simple, exponential, double exponential, triangular, weighted, Hull and Kaufman adaptive moving averages, TRIX, VWAP, Parabolic SAR, pivot points, Fibonacci retracement levels, support and resistance levels). Applied to price data automatically — no need to fetch prices first. Each indicator needs its window of history before it produces values, so the first periods after start_date can be empty and quarterly or yearly periods with long windows can be empty on short histories; start earlier to warm up. Bollinger Bands and Keltner Channels are in the volatility tool. Requires tickers='AAPL' — use comma-separated values for multiple tickers.

Input Schema

NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
limitNoThe rows to return, like head and tail: 5 for the first five, -5 for the last five (the most recent of a time series). A table with its periods as columns (financial statements, ratios) keeps its first or last periods instead. For ETF holdings the largest (or, negative, the smallest) by weight, and for a list (e.g. news or a screener) its length.
trendNoWhether to compute retracement levels for an "uptrend" (levels measured down from the high — the conventional direction, used when a prior move was up and price is now pulling back) or a "downtrend" (levels measured up from the low, used when a prior move was down and price is now bouncing).uptrend
af_maxNoMaximum value the acceleration factor can reach.
growthNoReturn period-over-period growth rates instead of absolute values.
levelsNoThe Fibonacci ratios to calculate levels for.
periodNoObservation frequency, e.g. 'daily', 'weekly', 'monthly', 'quarterly', or 'annual' (supported values differ per method).daily
windowNoThe number of periods the indicator looks back over, e.g. 14 or 20. Leave unset to use the default of the indicator you selected. Defaults differ between indicators.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
af_startNoInitial acceleration factor.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-27
indicatorYesName of the specific metric to calculate, one of the listed values. Required — search_metrics finds the indicator (and its tool) for a metric by name.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-28
fast_windowNoThe number of periods that corresponds to the fastest EMA constant used when the Efficiency Ratio is at its maximum (1.0).
sensitivityNoThe sensitivity parameter to determine the significance of the peaks and valleys. A higher sensitivity value will result in fewer support and resistance levels being identified.
slow_windowNoThe number of periods that corresponds to the slowest EMA constant used when the Efficiency Ratio is at its minimum (0.0).
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
af_incrementNoAmount by which the acceleration factor increases every time a new extreme point is reached.
close_columnNoThe column name for closing prices in the historical data.Adj Close
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv2.3.0
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-10-14"New value: +"2026-10-27"
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-10-15"New value: +"2021-10-28"
  2. Changed41 schema fields changedv2.2.3
    • changedInput schema / properties / af_increment / description
      Previous value: -"Value for af_increment."New value: +"Amount by which the acceleration factor increases every time a new extreme point is reached."
    • removedInput schema / properties / af_increment / title
      Removed value: -"Af Increment"
    • changedInput schema / properties / af_max / description
      Previous value: -"Value for af_max."New value: +"Maximum value the acceleration factor can reach."
    • removedInput schema / properties / af_max / title
      Removed value: -"Af Max"
    • changedInput schema / properties / af_start / description
      Previous value: -"Value for af_start."New value: +"Initial acceleration factor."
    • removedInput schema / properties / af_start / title
      Removed value: -"Af Start"
    • removedInput schema / properties / benchmark_ticker / title
      Removed value: -"Benchmark Ticker"
    • changedInput schema / properties / close_column / description
      Previous value: -"Value for close_column."New value: +"The column name for closing prices in the historical data."
    • removedInput schema / properties / close_column / title
      Removed value: -"Close Column"
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-10-02"New value: +"2026-10-14"
    • removedInput schema / properties / end_date / title
      Removed value: -"End Date"
    • changedInput schema / properties / fast_window / description
      Previous value: -"Value for fast_window."New value: +"The number of periods that corresponds to the fastest EMA constant used when the Efficiency Ratio is at its maximum (1.0)."
    • removedInput schema / properties / fast_window / title
      Removed value: -"Fast Window"
    • removedInput schema / properties / growth / title
      Removed value: -"Growth"
    • changedInput schema / properties / indicator / description
      Previous value: -"Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators."New value: +"Name of the specific metric to calculate, one of the listed values. Required — search_metrics finds the indicator (and its tool) for a metric by name."
    • removedInput schema / properties / indicator / title
      Removed value: -"Indicator"
    • addedInput schema / properties / lag / anyOf
      Added value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "items": {
      +      "type": "integer"
      +    },
      +    "type": "array"
      +  }
      +]
    • removedInput schema / properties / lag / title
      Removed value: -"Lag"
    • removedInput schema / properties / lag / type
      Removed value: -"integer"
    • changedInput schema / properties / levels / description
      Previous value: -"Value for levels."New value: +"The Fibonacci ratios to calculate levels for."
    • removedInput schema / properties / levels / title
      Removed value: -"Levels"
    • addedInput schema / properties / limit
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The rows to return, like head and tail: 5 for the first five, -5 for the last five (the most recent of a time series). A table with its periods as columns (financial statements, ratios) keeps its first or last periods instead. For ETF holdings the largest (or, negative, the smallest) by weight, and for a list (e.g. news or a screener) its length."
      +}
    • changedInput schema / properties / period / description
      Previous value: -"Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'."New value: +"Observation frequency, e.g. 'daily', 'weekly', 'monthly', 'quarterly', or 'annual' (supported values differ per method)."
    • removedInput schema / properties / period / title
      Removed value: -"Period"
    • removedInput schema / properties / quarterly / title
      Removed value: -"Quarterly"
    • changedInput schema / properties / sensitivity / description
      Previous value: -"Value for sensitivity."New value: +"The sensitivity parameter to determine the significance of the peaks and valleys. A higher sensitivity value will result in fewer support and resistance levels being identified."
    • removedInput schema / properties / sensitivity / title
      Removed value: -"Sensitivity"
    • removedInput schema / properties / show_columns / title
      Removed value: -"Show Columns"
    • changedInput schema / properties / slow_window / description
      Previous value: -"Value for slow_window."New value: +"The number of periods that corresponds to the slowest EMA constant used when the Efficiency Ratio is at its minimum (0.0)."
    • removedInput schema / properties / slow_window / title
      Removed value: -"Slow Window"
    • removedInput schema / properties / standardize / title
      Removed value: -"Standardize"
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-10-03"New value: +"2021-10-15"
    • removedInput schema / properties / start_date / title
      Removed value: -"Start Date"
    • addedInput schema / properties / tickers / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  }
      +]
    • removedInput schema / properties / tickers / title
      Removed value: -"Tickers"
    • removedInput schema / properties / tickers / type
      Removed value: -"string"
    • changedInput schema / properties / trend / description
      Previous value: -"Value for trend."New value: +"Whether to compute retracement levels for an \"uptrend\" (levels measured down from the high — the conventional direction, used when a prior move was up and price is now pulling back) or a \"downtrend\" (levels measured up from the low, used when a prior move was down and price is now bouncing)."
    • removedInput schema / properties / trend / title
      Removed value: -"Trend"
    • changedInput schema / properties / window / description
      Previous value: -"Value for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."New value: +"The number of periods the indicator looks back over, e.g. 14 or 20. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."
    • removedInput schema / properties / window / title
      Removed value: -"Window"
    • removedInput schema / title
      Removed value: -"overlapArguments"
  3. Changed2 schema fields changedv2.2.1
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-08-19"New value: +"2026-10-02"
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-08-20"New value: +"2021-10-03"
  4. Changed12 schema fields changedv2.2.0
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-07-14"New value: +"2026-08-19"
    • addedInput schema / properties / fast_window
      Added value: +{
      +  "default": 2,
      +  "description": "Value for fast_window.",
      +  "title": "Fast Window",
      +  "type": "integer"
      +}
    • changedInput schema / properties / indicator / enum
      Previous value: -[
      -  "get_moving_average",
      -  "get_exponential_moving_average",
      -  "get_double_exponential_moving_average",
      -  "get_trix",
      -  "get_triangular_moving_average",
      -  "get_weighted_moving_average",
      -  "get_hull_moving_average",
      -  "get_volume_weighted_average_price",
      -  "get_parabolic_sar",
      -  "get_pivot_points"
      -]New value: +[
      +  "get_moving_average",
      +  "get_exponential_moving_average",
      +  "get_double_exponential_moving_average",
      +  "get_trix",
      +  "get_triangular_moving_average",
      +  "get_weighted_moving_average",
      +  "get_hull_moving_average",
      +  "get_kaufman_adaptive_moving_average",
      +  "get_volume_weighted_average_price",
      +  "get_parabolic_sar",
      +  "get_pivot_points",
      +  "get_fibonacci_retracement_levels",
      +  "get_support_resistance_levels"
      +]
    • addedInput schema / properties / levels
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for levels.",
      +  "title": "Levels"
      +}
    • addedInput schema / properties / sensitivity
      Added value: +{
      +  "default": 0.05,
      +  "description": "Value for sensitivity.",
      +  "title": "Sensitivity",
      +  "type": "number"
      +}
    • addedInput schema / properties / slow_window
      Added value: +{
      +  "default": 30,
      +  "description": "Value for slow_window.",
      +  "title": "Slow Window",
      +  "type": "integer"
      +}
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-07-15"New value: +"2021-08-20"
    • addedInput schema / properties / trend
      Added value: +{
      +  "default": "uptrend",
      +  "description": "Value for trend.",
      +  "title": "Trend",
      +  "type": "string"
      +}
    • addedInput schema / properties / window / anyOf
      Added value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / window / default
      Previous value: -14New value: +null
    • changedInput schema / properties / window / description
      Previous value: -"Value for window."New value: +"Value for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."
    • removedInput schema / properties / window / type
      Removed value: -"integer"
  5. Changed7 schema fields changed
    • addedInput schema / properties / af_increment
      Added value: +{
      +  "default": 0.02,
      +  "description": "Value for af_increment.",
      +  "title": "Af Increment",
      +  "type": "number"
      +}
    • addedInput schema / properties / af_max
      Added value: +{
      +  "default": 0.2,
      +  "description": "Value for af_max.",
      +  "title": "Af Max",
      +  "type": "number"
      +}
    • addedInput schema / properties / af_start
      Added value: +{
      +  "default": 0.02,
      +  "description": "Value for af_start.",
      +  "title": "Af Start",
      +  "type": "number"
      +}
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-07-09"New value: +"2026-07-14"
    • changedInput schema / properties / indicator / enum
      Previous value: -[
      -  "get_moving_average",
      -  "get_exponential_moving_average",
      -  "get_double_exponential_moving_average",
      -  "get_trix",
      -  "get_triangular_moving_average"
      -]New value: +[
      +  "get_moving_average",
      +  "get_exponential_moving_average",
      +  "get_double_exponential_moving_average",
      +  "get_trix",
      +  "get_triangular_moving_average",
      +  "get_weighted_moving_average",
      +  "get_hull_moving_average",
      +  "get_volume_weighted_average_price",
      +  "get_parabolic_sar",
      +  "get_pivot_points"
      +]
    • addedInput schema / properties / standardize
      Added value: +{
      +  "default": false,
      +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
      +  "title": "Standardize",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-07-10"New value: +"2021-07-15"
  6. Changed2 schema fields changedv2.1.4
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-06-27"New value: +"2026-07-09"
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-06-28"New value: +"2021-07-10"
  7. Changed2 schema fields changedv2.1.3
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-06-23"New value: +"2026-06-27"
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-06-24"New value: +"2021-06-28"
  8. Changed4 schema fields changedv0.1.2
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-06-22"New value: +"2026-06-23"
    • removedInput schema / properties / rounding
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Number of decimal places to round results to.",
      -  "title": "Rounding"
      -}
    • addedInput schema / properties / show_columns
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
      +  "title": "Show Columns"
      +}
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-06-23"New value: +"2021-06-24"
  9. Addedv0.1.1

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent, but the description adds genuinely non-obvious behavior: warm-up periods yield empty leading values, and long windows on quarterly/annual data can produce entirely empty results, with the remedy (start earlier). It doesn't mention multi-ticker response shape or rate/size considerations, but the warm-up disclosure is substantive.

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

Conciseness4/5

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

Front-loaded with purpose and indicator list, then the warm-up caveat, then the volatility pointer, then the tickers requirement. The parenthetical indicator enumeration is long but earns its place as the effective scope definition; no filler sentences.

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

Completeness3/5

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

For a 22-parameter tool whose single required param selects among 13 indicators, the description never says which optional parameters apply to which indicator (e.g. af_start/af_increment only for Parabolic SAR, fast_window/slow_window only for KAMA, levels/trend only for Fibonacci, sensitivity only for support/resistance). An output schema exists so return values needn't be explained, but indicator-to-parameter mapping is a real gap.

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 coverage is 100%, so the schema already defines every parameter; the description adds cross-parameter meaning the schema can't: the interaction between start_date, period, and window that causes empty output, and the fact that window defaults vary per indicator. Ticker formatting is repeated from the schema but reinforced as a hard requirement.

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+resource (overlap technical indicators drawn over price) and enumerates the exact indicator families covered (moving-average variants, TRIX, VWAP, PSAR, pivots, Fibonacci, support/resistance). It explicitly routes the sibling indicator family (Bollinger Bands, Keltner Channels) to the volatility tool, so an agent can distinguish it from siblings without opening schemas.

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

Usage Guidelines4/5

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

Clear positive guidance: use it when you want indicators overlaid on price, prices are fetched automatically, and tickers is required. It also gives an explicit exclusion pointing to the volatility tool. It doesn't say how to choose between overlap vs momentum/efficiency indicators, so it stops short of full alternative routing.

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