Skip to main content
Glama

Server Details

Charts and tables for AI agents with live-updating embed links. No account: signup returns a key.

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
55.8% over 42 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP
URL
Repository
oscarleoo/chartlink-agents
GitHub Stars
0
Server Listing
chartlink-mcp

TDQS

A3.9/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have distinct purposes (list_templates vs get_template, publish vs submit_feedback, whoami). However, check_template_data overlaps with create_from_template, whose description says region mismatches surface as a 400 'before anything is made — no separate check needed,' making the standalone checker partially redundant; publish_asset also overlaps with update_asset's publish:true flag. Descriptions largely resolve the boundaries, so it's a minor issue.

Naming Consistency4/5

Seven of eight tools follow a clean verb_noun snake_case pattern (check_template_data, create_from_template, get_template, list_templates, publish_asset, submit_feedback, update_asset). whoami is the lone outlier with no verb/noun structure, but the rest is highly predictable.

Tool Count5/5

Eight tools is well-scoped for a template-driven chart creation workflow, covering discovery, inspection, validation, creation, update, publish, auth, and feedback without bloat. Each tool earns its place.

Completeness3/5

Core lifecycle is covered, but update_asset references get_asset ('get_asset returns the current one to edit') yet no get_asset tool exists in the surface, forcing reliance on the last response envelope. There is also no delete_asset tool, leaving a notable gap in asset lifecycle management.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Removedcreate_edit_link
    • Removedsignup
  2. 1 tool update
    • Changedpublish_asset1 field changed
      • changedInput schema / properties / premium / description
        Previous value: -"Spend one paid credit to publish as premium (2400px, SVG, your branding, no badge) in this call"New value: +"Spend one credit to publish as premium (its own footer, no badge, SVG) in this call"
  3. 3 tool updates
    • Changedcheck_template_data2 fields changed
      • removedInput schema / properties / data / properties / rows / items / items / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / data / properties / rows / items / items / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean",
        +  "null"
        +]
    • Changedcreate_from_template2 fields changed
      • removedInput schema / properties / data / properties / rows / items / items / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / data / properties / rows / items / items / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean",
        +  "null"
        +]
    • Changedupdate_asset4 fields changed
      • removedInput schema / properties / brand / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / brand / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / data / properties / rows / items / items / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / data / properties / rows / items / items / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean",
        +  "null"
        +]
  4. 3 tool updates
    • Changedcheck_template_data1 field changed
      • changedInput schema / properties / template / description
        Previous value: -"Template id or slug"New value: +"Template id, slug, or page address (sweden/municipalities)"
    • Changedcreate_from_template1 field changed
      • changedInput schema / properties / template / description
        Previous value: -"Template id or slug, from list_templates"New value: +"Template id or slug from list_templates, or the page address (sweden/municipalities, us/texas/counties, london/wards) when you know the place"
    • Changedget_template1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Template id (ast_…) or slug"New value: +"Template id (ast_…), slug, or page address (place/level)"
  5. 24 tool updates
    • Addedcheck_template_data
    • Removedclear_data_source
    • Removedcreate_asset
    • Removedcreate_brand
    • Removedcreate_checkout_link
    • Addedcreate_from_template
    • Removeddelete_asset
    • Removedduplicate_asset
    • Removedfetch_data_source
    • Removedget_asset
    • Removedget_billing
    • Removedget_spec_schema
    • Addedget_template
    • Removedlist_asset_types
    • Removedlist_assets
    • Removedlist_brands
    • Removedlist_geographies
    • Changedlist_templates2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "At most this many, best first (default 20)",
        +  "maximum": 200,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / tags
        Added value: +{
        +  "description": "Comma-separated tags every result must carry, e.g. map,united-states",
        +  "type": "string"
        +}
    • Removedreplace_asset_data
    • Removedrevoke_edit_link
    • Removedset_data_source
    • Removedunpublish_asset
    • Removedupdate_brand
    • Removedupgrade_to_premium
  6. 1 tool update
    • Changedreplace_asset_data1 field changed
      • addedInput schema / properties / config
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "The full settings to store with the data — send it when the new columns differ from what the current config's encoding names, so both are checked together",
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
  7. 1 tool update
    • Changedlist_templates1 field changed
      • addedInput schema / properties / q
        Added value: +{
        +  "description": "What is needed, in the person's words",
        +  "type": "string"
        +}
  8. 2 tool updates
    • Changedcreate_brand1 field changed
      • changedInput schema / properties / tokens / description
        Previous value: -"Default settings for every chart using this brand — the SAME element shape as a chart config (document, title, description, source, notes, legend, badge, chart, palette, colors, shape, chrome) minus the words (no text/url) and the type-specific chart options. Resolution: ENGINE_DEFAULTS <- brand <- the chart's own config. GET /api/brands/schema for the generated JSON Schema — do NOT guess key names: unknown keys are rejected (the error lists the valid keys at that path). Any element's font.family accepts ANY Google Fonts family by exact name (fetched and measured on first use)."New value: +"Default settings for every chart using this brand — the SAME element shape as a chart config (document, title, description, source, notes, legend, badge, chart, palette, colors, shape) minus the words (no text/url) and the type-specific chart options — chart carries the style half of every element (xAxis.ticks.labels.font, yAxis.gridlines, seriesLabels.font…). Resolution: ENGINE_DEFAULTS <- brand <- the chart's own config. GET /api/brands/schema for the generated JSON Schema — do NOT guess key names: unknown keys are rejected (the error lists the valid keys at that path). Any element's font.family accepts ANY Google Fonts family by exact name (fetched and measured on first use)."
    • Changedupdate_brand1 field changed
      • changedInput schema / properties / tokens / description
        Previous value: -"Default settings for every chart using this brand — the SAME element shape as a chart config (document, title, description, source, notes, legend, badge, chart, palette, colors, shape, chrome) minus the words (no text/url) and the type-specific chart options. Resolution: ENGINE_DEFAULTS <- brand <- the chart's own config. GET /api/brands/schema for the generated JSON Schema — do NOT guess key names: unknown keys are rejected (the error lists the valid keys at that path). Any element's font.family accepts ANY Google Fonts family by exact name (fetched and measured on first use)."New value: +"Default settings for every chart using this brand — the SAME element shape as a chart config (document, title, description, source, notes, legend, badge, chart, palette, colors, shape) minus the words (no text/url) and the type-specific chart options — chart carries the style half of every element (xAxis.ticks.labels.font, yAxis.gridlines, seriesLabels.font…). Resolution: ENGINE_DEFAULTS <- brand <- the chart's own config. GET /api/brands/schema for the generated JSON Schema — do NOT guess key names: unknown keys are rejected (the error lists the valid keys at that path). Any element's font.family accepts ANY Google Fonts family by exact name (fetched and measured on first use)."
  9. 2 tool updates
    • Changedcreate_brand1 field changed
      • changedInput schema / properties / tokens / description
        Previous value: -"Default settings for every chart using this brand — the SAME element shape as a chart config (document, title, description, source, notes, legend, branding, chart, palette, colors, shape, chrome) minus the words (no text/url) and the type-specific chart options. Resolution: ENGINE_DEFAULTS <- brand <- the chart's own config. GET /api/brands/schema for the generated JSON Schema — do NOT guess key names: unknown keys are rejected (the error lists the valid keys at that path). Any element's font.family accepts ANY Google Fonts family by exact name (fetched and measured on first use)."New value: +"Default settings for every chart using this brand — the SAME element shape as a chart config (document, title, description, source, notes, legend, badge, chart, palette, colors, shape, chrome) minus the words (no text/url) and the type-specific chart options. Resolution: ENGINE_DEFAULTS <- brand <- the chart's own config. GET /api/brands/schema for the generated JSON Schema — do NOT guess key names: unknown keys are rejected (the error lists the valid keys at that path). Any element's font.family accepts ANY Google Fonts family by exact name (fetched and measured on first use)."
    • Changedupdate_brand1 field changed
      • changedInput schema / properties / tokens / description
        Previous value: -"Default settings for every chart using this brand — the SAME element shape as a chart config (document, title, description, source, notes, legend, branding, chart, palette, colors, shape, chrome) minus the words (no text/url) and the type-specific chart options. Resolution: ENGINE_DEFAULTS <- brand <- the chart's own config. GET /api/brands/schema for the generated JSON Schema — do NOT guess key names: unknown keys are rejected (the error lists the valid keys at that path). Any element's font.family accepts ANY Google Fonts family by exact name (fetched and measured on first use)."New value: +"Default settings for every chart using this brand — the SAME element shape as a chart config (document, title, description, source, notes, legend, badge, chart, palette, colors, shape, chrome) minus the words (no text/url) and the type-specific chart options. Resolution: ENGINE_DEFAULTS <- brand <- the chart's own config. GET /api/brands/schema for the generated JSON Schema — do NOT guess key names: unknown keys are rejected (the error lists the valid keys at that path). Any element's font.family accepts ANY Google Fonts family by exact name (fetched and measured on first use)."

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.