Skip to main content
Glama

HubVibe: Pay-per-Call Agent Tools: Web Search, Email Verify, KYC Screening, Stocks, Crypto, News

Trading mathematics: returns, risk, drawdown, VaR, beta, indicators, options, Kelly

hubvibe_finance_analytics
Read-onlyIdempotent

Trading and portfolio math: returns and CAGR, volatility, Sharpe and Sortino, max drawdown, VaR/CVaR, beta, alpha and correlation vs a benchmark, SMA/EMA, RSI, Bollinger bands, Black-Scholes option price with Greeks, and the Kelly fraction, over prices you send or a ticker fetched live. Deterministic, every formula named, no LLM. Input: prices or symbol; optional metrics, benchmark, option, kelly. $0.50 per call. Returns: source{}, n, n_returns, periods_per_year, metrics_computed[], returns{}, volatility{}, sharpe, sortino, drawdown{}, var{}, beta{}, moving_averages{}, rsi{}, bollinger{}, black_scholes{}, kelly{}, notes[], method, as_of, checked_at.

Input Schema

NameRequiredDescriptionDefault
alphaNoTail probability for VaR/CVaR. Default 0.05.
kellyNoBet parameters for the Kelly fraction (enables kelly).
rangeNoHistory range with `symbol`, default 1y.
optionNoEuropean option to price with Black-Scholes-Merton (enables black_scholes).
pricesNoPrices oldest first: numbers, or {date, close} objects. Use this OR `symbol`.
symbolNoFetch the series live instead of `prices` (daily closes). Use this OR `prices`.
metricsNoWhich results to compute. Default: returns, volatility, sharpe, sortino, drawdown, var, moving_averages, rsi, bollinger, plus beta/black_scholes/kelly when their inputs are given.
windowsNoIndicator windows. Default sma [20,50,200], ema [12,26], rsi 14, bollinger 20.
languageNoOptional BCP-47 language tag (en, ja, ko, pt-BR): the human-readable strings of the result (notes, details, reasons) are translated into this language; data, codes, numbers and URLs are untouched. Default: as produced.
risk_free_rateNoAnnual risk-free rate as a fraction (0.04 = 4%). Default 0.
benchmark_pricesNoBenchmark series for beta/alpha/correlation, same order as `prices`.
benchmark_symbolNoBenchmark fetched live (e.g. SPY) for beta/alpha/correlation.
periods_per_yearNoAnnualization basis: 252 trading days (default), 12 months, 365 days, 52 weeks.

Output Schema

NameRequiredDescriptionDefault
resultYes
statusYes
workerYes
price_usdYes
provenanceYes
receipt_idYes
attributionNo
receipt_urlYes
billing_warningNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / minProperties
      Added value: +1
    • removedInput schema / oneOf
      Removed value: -[
      -  {
      -    "required": [
      -      "prices"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "symbol"
      -    ]
      -  }
      -]
  2. Changed23 schema fields changed
    • removedOutput schema / description
      Removed value: -"The 200 body of every paid /work call. `result` is the worker's own output (its schema is per route); everything else is the same on every /work route. A receipt for the job is at `receipt_url`."
    • removedOutput schema / properties / attribution / description
      Removed value: -"Present only when the result's text was machine-translated: the credit to show with it."
    • removedOutput schema / properties / attribution / items / description
      Removed value: -"A credit."
    • removedOutput schema / properties / attribution / items / properties
      Removed value: -{
      -  "text": {
      -    "description": "Credit.",
      -    "examples": [
      -      "Translated by Google"
      -    ],
      -    "type": "string"
      -  },
      -  "url": {
      -    "description": "Link.",
      -    "examples": [
      -      "https://translate.google.com"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / attribution / items / required
      Removed value: -[
      -  "text",
      -  "url"
      -]
    • removedOutput schema / properties / attribution / items / type
      Removed value: -"object"
    • removedOutput schema / properties / billing_warning / description
      Removed value: -"Present only when the charge was recorded with a caveat."
    • removedOutput schema / properties / billing_warning / examples
      Removed value: -[
      -  "settlement pending"
      -]
    • removedOutput schema / properties / price_usd / description
      Removed value: -"What this call cost, in USD."
    • removedOutput schema / properties / price_usd / examples
      Removed value: -[
      -  0.02
      -]
    • removedOutput schema / properties / provenance / description
      Removed value: -"How the result was produced: which providers ran and how long each took."
    • removedOutput schema / properties / provenance / properties
      Removed value: -{
      -  "attempts": {
      -    "description": "Provider attempts made, including retries and failovers.",
      -    "examples": [
      -      1
      -    ],
      -    "type": "integer"
      -  },
      -  "elapsed_ms": {
      -    "description": "Wall-clock milliseconds for the whole job.",
      -    "examples": [
      -      340
      -    ],
      -    "type": "integer"
      -  },
      -  "providers_used": {
      -    "description": "Providers that served the job.",
      -    "examples": [
      -      [
      -        "coinbase-advanced-trade-public"
      -      ]
      -    ],
      -    "items": {
      -      "description": "Provider name.",
      -      "examples": [
      -        "coinbase-advanced-trade-public"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "steps": {
      -    "description": "Every step the job ran, in order.",
      -    "items": {
      -      "description": "One step of the job.",
      -      "properties": {
      -        "ms": {
      -          "description": "Milliseconds the step took.",
      -          "examples": [
      -            312
      -          ],
      -          "type": "integer"
      -        },
      -        "ok": {
      -          "description": "Whether the step succeeded.",
      -          "examples": [
      -            true
      -          ],
      -          "type": "boolean"
      -        },
      -        "provider": {
      -          "description": "Provider that served the step.",
      -          "examples": [
      -            "coinbase-advanced-trade-public"
      -          ],
      -          "type": "string"
      -        },
      -        "reason": {
      -          "description": "Failure reason, on a failed step.",
      -          "examples": [
      -            "provider_timeout"
      -          ],
      -          "type": "string"
      -        },
      -        "step": {
      -          "description": "Step name inside the worker.",
      -          "examples": [
      -            "quote"
      -          ],
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "step",
      -        "ok",
      -        "ms"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  }
      -}
    • removedOutput schema / properties / provenance / required
      Removed value: -[
      -  "steps",
      -  "providers_used",
      -  "attempts",
      -  "elapsed_ms"
      -]
    • removedOutput schema / properties / receipt_id / description
      Removed value: -"Receipt id for this job."
    • removedOutput schema / properties / receipt_id / examples
      Removed value: -[
      -  "rcpt_9f1c2b3a4d5e6f70"
      -]
    • removedOutput schema / properties / receipt_url / description
      Removed value: -"Where to fetch the machine-readable receipt (free, no payment)."
    • removedOutput schema / properties / receipt_url / examples
      Removed value: -[
      -  "/work/receipts/rcpt_9f1c2b3a4d5e6f70"
      -]
    • removedOutput schema / properties / result / properties
      Removed value: -{
      -  "as_of": {
      -    "description": "Date or timestamp of the last price (from the dates given or the source).",
      -    "examples": [
      -      "2026-09-25"
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "beta": {
      -    "description": "Against the benchmark; null unless one was given.",
      -    "properties": {
      -      "alpha_annualized": {
      -        "description": "Annualized Jensen's alpha.",
      -        "examples": [
      -          0.31
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "benchmark_annualized_volatility": {
      -        "description": "Benchmark volatility, annualized.",
      -        "examples": [
      -          0.18
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "beta": {
      -        "description": "cov/var vs the benchmark.",
      -        "examples": [
      -          1.12
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "correlation": {
      -        "description": "Pearson correlation of period returns.",
      -        "examples": [
      -          0.83
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "n": {
      -        "description": "Aligned returns used.",
      -        "examples": [
      -          21
      -        ],
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "n",
      -      "beta"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "black_scholes": {
      -    "description": "Black-Scholes-Merton.",
      -    "properties": {
      -      "d1": {
      -        "description": "d1.",
      -        "examples": [
      -          0.11
      -        ],
      -        "type": "number"
      -      },
      -      "d2": {
      -        "description": "d2.",
      -        "examples": [
      -          -0.04
      -        ],
      -        "type": "number"
      -      },
      -      "delta": {
      -        "description": "dV/dS.",
      -        "examples": [
      -          0.54
      -        ],
      -        "type": "number"
      -      },
      -      "gamma": {
      -        "description": "d2V/dS2.",
      -        "examples": [
      -          0.024
      -        ],
      -        "type": "number"
      -      },
      -      "inputs": {
      -        "description": "The inputs used, including any defaulted from the series.",
      -        "properties": {
      -          "dividend_yield": {
      -            "description": "q.",
      -            "examples": [
      -              0
      -            ],
      -            "type": "number"
      -          },
      -          "rate": {
      -            "description": "r.",
      -            "examples": [
      -              0.04
      -            ],
      -            "type": "number"
      -          },
      -          "spot": {
      -            "description": "S.",
      -            "examples": [
      -              120
      -            ],
      -            "type": "number"
      -          },
      -          "strike": {
      -            "description": "K.",
      -            "examples": [
      -              120
      -            ],
      -            "type": "number"
      -          },
      -          "time_to_expiry_years": {
      -            "description": "T.",
      -            "examples": [
      -              0.5
      -            ],
      -            "type": "number"
      -          },
      -          "volatility": {
      -            "description": "sigma.",
      -            "examples": [
      -              0.217
      -            ],
      -            "type": "number"
      -          }
      -        },
      -        "required": [
      -          "spot",
      -          "strike",
      -          "rate",
      -          "volatility",
      -          "time_to_expiry_years",
      -          "dividend_yield"
      -        ],
      -        "type": "object"
      -      },
      -      "price": {
      -        "description": "Option value.",
      -        "examples": [
      -          4.83
      -        ],
      -        "type": "number"
      -      },
      -      "rho": {
      -        "description": "dV/dr per 1.0 of rate.",
      -        "examples": [
      -          29.8
      -        ],
      -        "type": "number"
      -      },
      -      "theta": {
      -        "description": "dV/dt per year.",
      -        "examples": [
      -          -6.9
      -        ],
      -        "type": "number"
      -      },
      -      "type": {
      -        "description": "Option type.",
      -        "enum": [
      -          "call",
      -          "put"
      -        ],
      -        "examples": [
      -          "call"
      -        ],
      -        "type": "string"
      -      },
      -      "vega": {
      -        "description": "dV/dsigma per 1.0 of volatility.",
      -        "examples": [
      -          33.1
      -        ],
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "price",
      -      "delta",
      -      "gamma",
      -      "vega",
      -      "theta",
      -      "rho",
      -      "inputs"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "bollinger": {
      -    "description": "Bollinger bands at the last price.",
      -    "properties": {
      -      "bandwidth": {
      -        "description": "(upper-lower)/middle.",
      -        "examples": [
      -          0.134
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "k": {
      -        "description": "Band width in standard deviations.",
      -        "examples": [
      -          2
      -        ],
      -        "type": "number"
      -      },
      -      "lower": {
      -        "description": "Lower band.",
      -        "examples": [
      -          105.9
      -        ],
      -        "type": "number"
      -      },
      -      "middle": {
      -        "description": "SMA.",
      -        "examples": [
      -          113.5
      -        ],
      -        "type": "number"
      -      },
      -      "percent_b": {
      -        "description": "Where the last price sits in the band (0 lower, 1 upper).",
      -        "examples": [
      -          0.93
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "upper": {
      -        "description": "Upper band.",
      -        "examples": [
      -          121.1
      -        ],
      -        "type": "number"
      -      },
      -      "window": {
      -        "description": "Window.",
      -        "examples": [
      -          20
      -        ],
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "window",
      -      "k",
      -      "middle",
      -      "upper",
      -      "lower"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "checked_at": {
      -    "description": "When this node read the source (UTC). Nothing here is cached.",
      -    "examples": [
      -      "2026-09-26T18:00:00Z"
      -    ],
      -    "format": "date-time",
      -    "type": "string"
      -  },
      -  "drawdown": {
      -    "description": "Maximum drawdown.",
      -    "properties": {
      -      "duration_periods": {
      -        "description": "Periods from peak to trough.",
      -        "examples": [
      -          1
      -        ],
      -        "type": "integer"
      -      },
      -      "max_drawdown": {
      -        "description": "Largest peak-to-trough fall as a fraction (negative or 0).",
      -        "examples": [
      -          -0.0167
      -        ],
      -        "type": "number"
      -      },
      -      "peak_index": {
      -        "description": "Index of the peak.",
      -        "examples": [
      -          3
      -        ],
      -        "type": "integer"
      -      },
      -      "recovery_index": {
      -        "description": "First index back at the peak; null when not recovered.",
      -        "examples": [
      -          6
      -        ],
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "trough_index": {
      -        "description": "Index of the trough.",
      -        "examples": [
      -          4
      -        ],
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "max_drawdown",
      -      "peak_index",
      -      "trough_index",
      -      "recovery_index",
      -      "duration_periods"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "first_date": {
      -    "description": "First date when dates were given.",
      -    "examples": [
      -      "2026-08-26"
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "kelly": {
      -    "description": "Kelly criterion.",
      -    "properties": {
      -      "bet": {
      -        "description": "Whether the fraction is positive.",
      -        "examples": [
      -          true
      -        ],
      -        "type": "boolean"
      -      },
      -      "fraction": {
      -        "description": "Kelly fraction p - (1-p)/b.",
      -        "examples": [
      -          0.25
      -        ],
      -        "type": "number"
      -      },
      -      "half_kelly": {
      -        "description": "Half Kelly.",
      -        "examples": [
      -          0.125
      -        ],
      -        "type": "number"
      -      },
      -      "win_loss_ratio": {
      -        "description": "b.",
      -        "examples": [
      -          1.5
      -        ],
      -        "type": "number"
      -      },
      -      "win_probability": {
      -        "description": "p.",
      -        "examples": [
      -          0.55
      -        ],
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "win_probability",
      -      "win_loss_ratio",
      -      "fraction",
      -      "half_kelly",
      -      "bet"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "last_date": {
      -    "description": "Last date when dates were given.",
      -    "examples": [
      -      "2026-09-25"
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "method": {
      -    "description": "Every formula used, in words.",
      -    "examples": [
      -      "simple returns p_t/p_{t-1}-1 and log returns..."
      -    ],
      -    "type": "string"
      -  },
      -  "metrics_computed": {
      -    "description": "Metrics present (non-null) in this result.",
      -    "examples": [
      -      [
      -        "returns",
      -        "volatility",
      -        "sharpe"
      -      ]
      -    ],
      -    "items": {
      -      "description": "A metric name.",
      -      "examples": [
      -        "returns"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "moving_averages": {
      -    "description": "Simple and exponential moving averages at the last price.",
      -    "properties": {
      -      "ema": {
      -        "additionalProperties": {
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "description": "Value per window, keyed by the window length.",
      -        "examples": [
      -          {
      -            "20": 116.4,
      -            "50": 110.2
      -          }
      -        ],
      -        "properties": {},
      -        "required": [],
      -        "type": "object"
      -      },
      -      "last_price": {
      -        "description": "Last price, for comparison.",
      -        "examples": [
      -          120
      -        ],
      -        "type": "number"
      -      },
      -      "sma": {
      -        "additionalProperties": {
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "description": "Value per window, keyed by the window length.",
      -        "examples": [
      -          {
      -            "20": 116.4,
      -            "50": 110.2
      -          }
      -        ],
      -        "properties": {},
      -        "required": [],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "sma",
      -      "ema",
      -      "last_price"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "n": {
      -    "description": "Prices in the series.",
      -    "examples": [
      -      22
      -    ],
      -    "type": "integer"
      -  },
      -  "n_returns": {
      -    "description": "Period returns (n - 1).",
      -    "examples": [
      -      21
      -    ],
      -    "type": "integer"
      -  },
      -  "notes": {
      -    "description": "Caveats about undefined or aligned metrics.",
      -    "examples": [
      -      []
      -    ],
      -    "items": {
      -      "description": "A caveat.",
      -      "examples": [
      -        "rsi needs at least 15 prices."
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "periods_per_year": {
      -    "description": "Annualization basis.",
      -    "examples": [
      -      252
      -    ],
      -    "type": "integer"
      -  },
      -  "returns": {
      -    "description": "Return statistics.",
      -    "properties": {
      -      "annualized_mean_return": {
      -        "description": "mean_period_return * periods_per_year.",
      -        "examples": [
      -          2.2
      -        ],
      -        "type": "number"
      -      },
      -      "best_period": {
      -        "description": "Largest period return.",
      -        "examples": [
      -          0.0227
      -        ],
      -        "type": "number"
      -      },
      -      "cagr": {
      -        "description": "Compound annual growth rate over n_returns/periods_per_year years.",
      -        "examples": [
      -          7.9
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "first_price": {
      -        "description": "First price.",
      -        "examples": [
      -          100
      -        ],
      -        "type": "number"
      -      },
      -      "last_price": {
      -        "description": "Last price.",
      -        "examples": [
      -          120
      -        ],
      -        "type": "number"
      -      },
      -      "mean_log_return": {
      -        "description": "Mean log return per period.",
      -        "examples": [
      -          0.0087
      -        ],
      -        "type": "number"
      -      },
      -      "mean_period_return": {
      -        "description": "Mean simple return per period.",
      -        "examples": [
      -          0.0088
      -        ],
      -        "type": "number"
      -      },
      -      "n_returns": {
      -        "description": "Period returns.",
      -        "examples": [
      -          21
      -        ],
      -        "type": "integer"
      -      },
      -      "total_return": {
      -        "description": "last/first - 1.",
      -        "examples": [
      -          0.2
      -        ],
      -        "type": "number"
      -      },
      -      "worst_period": {
      -        "description": "Smallest period return.",
      -        "examples": [
      -          -0.0167
      -        ],
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "n_returns",
      -      "first_price",
      -      "last_price",
      -      "total_return",
      -      "mean_period_return"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "risk_free_rate": {
      -    "description": "Annual risk-free rate used.",
      -    "examples": [
      -      0.04
      -    ],
      -    "type": "number"
      -  },
      -  "rsi": {
      -    "description": "Relative strength index.",
      -    "properties": {
      -      "value": {
      -        "description": "Wilder RSI 0-100; null when too few prices.",
      -        "examples": [
      -          71.2
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "window": {
      -        "description": "Window.",
      -        "examples": [
      -          14
      -        ],
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "window",
      -      "value"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "sharpe": {
      -    "description": "Annualized Sharpe ratio; null when undefined.",
      -    "examples": [
      -      9.8
      -    ],
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  "sortino": {
      -    "description": "Annualized Sortino ratio; null when undefined.",
      -    "examples": [
      -      23.6
      -    ],
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  "source": {
      -    "description": "Where the series came from.",
      -    "properties": {
      -      "benchmark_n": {
      -        "description": "Benchmark prices used.",
      -        "examples": [
      -          250
      -        ],
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "benchmark_symbol": {
      -        "description": "Benchmark ticker when fetched.",
      -        "examples": [
      -          "SPY"
      -        ],
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "provider": {
      -        "description": "Provider that served the series.",
      -        "examples": [
      -          "nasdaq-data-api"
      -        ],
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "range": {
      -        "description": "Range fetched, with type symbol.",
      -        "examples": [
      -          "1y"
      -        ],
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "symbol": {
      -        "description": "Ticker, with type symbol.",
      -        "examples": [
      -          "AAPL"
      -        ],
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "type": {
      -        "description": "Inline prices or a live-fetched series.",
      -        "enum": [
      -          "prices",
      -          "symbol"
      -        ],
      -        "examples": [
      -          "prices"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  "var": {
      -    "description": "Value at risk, one period.",
      -    "properties": {
      -      "alpha": {
      -        "description": "Tail probability.",
      -        "examples": [
      -          0.05
      -        ],
      -        "type": "number"
      -      },
      -      "historical_cvar": {
      -        "description": "Mean loss beyond the VaR.",
      -        "examples": [
      -          0.0167
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "historical_var": {
      -        "description": "Loss not exceeded with probability 1-alpha, as a positive fraction.",
      -        "examples": [
      -          0.0158
      -        ],
      -        "type": "number"
      -      },
      -      "horizon_periods": {
      -        "description": "Horizon in periods.",
      -        "examples": [
      -          1
      -        ],
      -        "type": "integer"
      -      },
      -      "parametric_var": {
      -        "description": "Normal-model VaR, -(mean + z*std).",
      -        "examples": [
      -          0.0137
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "parametric_z": {
      -        "description": "z at alpha.",
      -        "examples": [
      -          -1.6449
      -        ],
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "alpha",
      -      "horizon_periods",
      -      "historical_var",
      -      "parametric_z"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "volatility": {
      -    "description": "Dispersion of returns.",
      -    "properties": {
      -      "annualized": {
      -        "description": "period_std * sqrt(periods_per_year).",
      -        "examples": [
      -          0.217
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "downside_deviation_annualized": {
      -        "description": "Annualized downside deviation vs the risk-free rate.",
      -        "examples": [
      -          0.09
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "log_return_std": {
      -        "description": "Sample standard deviation of log returns.",
      -        "examples": [
      -          0.0136
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "period_std": {
      -        "description": "Sample standard deviation of period returns.",
      -        "examples": [
      -          0.0137
      -        ],
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "period_std",
      -      "annualized"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  }
      -}
    • removedOutput schema / properties / result / required
      Removed value: -[
      -  "source",
      -  "n",
      -  "n_returns",
      -  "periods_per_year",
      -  "risk_free_rate",
      -  "metrics_computed",
      -  "returns",
      -  "volatility",
      -  "sharpe",
      -  "sortino",
      -  "drawdown",
      -  "var",
      -  "beta",
      -  "moving_averages",
      -  "rsi",
      -  "bollinger",
      -  "black_scholes",
      -  "kelly",
      -  "notes",
      -  "method",
      -  "as_of",
      -  "checked_at"
      -]
    • removedOutput schema / properties / status / description
      Removed value: -"Present only on a delivered result."
    • removedOutput schema / properties / worker / description
      Removed value: -"Catalog name of the worker that ran."
    • removedOutput schema / properties / worker / examples
      Removed value: -[
      -  "market.quote"
      -]
    • removedOutput schema / title
      Removed value: -"finance.analytics response"
  3. Changed1 schema field changed
    • addedOutput schema / properties / attribution
      Added value: +{
      +  "description": "Present only when the result's text was machine-translated: the credit to show with it.",
      +  "items": {
      +    "description": "A credit.",
      +    "properties": {
      +      "text": {
      +        "description": "Credit.",
      +        "examples": [
      +          "Translated by Google"
      +        ],
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Link.",
      +        "examples": [
      +          "https://translate.google.com"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "text",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / language
      Added value: +{
      +  "description": "Optional BCP-47 language tag (en, ja, ko, pt-BR): the human-readable strings of the result (notes, details, reasons) are translated into this language; data, codes, numbers and URLs are untouched. Default: as produced.",
      +  "maxLength": 35,
      +  "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
      +  "type": "string"
      +}
  5. Added

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavior: determinism ('no LLM', 'every formula named') and, importantly, a cost of '$0.50 per call' plus the live-fetch egress implied by `symbol`. It stops short of stating rate limits or whether fetching a symbol is separately metered.

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 capability list, then input shape, then outputs – a sensible order with no filler prose. The trailing 'Returns: source{}, n, n_returns, ...' enumeration is long and largely duplicates the existing output schema, so it does not fully earn its space.

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

Completeness4/5

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

For a 13-parameter, nested-object tool with an output schema and rich annotations, the description covers what is computed, what inputs drive it, determinism, and cost. The one gap is guidance on metric/input dependencies (beta and black_scholes needing benchmark and option respectively), which it only gestures at via 'optional metrics, benchmark, option, kelly'.

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

Parameters3/5

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

Schema description coverage is 100%, which sets the baseline at 3. The description only groups the optional inputs ('optional metrics, benchmark, option, kelly') without explaining interactions the schema leaves implicit, such as whether requesting 'beta' in metrics requires benchmark_prices. Marginal value over 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?

Names a specific verb set and resource ('Trading and portfolio math: returns and CAGR, volatility, Sharpe...') and enumerates the exact computations, so an agent can distinguish it from quote/forecast siblings like hubvibe_market_quote or hubvibe_data_forecast. The closing input/return shape sentence makes the scope unambiguous.

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

Usage Guidelines3/5

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

'over prices you send or a ticker fetched live' and 'Use this OR `symbol`' give input-selection context, but that is already in the schema. There is no explicit statement of when to choose this over sibling analytics tools (market_signal, market_forecast, data_forecast) and no stated exclusions or prerequisites beyond the price/symbol choice.

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.