szum
Server Details
Render chart images from JSON configs via a simple HTTP API. Six themes, ten marks, PNG/SVG output. No client-side JavaScript, no installs – just a URL that returns an image. MCP tools include render, validate, list themes, and browse examples.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.3/5 across 13 of 13 tools scored.
Each tool targets a distinct operation on charts or chart resources. There is no overlap in purpose; e.g., get_chart retrieves metadata, get_chart_config retrieves the published config, and list_charts lists saved charts.
All tools follow a consistent verb_noun (or verb_noun_noun) pattern in snake_case, e.g., delete_chart, list_marks, validate_chart. No mixing of conventions.
With 13 tools, the server covers CRUD, rendering, validation, and auxiliary operations (list marks/themes, examples) without being bloated or undersized.
The tool set covers creation, reading, updating, deletion, rendering, and validation. A minor gap is the lack of a tool to retrieve a draft config separately from the published one, as noted in get_chart_config.
Available Tools
13 toolsdelete_chartDelete chartDestructiveInspect
Use this when the user explicitly wants to permanently delete one saved chart. Deletion cannot be undone, and retrying an already completed deletion succeeds; requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Opaque 32-character saved-chart id |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes |
get_chartGet chartRead-onlyInspect
Use this when the user identifies a saved chart by id and wants to view it or retrieve its metadata and URLs. Displays the published chart when available and does not return its config; requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Opaque 32-character saved-chart id |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Opaque 32-character saved-chart id |
| view | Yes | |
| title | Yes | Saved chart title |
| source | Yes | Chart origin; an open set of string values |
| editUrl | Yes | |
| embedUrl | Yes | Interactive-embed URL |
| imageUrl | Yes | Rendered-image URL |
| configUrl | Yes | Owner-only chart-config endpoint |
| createdAt | Yes | ISO-8601 creation timestamp |
| manageUrl | Yes | |
| sizeBytes | Yes | Compressed size of the stored published config, excluding drafts; 0 means no published config has been stored yet |
| updatedAt | Yes | ISO-8601 last-update timestamp |
| publishedAt | Yes | ISO-8601 publish timestamp, or null when public URLs are dark |
get_chart_configGet chart configRead-onlyInspect
Use this when the user identifies a saved chart by id and needs its complete published Szum config for inspection or reuse. Does not return a newer editor draft; requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Opaque 32-character saved-chart id |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | No | |
| y | No | |
| data | No | |
| color | No | |
| marks | Yes | |
| scale | No | |
| theme | No | |
| title | No | |
| width | No | |
| footer | No | Caption below the chart (a source line, methodology note, date). URLs, bare domains, and [label](url) links in it are auto-detected and rendered as inline links on every surface. |
| format | Yes | |
| height | No | |
| locale | No | Locale identifier accepted by JavaScript Intl and associated with the chart content, such as en, pl, or zh-Hant. |
| margin | No | |
| version | Yes | |
| subtitle | No | |
| plotWidth | No | |
| plotHeight | No | |
| attribution | No | Show a small "Made with Szum" credit in the bottom-right. Always on for free and keyless renders; Creator and Pro omit it by default and set true to opt in. |
| headerAlign | No | |
| themeOverrides | No |
get_examplesGet example chartsRead-onlyInspect
Use this when the model needs current, ready-to-use Szum chart configs or preferred semantic patterns. Optionally filters examples by mark type.
| Name | Required | Description | Default |
|---|---|---|---|
| mark_type | No | Filter examples by mark type |
Output Schema
| Name | Required | Description |
|---|---|---|
| examples | Yes |
get_preview_stateGet chart preview stateRead-onlyIdempotentInspect
Use this when the Szum chart App needs to restore a rendered preview as its current transient or saved view. It is read-only, owner-scoped when authenticated, and hidden from the model.
| Name | Required | Description | Default |
|---|---|---|---|
| previewId | Yes | Opaque 16-character chart-preview id |
Output Schema
| Name | Required | Description |
|---|---|---|
| chart | No | |
| status | Yes |
list_chartsList chartsRead-onlyInspect
Use this when the user wants to find charts in their saved library. Returns paginated metadata and URLs, not chart configs; requires authentication. Draft-only editor charts have publishedAt null, hasDraft true, and sizeBytes 0 because sizeBytes measures only the stored published config, not draft storage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Case-insensitive title substring search; trimmed and limited to 100 characters | |
| sort | No | Sort by creation time (default), update time, or title A-Z | |
| limit | No | Page size; defaults to 100 and has a maximum of 1000 | |
| cursor | No | Opaque nextCursor from the previous page | |
| source | No | Filter by one or more chart sources; omit to list all |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total | No | Exact match count, present only for title searches |
| nextCursor | Yes | Opaque cursor for the next page, or null on the last page |
list_marksList mark typesRead-onlyInspect
Use this when choosing or configuring chart mark types. Returns every available mark with its properties and defaults.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| marks | Yes | |
| shared | Yes |
list_themesList themesRead-onlyInspect
Use this when choosing a visual theme for a chart. Returns every available theme and guidance on where each works best.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| themes | Yes |
rename_chartRename chartInspect
Use this when the user wants to change a saved chart's library title without changing its config, publication state, or public URLs; requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Opaque 32-character saved-chart id | |
| title | Yes | New saved-chart title; trimmed and limited to 200 characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Opaque 32-character saved-chart id |
| view | Yes | |
| title | Yes | Saved chart title |
| source | Yes | Chart origin; an open set of string values |
| editUrl | Yes | |
| embedUrl | Yes | Interactive-embed URL |
| imageUrl | Yes | Rendered-image URL |
| configUrl | Yes | Owner-only chart-config endpoint |
| createdAt | Yes | ISO-8601 creation timestamp |
| manageUrl | Yes | |
| sizeBytes | Yes | Compressed size of the stored published config, excluding drafts; 0 means no published config has been stored yet |
| updatedAt | Yes | ISO-8601 last-update timestamp |
| publishedAt | Yes | ISO-8601 publish timestamp, or null when public URLs are dark |
render_chartRender chartInspect
Use this when the user wants to preview or generate a chart from a Szum config after preflighting a generated or materially changed config with validate_chart. Stores a one-hour preview and returns a public image URL; authenticated calls use the account's render allowance.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | JSON string of the chart configuration. Axes use top-level x and y; hide one with y.display false or x.display false, never axes, scales, or an axis flag. Put shared rows in top-level data when multiple marks use them; use mark-level data only for a layer with different rows. A categorical fill or stroke field creates color series; group only chooses stack or dodge after that field exists and never creates a series by itself. When multiple rows share a bar position, map their series field to fill or stroke, or aggregate to one row per position. For annual time series, use ISO dates such as 1960-01-01 with x.type utc and tickFormat %Y; bare numeric years are linear values. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| title | Yes | |
| format | Yes | |
| imageUrl | Yes | |
| mimeType | Yes | |
| expiresAt | Yes |
save_chartSave chartInspect
Use this when the user wants to permanently save and publish a chart from a Szum config. Returns permanent public Image and Embed URLs plus Edit and Studio links; requires authentication and saved-chart storage.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | JSON string of the chart configuration. Axes use top-level x and y; hide one with y.display false or x.display false, never axes, scales, or an axis flag. Put shared rows in top-level data when multiple marks use them; use mark-level data only for a layer with different rows. A categorical fill or stroke field creates color series; group only chooses stack or dodge after that field exists and never creates a series by itself. When multiple rows share a bar position, map their series field to fill or stroke, or aggregate to one row per position. For annual time series, use ISO dates such as 1960-01-01 with x.type utc and tickFormat %Y; bare numeric years are linear values. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| view | Yes | |
| title | Yes | |
| format | Yes | |
| editUrl | Yes | |
| embedUrl | Yes | |
| imageUrl | Yes | |
| mimeType | Yes | |
| manageUrl | Yes |
update_chartUpdate chartDestructiveInspect
Use this when the user wants to replace and publish a saved chart's config while keeping its id and URLs. Refuses charts with unpublished editor changes; requires authentication and saved-chart storage.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Opaque 32-character saved-chart id | |
| config | Yes | JSON string of the chart configuration. Axes use top-level x and y; hide one with y.display false or x.display false, never axes, scales, or an axis flag. Put shared rows in top-level data when multiple marks use them; use mark-level data only for a layer with different rows. A categorical fill or stroke field creates color series; group only chooses stack or dodge after that field exists and never creates a series by itself. When multiple rows share a bar position, map their series field to fill or stroke, or aggregate to one row per position. For annual time series, use ISO dates such as 1960-01-01 with x.type utc and tickFormat %Y; bare numeric years are linear values. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Opaque 32-character saved-chart id |
| view | Yes | |
| title | Yes | Saved chart title |
| source | Yes | Chart origin; an open set of string values |
| editUrl | Yes | |
| embedUrl | Yes | Interactive-embed URL |
| imageUrl | Yes | Rendered-image URL |
| configUrl | Yes | Owner-only chart-config endpoint |
| createdAt | Yes | ISO-8601 creation timestamp |
| manageUrl | Yes | |
| sizeBytes | Yes | Compressed size of the stored published config, excluding drafts; 0 means no published config has been stored yet |
| updatedAt | Yes | ISO-8601 last-update timestamp |
| publishedAt | Yes | ISO-8601 publish timestamp, or null when public URLs are dark |
validate_chartValidate chart configRead-onlyInspect
Use this when preflighting the first render, save, or update of a generated or materially changed Szum config, or when the user asks to validate or debug one. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | JSON string of the chart configuration. Axes use top-level x and y; hide one with y.display false or x.display false, never axes, scales, or an axis flag. Put shared rows in top-level data when multiple marks use them; use mark-level data only for a layer with different rows. A categorical fill or stroke field creates color series; group only chooses stack or dodge after that field exists and never creates a series by itself. When multiple rows share a bar position, map their series field to fill or stroke, or aggregate to one row per position. For annual time series, use ISO dates such as 1960-01-01 with x.type utc and tickFormat %Y; bare numeric years are linear values. |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | Yes | |
| errors | Yes | |
| message | Yes |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!