Skip to main content
Glama

chartlink

Create a draft asset — returns an inline preview image

create_asset

Creates a draft. The response includes a low-res PNG preview INLINE — look at it, then iterate with update_asset. Nothing is public until publish_asset, or until you pass publish: true here (one call instead of two, once the chart is final). A success means the config validated AND rendered. Style comes from the brand — only set config fields the story needs. data = {columns: [{id,type,...}], rows: [[...], ...]} (row-major, matching column order). LIMITS: keep each call under ~100 KB of rows (asset cap 2 MB) — for larger datasets create with a few rows and attach set_data_source, or append chunks via replace_asset_data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesTyped columns + row-major rows
typeNoAsset type, e.g. "line" (list_asset_types). Required unless template is given.
brandNoBrand slug or id; omit for the default brand
titleNoConvenience alias for config.title.text — the SAME field; if both are given, title wins. Color-span markup belongs in config.title.text.
configNoType-specific config (get_spec_schema). Must include encoding.
publishNoPublish immediately, so the returned url/pngUrl/embedUrl are live. Leave it off while you are still iterating on the preview.
templateNoStart from a published chart (list_templates, or any chart id you were shown): its type and whole design are copied, your config merges on top (set title.text), and your data must supply the column ids the template expects — the error names them if not. The fastest way to a good-looking chart.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only include openWorldHint: false, which doesn't address behavior. The description fills this gap by disclosing that nothing is public until publish, that success means validation and rendering, that style comes from brand, and that there's a size limit (~100 KB of rows). This is rich behavioral context. However, it doesn't mention auth requirements or rate limits, which might be absent but not critical. A 4 is appropriate for the depth provided.

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

Conciseness4/5

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

The description is a single dense paragraph, but it's well-structured and front-loaded with the primary purpose and the key behavioral note about inline preview. It efficiently includes examples and limits without fluff. However, it's somewhat long and might benefit from breaking into bullet points for clarity, which prevents a perfect 5.

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

Completeness4/5

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

For a complex tool with 7 parameters and nested objects, the description covers the main flow (create draft, iterate, publish), provides data format, limits, and alternatives. Since there's no output schema, it explains the response includes a preview and URL. It lacks details on error cases and exact output structure, but it's sufficient for an agent to use it correctly. A 4 is appropriate.

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

Parameters4/5

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

Schema description coverage is 100% as indicated, but the description adds significant meaning beyond the schema. It explains the data format (row-major, matching column order), the publish parameter's effect on URL liveness, and the template's merge behavior. It also clarifies the title alias for config.title.text. This goes beyond just repeating the schema, so a 4 is justified.

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

Purpose5/5

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

The description clearly states it creates a draft asset and returns an inline preview image. The verb 'creates' and resource 'draft asset' are specific, and the mention of 'inline preview' and iteration via update_asset distinguishes it from siblings like update_asset and publish_asset.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool (to create a draft and iterate) and when to use alternatives (publish with publish: true for one-call finalization, set_data_source for large datasets, replace_asset_data for appending chunks). It also warns about size limits, guiding the agent to choose better options for large data.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.