Open-source agentic AI for transaction monitoring. Just ask Jooby.What's Jube? →

Distributions and histograms tool catalogue

The product’s semantic tool layer for shape, binning and distributional analysis: 62 tools under Jube.Service.Agent.AdvancedAnalyticsTools.DistributionsAndHistograms, callable directly by an LLM agent by their literal AdvancedAnalyticsTool name. None of them has an entry anywhere else under docs/, which means Jadek, the validator agent that fact-checks every AskJooby reply against the RAG-indexed docs/ corpus, can never confirm a claim about any of them without this page. Across every tool in this tree, a non-finite (NaN or infinite) result is converted to a null in the response rather than being passed through as a number, so a caller can tell “zero” apart from “undefined” without checking for NaN itself.

Fitting one distribution to data (DistributionFittingTools)

“FitDistribution” estimates the parameters of one named distribution from a sample by maximum likelihood (or method of moments where that is the distribution’s natural fitting method), given at least two observations with no missing values. Optional fixedParameterNames/fixedParameterValues hold some parameters at a supplied value instead of estimating them — useful for fitting a Binomial with a known trials, or a GeneralizedPareto with location pinned at 0. It returns the fitted parameters with their names, the log-likelihood, AIC and BIC (lower is better for both, but only comparable between distributions of the same kind on the same data), the fitted distribution’s mean, variance and median, and the Kolmogorov-Smirnov distance between data and fit (0 is perfect; above roughly 0.1 with a reasonable sample size signals a poor fit). Some distributions reject data outside their support (for example Lognormal needs strictly positive values) and the thrown error names what is wrong. Fewer than 20 values triggers a note that the estimates and goodness-of-fit measures are weak evidence, and any parameter held fixed is listed as such in the notes.

“FitDistributionAndScoreValues” composes a fit with scoring in one call: it fits a distribution to a reference sample and then, for a separate array of new values, reports the lower-tail probability, the upper-tail probability, a two-sided tail probability (twice the smaller tail) and the fitted density for each. This is the tool to reach for when asking how unusual today’s observations are relative to a fitted historical baseline, since it avoids a round-trip through separately fitting and then separately scoring.

“RankDistributionFits” fits many candidate distributions to the same sample at once and ranks them, so the caller does not have to guess the right family. For every candidate that fits it returns the parameters, log-likelihood, AIC, BIC, the Kolmogorov-Smirnov statistic and its (optimistic, since the same data both fit and tested the parameters) p-value, the Anderson-Darling statistic (tail-weighted, lower is better), the chi-square statistic, and the rank of that candidate under each measure plus an overall average rank. Candidates that fail to fit are listed separately with the reason. Leaving candidates empty tries every distribution whose data requirements the sample satisfies; with dataType = Automatic (the default) the values are treated as counts — and therefore only discrete candidates are tried — when every value is a whole number and there are at most 50 distinct values, otherwise they are treated as continuous. Continuous and discrete candidates can never be mixed in one ranking, because their likelihoods are not comparable; attempting to pass a mixed candidates array throws. With fewer than 20 values a note warns that the chi-square statistic is not computed and every ranking is unstable.

“QuantileQuantilePlotPoints” and “ProbabilityProbabilityPlotPoints” both generate the point coordinates of a diagnostic plot against a named distribution, sharing the same underlying machinery and differing only in which axis is plotted. The sample is sorted and each order statistic is given a plotting position computed by one of four standard conventions (Hazen, the default, is (i-0.5)/n; the others are Blom, Weibull and Benard). The Q-Q tool pairs each sorted observation with the distribution’s theoretical quantile at that position and additionally fits a least-squares line through the points, returning its slope and intercept (which read as the scale and location when comparing against a standard-shape reference) together with the correlation of the points — a correlation close to 1 supports the chosen distribution, and curvature at the ends indicates heavier or lighter tails than the model. The P-P tool instead pairs each observation’s empirical probability with its theoretical cumulative probability under the distribution, so a good fit lies on the diagonal from (0,0) to (1,1); it is more sensitive to departures in the centre of the distribution, where the Q-Q form is more sensitive in the tails. Leaving parameters empty fits the distribution to the data first rather than requiring the caller to supply it. When the sample has more points than maxPoints (10 to 20000, default 500) the returned point set is evenly thinned, but the correlation, slope and intercept are always computed from every value.

Shape, tails and extremes (DistributionShapeAndTailTools)

“NormalityShapeSummary” screens whether a sample’s shape is compatible with a normal distribution, from at least four observations. It reports the bias-corrected sample skewness (0 for symmetry, positive when the upper tail is longer) and excess kurtosis (0 for a normal, positive for heavier-than-normal tails), each with a standard error and a z-score — values beyond roughly 2 in magnitude are evidence against normality — plus the Jarque-Bera statistic and its p-value once there are at least 8 values, and a plain-language verdict. It is explicitly a quick screen on shape alone, not a substitute for a formal normality test on small samples, and a sample where every value is identical is rejected as an error.

“TailExceedanceByQuantile” and “TailExceedanceByThreshold” both summarise how a sample behaves beyond some cut point, differing in whether that cut point is given as a quantile level or as a literal value. The quantile form takes levels strictly between 0 and 1 (for example 0.95, 0.99), looks up the corresponding threshold using a chosen sample quantile definition (Type1–Type9, default Type7), and for each level reports how many observations exceed the threshold, the fraction that do, the mean excess beyond it, the mean of the exceeding values themselves (the empirical expected shortfall, or tail value at risk), and the single largest excess. The threshold form instead takes literal threshold values directly and additionally reports back the empirical fraction of the sample at or below each threshold, so the caller can see which quantile a fixed reporting limit corresponds to. Both accept a direction of Upper (values above the threshold, the default) or Lower (values below it), and a null mean excess signals that nothing exceeded that particular threshold.

“FitGeneralizedParetoTail” fits the upper tail of a sample with a generalized Pareto distribution — the standard peaks-over-threshold method from extreme value theory — from at least 100 observations. It takes every value above the threshold implied by a chosen quantile (default 0.9), fits a generalized Pareto to the excesses over that threshold by maximum likelihood with location pinned at 0, and returns the fitted scale, the shape (the tail index: near 0 reads as an exponential tail, clearly positive as a heavy power-law tail where huge values remain plausible, negative as a tail that is bounded above), and the log-likelihood. For any requested overall probabilities above the threshold quantile and below 1 (for example 0.999), it also returns the corresponding return level — the value expected to be exceeded only with that residual probability. At least 30 values must exceed the chosen threshold or the call is rejected as too few for a stable fit, and the result’s own notes flag that the tail is only reliable when the threshold is high enough that the excesses are effectively independent, and the data below it few enough that what remains is genuinely a tail.

Histograms and empirical density (HistogramAndDensityTools)

Four tools build an ordinary one-dimensional histogram, differing only in how the bin boundaries are chosen; all four return the same shape of result — edges, centres, widths, raw counts, relative frequencies, densities and the values on a requested display scale, optionally accumulated — and all accept up to 1,000,000 values. “HistogramFixedBinCount” spans the sample’s minimum to maximum with a caller-chosen number of equal-width bins (1 to 100,000); a sample where every value is identical collapses to a single bin of width 1 around that value, with a note explaining why. “HistogramFixedBinWidth” instead takes a caller-chosen bin width (which must be positive and small enough to produce at most 100,000 bins) and starts binning at the minimum, so the final bin may run past the sample maximum. “HistogramByBinningRule” picks the bin count automatically from one of six standard rules — Sturges (1 + log2(n), suited to roughly normal, modestly sized data), Rice (2·n^(1/3)), SquareRoot (sqrt(n)), Scott and Freedman-Diaconis (both set the bin width from the standard deviation or interquartile range scaled by n^(1/3), with Freedman-Diaconis more robust to outliers), and Doane (an adjustment of Sturges for skewed data) — and attaches a note naming the fallback used if the chosen rule cannot be applied, for example a zero interquartile range. It is also the tool cross-referenced from docs/AnalyticalMethodology/Charting.md as the way to get bin edges and counts as an inspectable, first-class result rather than a side effect of drawing a chart. “HistogramCustomEdges” takes caller- supplied bin edges directly, which may be unequal width (for example 0, 10, 50, 100, 1000 for transaction-size bands); edges must be strictly increasing with at least two entries, every bin includes its lower edge and excludes its upper edge except the last (which includes both), values that fall outside the first or last edge are excluded from every bin and counted separately in outsideCount, and densities divide by each bin’s own width so unequal-width bins remain comparable on that scale.

“SuggestHistogramBinCounts” reports, in one call, what bin count and resulting bin width each of the six standard rules above would independently choose for a sample, so the rules can be compared before committing to one; a large disagreement between them usually signals outliers or strong skew, in which case Freedman-Diaconis is the safer choice. Fewer than two values, or a sample where every value is identical, collapses to a single suggested bin.

“Histogram2D” builds a two-dimensional grid of counts over paired x and y observations (which must be the same length, paired by position), to show where two variables occur together. Bins are equal-width along each axis by default, or explicit edges can be supplied per axis. It returns the edges on both axes, the count matrix indexed as counts[xBin][yBin], the matrix of relative frequencies, the marginal counts along each axis, and a single outsideCount for pairs that fell outside the supplied edges on either axis.

“EmpiricalCumulativeDistribution” evaluates the empirical CDF of a sample at caller-given points — the fraction of the sample at or below each point, or, with upperTail = true, the fraction strictly above it — which is the assumption-free analogue of a percentile rank, useful for saying what share of history a new value exceeds. Points below the sample minimum evaluate to 0 and points at or above the sample maximum evaluate to 1. “EmpiricalCumulativeDistributionSteps” instead returns the whole empirical CDF as its step structure: each distinct observed value in ascending order, its occurrence count, the running cumulative count, the cumulative probability and the survival probability, which is the right shape for plotting the ECDF or reading an exact percentile rank for every value actually observed, with repeated values collapsed to one row. “EmpiricalQuantileFunction” is the inverse operation — for given probabilities it returns the sample value below which that fraction of the data lies — offered under nine standard definitions (Type1–Type9) because small samples disagree meaningfully between them: Type7 (default) matches R’s and Excel’s PERCENTILE.INC, Type6 matches PERCENTILE.EXC, Type1 is the plain inverse of the step function, and Type8 is the recommended median-unbiased choice.

“KernelDensityEstimate” estimates the probability density of a sample at caller-given points by kernel density estimation, the smooth alternative to a histogram, in which every observation contributes a small bump (Gaussian, the default and unbounded; Epanechnikov, finite-width and the most statistically efficient; or Uniform, a plain box) whose width is the bandwidth. The bandwidth is either picked by a named rule — NormalReference (the standard 1.06·σ·n^(-1/5) rule), SilvermanRobust (uses the smaller of the standard deviation and a scaled interquartile range, which suits skewed data), or Oversmoothed (the widest reasonable choice) — or supplied manually with bandwidthRule = Manual. The returned density integrates to 1 over the whole line but is not itself a probability at a point. “KernelDensityCurve” evaluates the same kernel density but over an evenly spaced grid that extends a configurable number of bandwidths (padding, default 3) beyond the sample’s minimum and maximum, and additionally locates the curve’s local maxima, returning their positions, heights, and the resulting mode count — more than one peak suggests the sample is a mixture of groups, though tiny peaks in noisy data are an artefact of too small a bandwidth and should be checked against a larger one or the Oversmoothed rule before trusting them. “KernelBandwidthRules” reports what bandwidth each of the three automatic rules above would independently choose for a sample, alongside the standard deviation and interquartile range they are computed from, to help pick a bandwidth for the two density tools above; a rule that cannot be computed (for example because every value is identical) is omitted from the result with a note explaining why.

Mixture models (MixtureModelTools)

“FitGaussianMixture1D” fits a one-dimensional Gaussian mixture — the sample is described as drawn from several bell-shaped sub-populations, each with its own mean, standard deviation and weight — by expectation-maximisation from several random (and one quantile-spread) starting points, keeping the best log-likelihood across restarts (1 to 20, default 5) attempts of up to maxIterations (10 to 2000, default 300) each. It is intended for finding hidden sub-groups, such as customer segments buried in an amount or count distribution. It returns the fitted components ordered by mean, each with its weight, mean, standard deviation and the count of values hard-assigned to it, the overall log-likelihood, AIC and BIC, a hard assignment of every input value to its most likely component, and, only when returnResponsibilities = true, the full values-by-components probability matrix. components is capped at 10 and at one fifth of the sample size, a component whose fitted standard deviation collapses to near zero relative to the overall spread is flagged in a note as possibly fitting only a handful of repeated values, and hitting the iteration cap without convergence is itself reported as a note. “SelectGaussianMixtureComponents” automates the model-selection step this leaves open: it fits mixtures with 1 up to maximumComponents (1 to 10, default 5) components and reports the log-likelihood, AIC and BIC of each, together with which component count each criterion would recommend — preferring the BIC recommendation when the two disagree, unless there is a great deal of data, since BIC penalises additional components more heavily. A sharp drop in BIC from k to k+1 followed by little further improvement is the signal to read as “k+1 groups”; fits that fail for a given k are simply omitted with a note, and the component sweep stops early, with a note, once there are too few values left to support another component.

“FitMixtureModel” generalises the Gaussian case to a mixture of several components drawn from the same chosen non-Gaussian, continuous, directly-fittable family — Normal, Lognormal, Exponential, Gamma, Weibull, Rayleigh, Cauchy, Gumbel, InverseGaussian, Pareto, Nakagami and similar, as marked fittable by ListDistributions — which matters for positive or skewed data where a Gaussian mixture would place components at impossible negative values. Passing a distribution that needs a numerical search rather than a direct estimator, or a discrete one, is rejected outright. It returns the component weights, each component’s parameters in ListDistributions order (components ordered by their first parameter), the log-likelihood, AIC, BIC and a hard assignment of every value to its most likely component, with the same not-converged note as the Gaussian tool when applicable. “EvaluateMixtureDistribution” is the companion read-only tool: given weights and per-component parameters already in hand (typically from one of the two fitting tools above), it evaluates the resulting mixture’s density and cumulative probability at caller-given points, and also returns the responsibilities — the probability that each point belongs to each component given its value, with every row summing to 1 — which is how new values get scored against, or classified into, an already-fitted mixture without refitting it. Weights must each lie in [0, 1] and sum to 1 (checked to a tolerance of 1e-6) or the call is rejected.

Multivariate and matrix-variate distributions (MultivariateDistributionTools)

Three tools work directly with a given multivariate normal mean and covariance. “MultivariateNormalDensity” evaluates the density, its natural logarithm, and the Mahalanobis distance from the mean (the number of standard deviations away once correlation and differing scales are accounted for, 0 exactly at the mean) at each given point; the log form is the one to use in higher dimensions where the raw density would underflow to 0. “MultivariateNormalMahalanobisDistance” computes just the Mahalanobis distance of each point from a given centre, together with the squared distance and the upper-tail probability of that squared distance under a chi-square distribution with degrees of freedom equal to the number of variables — a small tail probability, say below 0.001, flags a multivariate outlier when the data is reasonably normal. “MultivariateNormalRandomSample” draws random row vectors from the given normal and returns them along with their column means as a sanity check that the draw matches the intended distribution; the same seed always reproduces the same rows. Where the mean and covariance are not already known, “MahalanobisOutlierScoresFromSample” estimates them from a data sample itself (which needs more rows than columns and no perfectly redundant variables, or the covariance is singular and the error explains why) and scores either every row of that sample or a separately supplied pointsToScore array by the same distance, squared distance and chi-square tail probability. “FitMultivariateNormal” performs the equivalent maximum-likelihood fit without scoring anything, returning the mean vector, the unbiased covariance matrix, the derived correlation matrix, the per-variable standard deviations and the total log-likelihood of the sample, under the same more-rows-than-columns requirement. “MultivariateNormalOrthantProbability” evaluates the multivariate normal CDF itself: for each point, the probability that every coordinate is simultaneously at or below it (lowerOrthantProbability) and the probability every coordinate is simultaneously above it (upperOrthantProbability), which in one dimension reduce to the ordinary CDF and survival function and in general answer joint-exceedance questions; it is capped at 8 dimensions, computed numerically beyond one dimension, and a value that could not be computed comes back as null rather than an approximation presented as exact.

Four tools cover the Dirichlet distribution, the distribution over sets of proportions that sum to 1 (a multivariate Beta), useful for uncertainty about category shares such as the mix of transaction types. “DirichletSummary” takes the positive concentration parameters (at least 2; a larger total concentration means less uncertainty around the mean) and returns the mean share of each component, each component’s variance, the full covariance matrix (shares are negatively correlated with each other because they must sum to 1), and the total concentration. “DirichletDensity” evaluates the density at given proportion vectors, which must lie strictly inside the simplex (every entry in (0,1), summing to 1) or the call is rejected. “FitDirichlet” estimates the concentration parameters from observed proportion rows (each strictly summing to 1, 2 to 12 components) by numerical maximum likelihood, returning the concentrations, the implied mean proportions, the total concentration (a precision measure), and the log-likelihood — counts should be converted to shares and exact zeros avoided before calling it. “DirichletRandomSample” draws reproducible random proportion rows from a given set of concentrations, each row summing to 1, returning the rows and each component’s mean as a sanity check.

Three tools cover the multinomial distribution — counts across several categories after a fixed number of independent trials. “MultinomialSummary” returns, for given trial count and category probabilities, each category’s expected count, its variance, and the full covariance matrix of the counts (categories compete for the fixed trial total, so the covariances are negative). “MultinomialProbability” evaluates the exact probability mass, and its natural log, of observing specific count patterns; any row that does not sum exactly to the trial count has probability 0 (and a null log). “MultinomialRandomSample” draws reproducible rows of category counts, each summing to the trial count, returning the mean count per category as a sanity check.

Two pairs of tools cover the Wishart family, the distribution of sample covariance (scatter) matrices of multivariate normal data, and its conjugate inverse. “WishartSummary” and “InverseWishartSummary” return the mean matrix and the entrywise variance matrix given degrees of freedom and a positive-definite scale matrix; the Wishart form requires degrees of freedom at least the matrix size, while the inverse form requires degrees of freedom strictly greater than the matrix size plus 1, since otherwise the mean does not exist. “WishartDensity” and “InverseWishartDensity” evaluate the density (and its log, null when the density is exactly 0) at a given symmetric matrix of matching size; a matrix that is not positive definite has density 0 outright rather than raising an error. “WishartRandomSample” draws reproducible random symmetric positive-definite matrices (up to 10,000 of them), returning the entrywise mean of the drawn matrices as a check that it approaches degrees-of-freedom times the scale matrix; there is no corresponding random-sample tool for the inverse Wishart in this tree.

Four tools cover directional and spatial sampling. “VonMisesFisherDensity” evaluates the von Mises-Fisher distribution — the normal-like distribution of unit-length directions on a sphere, concentrated around a mean direction by a concentration parameter that is 0 for uniform directions and larger for tighter clustering — at given points, which are normalised to unit length automatically; the density form only supports an even number of dimensions (2, 4, 6, …), so odd-dimensional cases must go through “VonMisesFisherRandomSample” instead, which needs at least 3 dimensions (2-dimensional angular data belongs to the ordinary VonMises distribution) and returns reproducible draws plus their mean vector as a check that its direction approaches the specified mean direction. “UniformSphereRandomSample” and “UniformBallRandomSample” draw reproducible points uniformly on the surface of a sphere, or uniformly throughout the interior of a solid ball respectively, given a centre and a positive radius — useful for simulating isotropic directions, or points scattered evenly within a maximum distance of a centre.

Univariate distribution evaluation (UnivariateDistributionTools)

“ListDistributions” is the catalogue entry point for every other tool in this group and in DistributionFittingTools and MixtureModelTools: for every supported univariate distribution, continuous or discrete, it returns the name to pass as the distribution argument, whether it is discrete, a plain-language description, its support, typical uses, the ordered parameter names and descriptions (a variadic distribution such as a general discrete probability vector reports a single probabilities parameter), an example parameter array, and whether — and by what method — it can be fitted to data at all. It is the tool to call first whenever the right distribution, or its parameter order, is not already known.

“DescribeDistribution” summarises a distribution at fixed, caller-supplied parameters: mean, variance, standard deviation, median, mode, entropy in nats, the lower and upper support limits, and the values at nine standard percentage points (0.1, 1, 5, 25, 50, 75, 95, 99, 99.9). Any field that does not exist or is infinite for that distribution — the Cauchy has no mean, and unbounded supports have null limits — comes back null rather than a placeholder number.

Six tools evaluate the standard pointwise functions of a distribution with given parameters at caller-supplied points, all sharing the same guard (no NaN in the input points) and the same null-for-undefined convention in the output. “DistributionDensity” evaluates the probability density for a continuous distribution (which is not itself a probability and may exceed 1) or the exact probability mass for a discrete one (where a non-integer point has probability 0). “DistributionLogDensity” evaluates the natural log of the same quantity, for use when raw densities are small enough to underflow to zero, or when log-likelihoods are being accumulated by hand; a value of negative infinity (impossible under the distribution) comes back as null. “DistributionCumulativeProbability” evaluates the CDF — the probability of a value at or below each point, rising from 0 to 1 — rounding down to the nearest whole number first for discrete distributions. “DistributionUpperTailProbability” evaluates the survival function directly (rather than as 1 minus the CDF), so it stays numerically accurate far into the tail where subtracting from 1 would round to zero; this is the one to use for p-values and exceedance probabilities. “DistributionHazardRate” evaluates the hazard function — the instantaneous failure rate at a point given survival to that point, i.e. density divided by the survival function — which is how to see whether risk under a lifetime model (Weibull, Exponential, Gamma and similar) rises, falls, or stays flat over time. “DistributionCumulativeHazard” evaluates the cumulative hazard, the negative log of the survival function, which gives the expected event count by a given point under a repairable process or a common scale for comparing survival curves.

“DistributionQuantile” is the inverse of the CDF: for given probabilities it returns the value below which that probability mass lies, with 0 and 1 returning the support’s ends (null when unbounded) and discrete distributions returning the smallest integer whose cumulative probability reaches the target. “DistributionIntervalProbability” returns the probability of falling in each of several [lower, upper] intervals (paired by position, infinities allowed to leave an end open); for discrete distributions both ends are inclusive, so an interval of 3 to 5 covers the integers 3, 4 and 5, while continuous distributions are unaffected by whether the endpoints themselves are included. A lower value above its paired upper value is rejected.

“DistributionCurve” generates an evenly spaced grid (2 to 5000 points, default 101) across a distribution’s useful range — from the lowerProbability quantile to the upperProbability quantile, default 0.001 to 0.999, which trims heavy tails — and returns the density, cumulative probability and survival probability at every grid point, ready to plot directly or to overlay against a histogram; if the requested quantile range is not finite it falls back to the distribution’s actual support, or to an arbitrary unit interval if that too is unbounded. “DistributionProbabilityTable” is the discrete-only counterpart: given a first and last whole number (at most 10,000 apart), it lists the probability mass of every integer in that range along with the running cumulative probability and the total probability mass covered, which is how to read off an exact chance such as “exactly 3 events” or to see how much mass lies outside a chosen range as one minus the reported total; calling it on a continuous distribution is rejected in favour of DistributionCurve or DistributionDensity.

“DistributionRandomSample” draws reproducible random values (1 to 100,000) from a distribution with fixed parameters, returning the values plus their sample mean and sample standard deviation as an immediate sanity check; not every distribution supports random generation, and such a call is rejected with a pointer toward sampling a different distribution or inverting uniform probabilities through DistributionQuantile instead. This is also the tool referenced from docs/AnalyticalMethodology/PrescriptiveAnalytics/MonteCarloSimulation.md as the underlying draw primitive behind a triangular-distribution Monte Carlo worked example, called with DistributionKind.Triangular and [minimum, maximum, mode]. “DistributionLogLikelihood” scores a set of observations against a distribution whose parameters are already fixed — it does not estimate them, unlike FitDistribution — returning the total log-likelihood, the mean log-likelihood per observation, AIC, BIC, and a count of observations that were impossible (zero probability) under the distribution; if even one observation has zero probability the log-likelihood, AIC and BIC all come back null rather than a misleadingly finite number, while the count of impossible observations is still reported. “DistributionTailScores” scores each value by how extreme it is under a distribution with fixed parameters, returning for every value the lower-tail probability, the upper-tail probability, a two-sided tail probability (twice the smaller of the two, capped at 1) and a base-10 “surprise” score equal to minus the log of the two-sided probability — a surprise of 3 reads as roughly one-in-a-thousand — which is the tool to reach for when flagging anomalies against an already fitted or assumed reference distribution; FitDistributionAndScoreValues calls this same scoring logic internally after fitting.

See also

"DistributionDensity" and "DistributionCumulativeProbability" are also cited, with a worked R-equivalence example (dnorm/pnorm), in docs/AnalyticalMethodology/SummaryStatistics.md; "HistogramByBinningRule" is cited in docs/AnalyticalMethodology/Charting.md alongside the charting API’s own automatic bin selection; and "DistributionRandomSample" is cited in docs/AnalyticalMethodology/PrescriptiveAnalytics/MonteCarloSimulation.md. Those three mentions are brief cross-references rather than full treatments, so the entries above remain the primary documentation for all 62 tools in this tree.