Chart Display
Chart Display is a single presentation tool that turns numbers the AI has already gathered into an interactive chart, rendered inline in the InfraScout chat. It fetches no data of its own: the AI collects and aggregates values with other tools — a performance counter series, a sign-in aggregate, an inventory or cost breakdown — and then passes a declarative spec describing how to draw them.
Because it is a presentation tool, it renders only in the InfraScout portal's chat. When InfraScout is driven from another MCP client, the tool returns a notice instead of a chart, and the AI presents the same numbers as a table — nothing is lost, the chart is simply specific to the portal.
chart_display
Renders a chart from a declarative spec. x_values carries the category or time labels; each of the one-to-eight series carries a data array aligned one-to-one with x_values. A chart holds at most 500 points in total — downsample a longer window before charting it. An optional unit is appended to axis and tooltip values.
| Parameter | Type | Required | Description |
|---|---|---|---|
chart_type | string | ✓ | One of line, area, bar, donut, pie, heatmap, treemap. |
title | string | ✓ | Short chart title, e.g. CPU utilization — DC01, last 60s. |
x_values | array | ✓ | Category or time labels, one per data point. For donut, pie, and treemap these are the slice or cell labels; for a heatmap they are the column labels. |
series | array | ✓ | One to eight series, each an object { name, data } whose data array aligns one-to-one with x_values. Donut, pie, and treemap take exactly one series; each heatmap series is one row. |
unit | string | — | Unit appended to value labels and tooltips, e.g. %, ms, MB/s. |
color_scale | string | — | Heatmap and treemap only: severity (green through amber to red) or sequential (a single-hue ramp). Defaults to severity for a heatmap and sequential for a treemap. |
Choosing a Chart Type
The chart type follows from the shape of the question, and getting it right is most of what makes a chart readable.
Trends over time take line or area. Comparisons across categories take bar. Share-of-whole takes donut or pie — the same data, differing only in whether the center is open. All four accept up to eight series.
Two types handle shapes the others cannot. A heatmap renders a matrix of intensities: each series becomes a row, x_values become the column labels, and at most twelve columns fit legibly. It is the right form for anything with two dimensions and a magnitude — findings by severity across hosts, sign-in failures by hour across days, patch level by device group. A treemap renders proportions when there are many categories or the labels are long enough that a pie's slices become unreadable; it holds at most eight cells, so aggregate the tail into an "Other" entry rather than trying to show everything.
color_scale applies to those last two and carries meaning rather than decoration. Use severity when higher is worse — risk counts, open findings, failures — and the ramp reads green through amber to red the way an operator already expects. Use sequential for neutral magnitudes like cost, disk usage, or device counts, where a single-hue ramp shows size without implying danger. Labels are re-inked automatically for contrast against whatever cell color they land on, so a dark cell keeps a readable label.
Example prompt.
"Graph CPU utilization on this host over the last minute."
The AI samples the counter, then calls chart_display with the sampled values — you see a line chart in the reply rather than a column of numbers.
Example prompt.
"Show me open findings by severity across our domain controllers as a heatmap."
Here the AI aggregates the insight counts itself, then charts them as a matrix — one row per host, one column per severity, on the severity ramp.
See Also
Charts are most useful on top of data from the performance counter tools and the aggregating Microsoft Cloud tools such as server-side sign-in aggregation. For the chat experience where charts render, see Chat.