Skip to main content

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"].

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
xstringrequiredField for X values: numbers, or date strings when xIsTime is true, or category names
ystring | string[]requiredField name(s) for Y values. Multiple field names render multiple lines
xIsTimebooleanfalseTreat x values as dates/timestamps (time axis)
seriesLabelsstring[]Display names for the y series (legend). Defaults to field names
lineWidthnumber2Line stroke width in pixels
curvelinear | monotoneX | basis | natural | step | stepAfter | stepBefore"monotoneX"Line interpolation type
interpolateMissingbooleanfalseDraw dashed interpolated segments across missing (null) values instead of gaps
yDomainMinnumberForce the Y axis to start at this value
yDomainMaxnumberForce 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
xAxisLabelstringLabel for the X axis
yAxisLabelstringLabel for the Y axis
showGridLinesbooleantrueShow horizontal/vertical grid lines
legendbooleantrueShow 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"].

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
xstringrequiredField for X values: numbers, or date strings when xIsTime is true, or category names
ystring | string[]requiredField name(s) for Y values. Multiple field names render multiple areas
stackedbooleantrueStack multiple y series on top of each other. When false, series overlap with transparency
curvelinear | monotoneX | basis | natural | step | stepAfter | stepBefore"monotoneX"Area interpolation type
xIsTimebooleanfalseTreat x values as dates/timestamps (time axis)
seriesLabelsstring[]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
xAxisLabelstringLabel for the X axis
yAxisLabelstringLabel for the Y axis
showGridLinesbooleantrueShow horizontal/vertical grid lines
legendbooleantrueShow 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".

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
xstringrequiredField for the category dimension (names or numbers)
ystring | string[]requiredField name(s) for bar values. Multiple field names render one bar (or stack segment) per series
typegrouped | stacked"grouped"How multiple series are arranged: side-by-side groups or stacks
orientationvertical | horizontal"vertical"Bar direction. Horizontal puts categories on the Y axis
seriesLabelsstring[]Display names for the series (legend). Defaults to field names
roundedCornersboolean | number2Outer bar corner radius in pixels (default 2, matching the library), or true for fully rounded pill tops
barPaddingnumberPadding 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
xAxisLabelstringLabel for the X axis
yAxisLabelstringLabel for the Y axis
showGridLinesbooleantrueShow horizontal/vertical grid lines
legendbooleantrueShow 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".

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
xstringrequiredField for X values (numeric)
ystringrequiredField for Y values (numeric)
sizestringNumeric field mapped to point size (bubble chart). Values are scaled into sizeRange
sizeRangenumber[][8,40]Point diameter range [min, max] in pixels, used when size is set
pointSizenumber10Fixed point diameter in pixels, used when size is not set
colorBystringCategorical field: points are colored by its value and a legend is shown
labelstringField with point labels. Overlapping labels are hidden automatically
shapecircle | 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
xAxisLabelstringLabel for the X axis
yAxisLabelstringLabel for the Y axis
showGridLinesbooleantrueShow horizontal/vertical grid lines
legendbooleantrueShow 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".

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
valuestringrequiredField with the numeric value of each segment
labelstringField with the segment name (used for the legend)
variantdonut | pie"donut"Donut (ring) or full pie
arcWidthnumberRing thickness in pixels (donut variant only)
centralLabelstringText in the middle of the donut
centralSubLabelstringSmaller text under the central label
padAnglenumber0Angular padding between segments, in radians
sortDescendingbooleanfalseSort segments by value, largest first
showBackgroundbooleanfalseShow a background ring behind the segments
legendbooleantrueShow 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".

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
rowstringrequiredField with the row (lane) name. Records sharing a row value are drawn in one lane
startstringrequiredField with the item start: a number, or a date string (e.g. "2024-03-01")
endstringField with the item end, same format as start. Provide either end or duration
durationstringField with the item duration, in the same units as start (milliseconds when start is a date). Ignored when end is provided
timeIsDatebooleanTreat start/end values as dates (time axis). Auto-detected from the start field when omitted
showRowLabelsbooleantrueShow the row names on the left
rowHeightnumber22Row height in pixels
lineWidthnumberThickness of the timeline bars in pixels. Defaults to a value derived from rowHeight
roundedEndsbooleanfalseDraw the bars with rounded ends
alternatingRowColorsbooleantrueAlternate the row background colors
xAxisLabelstringLabel for the X axis
showGridLinesbooleantrueShow 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".

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
groupBystringrequiredField with the group/category of each observation (one box per distinct value)
valuestringrequiredField with the numeric value of each observation
boxPaddingnumber0.25Fractional padding between boxes, 0..0.9
boxMaxWidthnumberMaximum box width in pixels
roundedCornersnumber2Corner radius of the boxes in pixels
xAxisLabelstringLabel for the X axis
yAxisLabelstringLabel for the Y axis
showGridLinesbooleantrueShow 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}].

OptionTypeDefaultDescription
links{ source, target, value }[]requiredFlows between nodes, e.g. [{"source":"A","target":"B","value":10}]
nodes{ id, label }[]Node definitions; derived from links when omitted
nodeWidthnumber25Node bar width in pixels
nodePaddingnumber8Vertical padding between nodes
showValuesbooleantrueShow node totals as sub-labels
valueSuffixstring""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".

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
rowstringrequiredField with the row category of each cell
columnstringrequiredField with the column category of each cell
valuestringrequiredField with the numeric cell value (drives the cell color)
colorRangestring[][lowColor, highColor] hex pair; cell colors are interpolated between them. Defaults to a green sequence
cellPaddingnumber2Gap between cells in pixels
cellCornerRadiusnumber2Cell 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".

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
layersstring[]requiredFields defining the hierarchy, top-level groups first, e.g. ["sector", "company"]
valuestringrequiredField with the numeric tile size
labelInternalNodesbooleanShow labels on the group (non-leaf) tiles. Defaults to true when there is more than one layer
tilePaddingnumber2Padding 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}].

OptionTypeDefaultDescription
links{ source, target, value }[]requiredWeighted connections between nodes, e.g. [{"source":"A","target":"B","value":10}]
nodes{ id, label }[]Node definitions; derived from links when omitted
nodeWidthnumber15Thickness of the node arcs in pixels
padAnglenumber0.02Angular padding between nodes, in radians
cornerRadiusnumber2Corner radius of the node arcs in pixels
labelAlignmentalong | 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".

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
layersstring[]requiredFields defining the hierarchy rings, innermost ring first, e.g. ["region", "country"]
valuestringField with the numeric segment weight. Records are counted when omitted
centralLabelstringText in the middle of the donut
centralSubLabelstringSmaller text under the central label
layerPaddingnumber0Gap between rings in pixels
cornerRadiusnumber0Segment corner radius in pixels
showSegmentLabelsbooleantrueShow 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.

OptionTypeDefaultDescription
dataobject[]requiredChart data: an array of flat records, e.g. [{"month": "Jan", "sales": 120, "cost": 80}, ...]
valuestringrequiredField with the numeric value of each ring
labelstringField with the ring name (used for the legend)
maxValuenumberValue at which a ring forms a full circle. Defaults to the largest value in the data
arcWidthnumber16Ring thickness in pixels
arcPaddingnumber4Gap between rings in pixels
cornerRadiusnumberRounded bar ends, in pixels. Defaults to half the ring thickness
centralLabelstringText in the middle of the rings
centralSubLabelstringSmaller text under the central label
showBackgroundbooleantrueShow a faded full-circle track behind each ring
legendbooleantrueShow 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"}].

OptionTypeDefaultDescription
nodes{ id, label, group, size, subLabel }[]requiredGraph nodes, e.g. [{"id":"gw","label":"Gateway","group":"service"}]
links{ source, target, label, width }[]requiredEdges between nodes by id, e.g. [{"source":"gw","target":"db"}]
layoutforce | 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)
nodeSizenumber22Default node diameter in pixels
showLabelsbooleantrueShow node labels
linkArrowsbooleanfalseDraw source → target arrowheads on links
linkWidthnumber1.5Default link stroke width in pixels
legendbooleantrueShow 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}].

OptionTypeDefaultDescription
mapworld | 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 }[]requiredOne entry per area, e.g. [{"id":"US","value":21},{"id":"Germany","value":46}]
colorRangestring[][lowColor, highColor] hex pair; area colors are interpolated between them. Defaults to a blue ramp
valueLabelstring""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.