Tools reference
Every chart tool takes data as an array of flat records plus field-name
accessors, and shares the options documented in
Output types: width, height,
theme, title, colors, locale, outputType, outputPath, scale
and framework.
Tools can be hidden per deployment with DISABLED_TOOLS or --tools
(see Getting started).
Chart tools
generate_line_chart
Generate a line chart (single or multi-series) for trends over a continuous or time dimension. Data is an array of flat records; x and y reference field names. Example: data=[{"month":"2024-01","sales":120,"cost":80},...], x="month", xIsTime=true, y=["sales","cost"].
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
x | string | required | Field for X values: numbers, or date strings when xIsTime is true, or category names |
y | string | string[] | required | Field name(s) for Y values. Multiple field names render multiple lines |
xIsTime | boolean | false | Treat x values as dates/timestamps (time axis) |
seriesLabels | string[] | — | Display names for the y series (legend). Defaults to field names |
lineWidth | number | 2 | Line stroke width in pixels |
curve | linear | monotoneX | basis | natural | step | stepAfter | stepBefore | "monotoneX" | Line interpolation type |
interpolateMissing | boolean | false | Draw dashed interpolated segments across missing (null) values instead of gaps |
yDomainMin | number | — | Force the Y axis to start at this value |
yDomainMax | number | — | Force the Y axis to end at this value |
referenceLines | { axis, value, label, color, lineWidth, style }[] | — | Reference lines for thresholds/targets, e.g. an SLA or goal |
referenceBands | { axis, from, to, label, color }[] | — | Shaded ranges drawn behind the data, e.g. an acceptable range |
xAxisLabel | string | — | Label for the X axis |
yAxisLabel | string | — | Label for the Y axis |
showGridLines | boolean | true | Show horizontal/vertical grid lines |
legend | boolean | true | Show a legend (multi-series charts only) |
generate_area_chart
Generate an area chart for volumes/magnitudes over a continuous or time dimension. Multiple y fields are stacked by default; set stacked=false to overlay them with transparency. Example: data=[{"month":"2024-01","mobile":120,"desktop":80},...], x="month", xIsTime=true, y=["mobile","desktop"].
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
x | string | required | Field for X values: numbers, or date strings when xIsTime is true, or category names |
y | string | string[] | required | Field name(s) for Y values. Multiple field names render multiple areas |
stacked | boolean | true | Stack multiple y series on top of each other. When false, series overlap with transparency |
curve | linear | monotoneX | basis | natural | step | stepAfter | stepBefore | "monotoneX" | Area interpolation type |
xIsTime | boolean | false | Treat x values as dates/timestamps (time axis) |
seriesLabels | string[] | — | Display names for the y series (legend). Defaults to field names |
referenceLines | { axis, value, label, color, lineWidth, style }[] | — | Reference lines for thresholds/targets, e.g. an SLA or goal |
referenceBands | { axis, from, to, label, color }[] | — | Shaded ranges drawn behind the data, e.g. an acceptable range |
xAxisLabel | string | — | Label for the X axis |
yAxisLabel | string | — | Label for the Y axis |
showGridLines | boolean | true | Show horizontal/vertical grid lines |
legend | boolean | true | Show a legend (multi-series charts only) |
generate_bar_chart
Generate a bar chart: single-series, grouped, or stacked; vertical or horizontal. Use for comparing values across categories. Example: data=[{"country":"US","gold":9,"silver":8},...], x="country", y=["gold","silver"], type="stacked".
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
x | string | required | Field for the category dimension (names or numbers) |
y | string | string[] | required | Field name(s) for bar values. Multiple field names render one bar (or stack segment) per series |
type | grouped | stacked | "grouped" | How multiple series are arranged: side-by-side groups or stacks |
orientation | vertical | horizontal | "vertical" | Bar direction. Horizontal puts categories on the Y axis |
seriesLabels | string[] | — | Display names for the series (legend). Defaults to field names |
roundedCorners | boolean | number | 2 | Outer bar corner radius in pixels (default 2, matching the library), or true for fully rounded pill tops |
barPadding | number | — | Padding between bars within a group, 0..0.9 |
referenceLines | { axis, value, label, color, lineWidth, style }[] | — | Reference lines for thresholds/targets, e.g. an SLA or goal |
referenceBands | { axis, from, to, label, color }[] | — | Shaded ranges drawn behind the data, e.g. an acceptable range |
xAxisLabel | string | — | Label for the X axis |
yAxisLabel | string | — | Label for the Y axis |
showGridLines | boolean | true | Show horizontal/vertical grid lines |
legend | boolean | true | Show a legend (multi-series charts only) |
generate_scatter_plot
Generate a scatter plot (or bubble chart) showing the relationship between two numeric fields. Optional: size field for bubbles, colorBy category field for colored groups with a legend, label field for point labels. Example: data=[{"gdp":43000,"lifeExp":81.2,"pop":38.2,"region":"Europe","country":"..."},...], x="gdp", y="lifeExp", size="pop", colorBy="region", label="country".
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
x | string | required | Field for X values (numeric) |
y | string | required | Field for Y values (numeric) |
size | string | — | Numeric field mapped to point size (bubble chart). Values are scaled into sizeRange |
sizeRange | number[] | [8,40] | Point diameter range [min, max] in pixels, used when size is set |
pointSize | number | 10 | Fixed point diameter in pixels, used when size is not set |
colorBy | string | — | Categorical field: points are colored by its value and a legend is shown |
label | string | — | Field with point labels. Overlapping labels are hidden automatically |
shape | circle | cross | diamond | square | star | triangle | wye | "circle" | Point shape |
referenceLines | { axis, value, label, color, lineWidth, style }[] | — | Reference lines for thresholds/targets, e.g. an SLA or goal |
referenceBands | { axis, from, to, label, color }[] | — | Shaded ranges drawn behind the data, e.g. an acceptable range |
xAxisLabel | string | — | Label for the X axis |
yAxisLabel | string | — | Label for the Y axis |
showGridLines | boolean | true | Show horizontal/vertical grid lines |
legend | boolean | true | Show a legend (multi-series charts only) |
generate_donut_chart
Generate a donut or pie chart showing parts of a whole. Example: data=[{"browser":"Chrome","share":65},{"browser":"Safari","share":19}], value="share", label="browser".
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
value | string | required | Field with the numeric value of each segment |
label | string | — | Field with the segment name (used for the legend) |
variant | donut | pie | "donut" | Donut (ring) or full pie |
arcWidth | number | — | Ring thickness in pixels (donut variant only) |
centralLabel | string | — | Text in the middle of the donut |
centralSubLabel | string | — | Smaller text under the central label |
padAngle | number | 0 | Angular padding between segments, in radians |
sortDescending | boolean | false | Sort segments by value, largest first |
showBackground | boolean | false | Show a background ring behind the segments |
legend | boolean | true | Show a legend (requires the label field) |
generate_timeline_chart
Generate a timeline (Gantt-style) chart of items with a start and an end (or duration), grouped into labeled rows. Use for schedules, project plans, traces, or event durations. Provide either an end field or a duration field. Example: data=[{"task":"Design","from":"2024-01-08","to":"2024-02-02"},...], row="task", start="from", end="to".
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
row | string | required | Field with the row (lane) name. Records sharing a row value are drawn in one lane |
start | string | required | Field with the item start: a number, or a date string (e.g. "2024-03-01") |
end | string | — | Field with the item end, same format as start. Provide either end or duration |
duration | string | — | Field with the item duration, in the same units as start (milliseconds when start is a date). Ignored when end is provided |
timeIsDate | boolean | — | Treat start/end values as dates (time axis). Auto-detected from the start field when omitted |
showRowLabels | boolean | true | Show the row names on the left |
rowHeight | number | 22 | Row height in pixels |
lineWidth | number | — | Thickness of the timeline bars in pixels. Defaults to a value derived from rowHeight |
roundedEnds | boolean | false | Draw the bars with rounded ends |
alternatingRowColors | boolean | true | Alternate the row background colors |
xAxisLabel | string | — | Label for the X axis |
showGridLines | boolean | true | Show horizontal/vertical grid lines |
generate_boxplot
Generate a box-and-whisker plot comparing the distribution of a numeric value across groups. Pass raw (long-format) observations; quartiles, median, and Tukey whiskers (1.5×IQR, clamped to the data extent) are computed per group. Example: data=[{"service":"Auth","latency":132},{"service":"Auth","latency":89},{"service":"Search","latency":210},...], groupBy="service", value="latency".
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
groupBy | string | required | Field with the group/category of each observation (one box per distinct value) |
value | string | required | Field with the numeric value of each observation |
boxPadding | number | 0.25 | Fractional padding between boxes, 0..0.9 |
boxMaxWidth | number | — | Maximum box width in pixels |
roundedCorners | number | 2 | Corner radius of the boxes in pixels |
xAxisLabel | string | — | Label for the X axis |
yAxisLabel | string | — | Label for the Y axis |
showGridLines | boolean | true | Show horizontal/vertical grid lines |
referenceLines | { axis, value, label, color, lineWidth, style }[] | — | Reference lines for thresholds/targets, e.g. an SLA or goal |
referenceBands | { axis, from, to, label, color }[] | — | Shaded ranges drawn behind the data, e.g. an acceptable range |
generate_sankey_diagram
Generate a Sankey diagram visualizing flows between stages/nodes (e.g. traffic, budgets, energy). Provide links as {source, target, value}; nodes are derived automatically. The graph must be acyclic. Example: links=[{"source":"Salary","target":"Budget","value":5000},{"source":"Budget","target":"Rent","value":2000}].
| Option | Type | Default | Description |
|---|---|---|---|
links | { source, target, value }[] | required | Flows between nodes, e.g. [{"source":"A","target":"B","value":10}] |
nodes | { id, label }[] | — | Node definitions; derived from links when omitted |
nodeWidth | number | 25 | Node bar width in pixels |
nodePadding | number | 8 | Vertical padding between nodes |
showValues | boolean | true | Show node totals as sub-labels |
valueSuffix | string | "" | Unit appended to node values, e.g. " GB" |
generate_heatmap
Generate a heatmap: a grid of cells colored by value across two categorical dimensions (e.g. activity by weekday × hour). Missing row/column combinations render as empty cells. Example: data=[{"day":"Mon","hour":"9am","visits":34},{"day":"Mon","hour":"10am","visits":51}], row="day", column="hour", value="visits".
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
row | string | required | Field with the row category of each cell |
column | string | required | Field with the column category of each cell |
value | string | required | Field with the numeric cell value (drives the cell color) |
colorRange | string[] | — | [lowColor, highColor] hex pair; cell colors are interpolated between them. Defaults to a green sequence |
cellPadding | number | 2 | Gap between cells in pixels |
cellCornerRadius | number | 2 | Cell corner radius in pixels |
generate_treemap
Generate a treemap of nested rectangles sized by value. Use for part-of-whole comparisons, optionally across hierarchy levels. Tiles are labeled "name: value". Example: data=[{"sector":"Tech","company":"Apple","cap":2900},{"sector":"Energy","company":"Shell","cap":210}], layers=["sector","company"], value="cap".
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
layers | string[] | required | Fields defining the hierarchy, top-level groups first, e.g. ["sector", "company"] |
value | string | required | Field with the numeric tile size |
labelInternalNodes | boolean | — | Show labels on the group (non-leaf) tiles. Defaults to true when there is more than one layer |
tilePadding | number | 2 | Padding between tiles in pixels |
generate_chord_diagram
Generate a chord diagram visualizing weighted relationships within one set of entities (e.g. trade between countries, brand switching, team interactions). Provide links as {source, target, value}; nodes are derived automatically. Self-links (source === target) are not supported. Example: links=[{"source":"Apple","target":"Samsung","value":8},{"source":"Samsung","target":"Apple","value":14}].
| Option | Type | Default | Description |
|---|---|---|---|
links | { source, target, value }[] | required | Weighted connections between nodes, e.g. [{"source":"A","target":"B","value":10}] |
nodes | { id, label }[] | — | Node definitions; derived from links when omitted |
nodeWidth | number | 15 | Thickness of the node arcs in pixels |
padAngle | number | 0.02 | Angular padding between nodes, in radians |
cornerRadius | number | 2 | Corner radius of the node arcs in pixels |
labelAlignment | along | perpendicular | "along" | Node labels drawn along the arcs, or radiating outwards perpendicular to them |
generate_nested_donut_chart
Generate a nested donut (sunburst) chart showing hierarchical part-of-whole data as concentric rings, innermost ring first. Segments are sized by the value field, or by record count when it is omitted. Example: data=[{"region":"EMEA","country":"Germany","sales":420},{"region":"EMEA","country":"France","sales":310}], layers=["region","country"], value="sales".
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
layers | string[] | required | Fields defining the hierarchy rings, innermost ring first, e.g. ["region", "country"] |
value | string | — | Field with the numeric segment weight. Records are counted when omitted |
centralLabel | string | — | Text in the middle of the donut |
centralSubLabel | string | — | Smaller text under the central label |
layerPadding | number | 0 | Gap between rings in pixels |
cornerRadius | number | 0 | Segment corner radius in pixels |
showSegmentLabels | boolean | true | Show the category name on each segment (labels that do not fit are hidden) |
generate_radial_bar_chart
Generate a radial bar chart (activity rings): one concentric ring per record, filled proportionally to its value. Good for progress toward goals or comparing a few values. Example: data=[{"metric":"Move","pct":84},{"metric":"Exercise","pct":62}], value="pct", label="metric", maxValue=100.
| Option | Type | Default | Description |
|---|---|---|---|
data | object[] | required | Chart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...] |
value | string | required | Field with the numeric value of each ring |
label | string | — | Field with the ring name (used for the legend) |
maxValue | number | — | Value at which a ring forms a full circle. Defaults to the largest value in the data |
arcWidth | number | 16 | Ring thickness in pixels |
arcPadding | number | 4 | Gap between rings in pixels |
cornerRadius | number | — | Rounded bar ends, in pixels. Defaults to half the ring thickness |
centralLabel | string | — | Text in the middle of the rings |
centralSubLabel | string | — | Smaller text under the central label |
showBackground | boolean | true | Show a faded full-circle track behind each ring |
legend | boolean | true | Show a legend (requires the label field) |
generate_network_graph
Generate a network graph (node-link diagram) of relationships between entities — topologies, dependencies, hierarchies, social networks. Nodes are colored by their optional group. Use layout "dagre" with linkArrows for hierarchies and DAGs, "force" for general networks, "circular"/"concentric" for symmetric views. Example: nodes=[{"id":"api","group":"service"},{"id":"db","group":"storage"}], links=[{"source":"api","target":"db"}].
| Option | Type | Default | Description |
|---|---|---|---|
nodes | { id, label, group, size, subLabel }[] | required | Graph nodes, e.g. [{"id":"gw","label":"Gateway","group":"service"}] |
links | { source, target, label, width }[] | required | Edges between nodes by id, e.g. [{"source":"gw","target":"db"}] |
layout | force | circular | concentric | dagre | "force" | Node placement: force (organic, general networks), circular (single ring), concentric (one ring per group), dagre (layered top to bottom — best for hierarchies and DAGs) |
nodeSize | number | 22 | Default node diameter in pixels |
showLabels | boolean | true | Show node labels |
linkArrows | boolean | false | Draw source → target arrowheads on links |
linkWidth | number | 1.5 | Default link stroke width in pixels |
legend | boolean | true | Show a legend when nodes have groups |
generate_choropleth_map
Generate a choropleth map: geographic areas (countries, states, regions) shaded by value. Supports the world map plus USA, Germany, UK, France, India and China. Example: map="world", data=[{"id":"US","value":21},{"id":"BR","value":85},{"id":"Germany","value":46}].
| Option | Type | Default | Description |
|---|---|---|---|
map | world | usa | germany | uk | france | india | china | "world" | Which map to draw. Area ids: world — ISO 3166-1 alpha-2 codes or country names; usa — state names, USPS abbreviations or FIPS codes; germany/france/india — ISO 3166-2 codes or names; uk — statistical regions by name; china — province names |
data | { id, value }[] | required | One entry per area, e.g. [{"id":"US","value":21},{"id":"Germany","value":46}] |
colorRange | string[] | — | [lowColor, highColor] hex pair; area colors are interpolated between them. Defaults to a blue ramp |
valueLabel | string | "" | Unit for legend labels, e.g. "%" or " GWh" |
get_unovis_info
Returns server capabilities: the active tool list, supported themes, output types, frameworks and the default color palette. Useful for a client (or an agent) to discover what this deployment can do before calling anything.