Skip to main content
Glama

Bar Chart

render_bar_chart
Read-onlyIdempotent

Create interactive bar charts—vertical, horizontal, stacked, or multi-series—with drill-down, annotations, and themes to visualize category data in chat.

Instructions

Render an interactive bar chart. Supports vertical/horizontal, stacked, multi-series, and click-to-drill-down (options.drilldown). Supports themes for styled visuals.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
themeNoTheme preset: boardroom, corporate, sales-floor, golden-treasury, clinical, startup, ops-control, tokyo-midnight, zen-garden, consultant, black-tron, black-elegance, black-matrix, forest-amber, forest-earth, sky-light, sky-ocean, sky-twilight, gray-hf, gray-copilot, office-red
titleYesChart title
labelsYesCategory labels for the x-axis
effectsNoOverride effects: none, subtle, shimmer, neon, energetic
optionsNo
paletteNoOverride palette only (mix-and-match)
datasetsYesOne or more data series
typographyNoOverride typography: professional, luxury, cyberpunk, editorial, mono, bold, system, techno

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv2.4.1
    • changedInput schema / properties / options / properties / annotations / items / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "axis": {
      -        "description": "Which axis the line is on",
      -        "enum": [
      -          "x",
      -          "y"
      -        ],
      -        "type": "string"
      -      },
      -      "color": {
      -        "description": "Line color",
      -        "type": "string"
      -      },
      -      "label": {
      -        "description": "Label text",
      -        "type": "string"
      -      },
      -      "style": {
      -        "description": "Line style. Default: dashed",
      -        "enum": [
      -          "solid",
      -          "dashed"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "line",
      -        "type": "string"
      -      },
      -      "value": {
      -        "description": "Position on the axis",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "axis",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "color": {
      -        "description": "Background color",
      -        "type": "string"
      -      },
      -      "label": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "box",
      -        "type": "string"
      -      },
      -      "xMax": {
      -        "type": "number"
      -      },
      -      "xMin": {
      -        "type": "number"
      -      },
      -      "yMax": {
      -        "type": "number"
      -      },
      -      "yMin": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "color": {
      -        "type": "string"
      -      },
      -      "content": {
      -        "description": "Label text",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "label",
      -        "type": "string"
      -      },
      -      "x": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "string"
      -          }
      -        ],
      -        "description": "X position (number or category label)"
      -      },
      -      "y": {
      -        "description": "Y position",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "x",
      -      "y",
      -      "content"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "axis": {
      +        "description": "Which axis the line is on",
      +        "enum": [
      +          "x",
      +          "y"
      +        ],
      +        "type": "string"
      +      },
      +      "color": {
      +        "description": "Line color",
      +        "type": "string"
      +      },
      +      "label": {
      +        "description": "Label text",
      +        "type": "string"
      +      },
      +      "style": {
      +        "description": "Line style. Default: dashed",
      +        "enum": [
      +          "solid",
      +          "dashed"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "line",
      +        "type": "string"
      +      },
      +      "value": {
      +        "description": "Position on the axis",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "axis",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "color": {
      +        "description": "Background color",
      +        "type": "string"
      +      },
      +      "label": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "box",
      +        "type": "string"
      +      },
      +      "xMax": {
      +        "type": "number"
      +      },
      +      "xMin": {
      +        "type": "number"
      +      },
      +      "yMax": {
      +        "type": "number"
      +      },
      +      "yMin": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "color": {
      +        "type": "string"
      +      },
      +      "content": {
      +        "description": "Label text",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "label",
      +        "type": "string"
      +      },
      +      "x": {
      +        "description": "X position (number or category label)",
      +        "type": [
      +          "number",
      +          "string"
      +        ]
      +      },
      +      "y": {
      +        "description": "Y position",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "x",
      +      "y",
      +      "content"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changedv2.2.0
    • changedInput schema / properties / theme / description
      Previous value: -"Theme preset: boardroom, corporate, sales-floor, golden-treasury, clinical, startup, ops-control, tokyo-midnight, zen-garden, consultant, black-tron, black-elegance, black-matrix, forest-amber, forest-earth, sky-light, sky-ocean, sky-twilight, gray-hf, gray-copilot"New value: +"Theme preset: boardroom, corporate, sales-floor, golden-treasury, clinical, startup, ops-control, tokyo-midnight, zen-garden, consultant, black-tron, black-elegance, black-matrix, forest-amber, forest-earth, sky-light, sky-ocean, sky-twilight, gray-hf, gray-copilot, office-red"
  3. Addedv2.1.0
  4. Removedv1.0.1
  5. First observedv1.0.0

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description usefully adds that the chart is interactive and supports click-to-drill-down, but says nothing about the output artifact, where the rendered chart goes, or whether calling it persists anything. Some added context, but limited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, feature enumeration front-loaded after the core verb+resource phrase. No filler, no repetition of the title, every clause carries a capability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, deeply nested tool with no output schema and 88% schema coverage, the description covers the rendering capability set adequately. However, it omits what the call produces (inline content, file artifact, URL) and whether any output-identifying parameter exists, which an agent needs given siblings like save_file and list_chart_files. Adequate but with a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 88%, so the schema already documents theme, effects, palette, typography, options.colors, stacked, horizontal, drilldown and dataset fields in detail. The description confirms the existence of drilldown (options.drilldown) and the orientation/stacking options but adds no syntax or format detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Render an interactive bar chart') and enumerates the variants it covers (vertical/horizontal, stacked, multi-series, drill-down, themes). This clearly separates it from pie/line/scatter siblings by chart type, though it never explicitly names an alternative. Clear but not sibling-routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The feature list (stacked, multi-series, drill-down, themes) implicitly tells the agent which bar-chart scenarios this tool fits, but there is no explicit when-to-use, when-not-to-use, or pointer to a sibling like render_line_chart or render_pie_chart. Usage must be inferred from the chart type.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.