Skip to main content
Glama

Volatility analysis

analyze_volatility
Read-onlyIdempotent

Return annualized volatility (%) for each currency against base, with the number of daily returns used. Use to rank stability or find the most volatile currency or pair. Omit currency to rank the universe (sort stable or volatile); provide one currency or a comma-separated list to compare. Use analyze_drawdown for worst peak-to-trough loss and analyze_safe_haven for crisis resilience. Defaults: 365-day window, base USD, sort stable, universe liquid, limit 10. Returns { base, from, to, mode, basis, results[] }; volatility is null when there is too little data. Requires a signed-in connection and the Growth plan or higher; each successful call bills 1 API request.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "analyze_volatility"
  }
}

Input Schema

NameRequiredDescriptionDefault
toNoWindow end YYYY-MM-DD (UTC). Defaults to today; a future date clamps to today.
baseNoBase currency to measure against (3-letter ISO 4217). Defaults to USD.
fromNoWindow start YYYY-MM-DD (UTC). Defaults to 365 days before `to`.
sortNoRanking direction: stable (least volatile first, default) or volatile.
limitNoRanking: how many to return (default 10, max 50).
currencyNoCurrency to measure (3-letter ISO 4217), or a comma-separated list to compare. OMIT to RANK the liquid-currency set by stability.
universeNoRanking universe: liquid (default, broad set) or majors (USD/EUR/GBP/JPY/CHF/CAD/AUD/NZD). Use majors for 'most volatile major pair'.

Output Schema

NameRequiredDescriptionDefault
toYes
baseYes
fromYes
modeYes
sortNo
basisYes
resultsYes
universeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / sort / enum
      Added value: +[
      +  "stable",
      +  "volatile"
      +]
    • addedInput schema / properties / universe / enum
      Added value: +[
      +  "liquid",
      +  "majors"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "base": {
      +      "type": "string"
      +    },
      +    "basis": {
      +      "const": "annualized-daily",
      +      "type": "string"
      +    },
      +    "from": {
      +      "type": "string"
      +    },
      +    "mode": {
      +      "enum": [
      +        "compare",
      +        "ranking"
      +      ],
      +      "type": "string"
      +    },
      +    "results": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "currency": {
      +            "type": "string"
      +          },
      +          "note": {
      +            "type": "string"
      +          },
      +          "observations": {
      +            "type": "number"
      +          },
      +          "volatility": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "currency",
      +          "volatility",
      +          "observations"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "sort": {
      +      "enum": [
      +        "stable",
      +        "volatile"
      +      ],
      +      "type": "string"
      +    },
      +    "to": {
      +      "type": "string"
      +    },
      +    "universe": {
      +      "enum": [
      +        "liquid",
      +        "majors"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "base",
      +    "from",
      +    "to",
      +    "mode",
      +    "basis",
      +    "results"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new operational context: signed-in connection required, Growth plan or higher, and 1 billed API request per successful call. It also notes `volatility` is null when data is insufficient, though it doesn't discuss caching or partial failures.

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 the output and the core decision, then alternatives, then defaults and billing. Every sentence carries information, though the defaults sentence partially duplicates schema descriptions and lengthens an otherwise tight definition.

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?

For a 7-parameter, all-optional analytical tool with an output schema, the description covers purpose, mode selection, sibling routing, defaults, null-data behavior, plan gating and billing. Nothing an agent needs to call it correctly is missing.

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 defaults and enum meanings are already documented; the description nonetheless frames the two operating modes (omit `currency` to rank vs. supply a list to compare) and ties `sort`/`universe` to the ranking intent, which is cohesive guidance the schema only states piecewise. It largely restates defaults, so it doesn't rise above a 4.

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 precise verb and resource: annualized volatility (%) per currency against `base`, plus the number of daily returns used. It then distinguishes itself from named siblings (analyze_drawdown for peak-to-trough loss, analyze_safe_haven for crisis resilience), so an agent can choose without opening other schemas.

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 when-to-use guidance: rank stability, find the most volatile currency or pair, omit `currency` to rank the universe, or pass one currency/comma-separated list to compare. It also names two alternatives and the exact scenario each covers, leaving nothing to inference.

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.

Resources