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

TableJSON 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

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
statusYes
workerYes
price_usdYes
provenanceYes
receipt_idYes
attributionNo
receipt_urlYes
billing_warningNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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"
  2. 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"
      +}
  3. 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"
      +}
  4. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. Beyond that, the description adds valuable behavioral context: it is 'deterministic, every formula named, no LLM', it discloses a '$0.50 per call' cost, and it names the exact output sections. This is exactly the kind of context annotations cannot provide.

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?

The description is front-loaded with purpose and key computational scope, and the deterministic/cost disclosures earn their place. However, the final sentence enumerating return keys (source{}, n, n_returns, periods_per_year, metrics_computed[], returns{}, etc.) is largely redundant because an output schema already exists, which slightly detracts from conciseness.

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?

Given the high schema coverage, rich annotations, and the presence of an output schema, the description is complete enough for correct invocation. It communicates input modes, deterministic behavior, pricing, formula scope, and optional features without needing to re-explain all return values or parameter constraints.

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% and the schema documents all 13 parameters with defaults, ranges, and nested structure. The description only briefly summarizes the inputs ('prices or symbol; optional metrics, benchmark, option, kelly'), adding almost no semantics beyond what the schema already provides. Baseline 3 is appropriate.

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?

The description names a specific domain and resource — 'Trading and portfolio math' — and enumerates the exact computations it performs (returns/CAGR, volatility, Sharpe, Sortino, drawdown, VaR/CVaR, beta, alpha, SMA/EMA, RSI, Bollinger, Black-Scholes, Kelly). This clearly distinguishes it from sibling market-data tools like hubvibe_market_quote or hubvibe_market_stock, which retrieve data rather than compute formulas.

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?

The description states the two input modes ('over prices you send or a ticker fetched live') and lists optional inputs, so an agent understands the basic invocation context. It does not explicitly state when to avoid this tool or name sibling alternatives, but the use case is narrow and the context is clear enough without exclusions.

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.