Pane types / chart

chart

Any single series over a window where the shape of the trend is the point — including non-financial metrics. Reach for price instead when it's a live quote and the current number matters more than the curve.

A line chart of a single series over a window, with axis and OHLC summary.

A rendered chart pane (chart-v1)
chart-v1

Fields in data

The envelope around data (publisher, label, expiresAt…) is the same on every type: see the envelope.

FieldTypeNotes
variant"v1"optionalDesign variant to render (defaults to v1).
symbolstringrequired1–16 chars
namestringrequired1–120 chars
glyphstringoptional1–4 chars
valuenumberrequired
changenumberrequired
changePctnumberrequired
opennumberoptional
dayHighnumberoptional
dayLownumberoptional
currencySymbolstringoptional1–8 chars
currencystringoptional2–8 chars
pointsarray of numberrequired2–2048 items
axisarray of stringoptional2–12 items · each 1–16 chars
periodstringrequired1–8 chars
windowLabelstringoptional1–40 chars
windowShortstringoptional1–20 chars

How it renders

  • The header is the market treatment: symbol at 22pt, name · currency beneath it, currencySymbol + value on the right with change · changePct under that.
  • Header numbers and the OPEN annotation always render to two decimal places, so a count of 22 reads as "22.00". Counts with a natural scale (revenue, minutes, thousands) sit better here than small integers.
  • open draws a dashed horizontal line across the plot and the OPEN … annotation above it; both are simply absent when you don't send it.
  • axis labels are spread evenly across the full width regardless of where those dates actually fall in points — send labels that are themselves evenly spaced through the window.

Craft

  • points is the whole story: send one value per interval in the window (30 daily points for period: "30D"), oldest first.
  • axis takes 2–4 evenly-spaced labels, not one per point: ["MON", "TUE", "WED", "THU", "FRI"] for a week, month-day stamps for a month.
  • period is the short code on the card ("1D", "5D", "30D"); windowLabel is the long form ("Last 30 days") used in prose.
  • For counts rather than money, set currencySymbol: " " — the card prefixes values with "$" otherwise.
  • value/change/changePct describe the latest point against the previous one, so the header and the curve agree.
  • Send open — it's what the dashed reference line is drawn from. For a non-financial series it's the first point of the window, which turns the curve into "up or down since we started watching".
  • symbol and name are read together, big then small: "DAU" over "Daily active users". Don't make name a longer spelling of symbol, and don't repeat the publisher there.

Avoid

  • Don't send fewer than ~7 points — a short series renders as an angular zigzag rather than a trend.
  • Don't label every point on the axis; the labels overlap and the card looks cluttered.
  • Don't use chart for two series (this vs. last month) — the treatment draws one line. Send the comparison as a kpi delta instead.
  • Don't send currency for a non-financial series — the tag is there to say USD vs AUD, and "· COUNT" next to the name reads as a mistake. Leave it off and no tag is drawn.

Examples

Complete payloads for POST /api/v1/feed/items or the MCP publish_pane tool.

A five-day equity trend where the shape matters more than the tick

{
  "type": "chart",
  "publisher": "Yahoo Finance",
  "publisherInit": "YF",
  "publisherColor": "#7B68EE",
  "label": "This week",
  "data": {
    "symbol": "TSLA",
    "name": "Tesla, Inc.",
    "currency": "USD",
    "currencySymbol": "$",
    "value": 248.5,
    "change": -8.21,
    "changePct": -3.2,
    "open": 256.71,
    "dayHigh": 272,
    "dayLow": 244.1,
    "points": [
      256.71,
      262.3,
      258.9,
      265.2,
      271.4,
      268.1,
      254.7,
      251.2,
      246.8,
      252.3,
      248.5
    ],
    "period": "5D",
    "axis": [
      "MON",
      "WED",
      "FRI"
    ],
    "windowLabel": "5-day",
    "windowShort": "5 days"
  }
}

A product metric over a month — counts, not currency

{
  "type": "chart",
  "publisher": "Panes Ops",
  "publisherInit": "P",
  "publisherColor": "#FF5A1F",
  "label": "Last 30 days",
  "data": {
    "symbol": "DAU",
    "name": "Daily active users",
    "currencySymbol": " ",
    "value": 1482,
    "change": 96,
    "changePct": 6.9,
    "open": 1180,
    "points": [
      1180,
      1204,
      1156,
      1233,
      1290,
      1247,
      1198,
      1265,
      1310,
      1288,
      1342,
      1301,
      1276,
      1355,
      1389,
      1362,
      1298,
      1341,
      1404,
      1437,
      1398,
      1352,
      1411,
      1466,
      1443,
      1389,
      1425,
      1478,
      1386,
      1482
    ],
    "period": "30D",
    "axis": [
      "JUL 6",
      "JUL 20",
      "AUG 4"
    ],
    "windowLabel": "Last 30 days",
    "windowShort": "30 days"
  }
}