chartlink
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
Scored across 8 tools
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.
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.
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.
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.
2 tool updates
- Removed
create_edit_link - Removed
signup
1 tool update
- Changed
publish_asset1 field changed- changed
Input schema / properties / premium / descriptionPrevious 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 tool updates
- Changed
check_template_data2 fields changed- removed
Input schema / properties / data / properties / rows / items / items / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / data / properties / rows / items / items / typeAdded value: +[ + "string", + "number", + "boolean", + "null" +]
- Changed
create_from_template2 fields changed- removed
Input schema / properties / data / properties / rows / items / items / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / data / properties / rows / items / items / typeAdded value: +[ + "string", + "number", + "boolean", + "null" +]
- Changed
update_asset4 fields changed- removed
Input schema / properties / brand / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / brand / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / data / properties / rows / items / items / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / data / properties / rows / items / items / typeAdded value: +[ + "string", + "number", + "boolean", + "null" +]
3 tool updates
- Changed
check_template_data1 field changed- changed
Input schema / properties / template / descriptionPrevious value: -"Template id or slug"New value: +"Template id, slug, or page address (sweden/municipalities)"
- Changed
create_from_template1 field changed- changed
Input schema / properties / template / descriptionPrevious 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"
- Changed
get_template1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Template id (ast_…) or slug"New value: +"Template id (ast_…), slug, or page address (place/level)"
24 tool updates
- Added
check_template_data - Removed
clear_data_source - Removed
create_asset - Removed
create_brand - Removed
create_checkout_link - Added
create_from_template - Removed
delete_asset - Removed
duplicate_asset - Removed
fetch_data_source - Removed
get_asset - Removed
get_billing - Removed
get_spec_schema - Added
get_template - Removed
list_asset_types - Removed
list_assets - Removed
list_brands - Removed
list_geographies - Changed
list_templates2 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "At most this many, best first (default 20)", + "maximum": 200, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / tagsAdded value: +{ + "description": "Comma-separated tags every result must carry, e.g. map,united-states", + "type": "string" +}
- Removed
replace_asset_data - Removed
revoke_edit_link - Removed
set_data_source - Removed
unpublish_asset - Removed
update_brand - Removed
upgrade_to_premium
1 tool update
- Changed
replace_asset_data1 field changed- added
Input schema / properties / configAdded 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" +}
1 tool update
- Changed
list_templates1 field changed- added
Input schema / properties / qAdded value: +{ + "description": "What is needed, in the person's words", + "type": "string" +}
2 tool updates
- Changed
create_brand1 field changed- changed
Input schema / properties / tokens / descriptionPrevious 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)."
- Changed
update_brand1 field changed- changed
Input schema / properties / tokens / descriptionPrevious 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)."
2 tool updates
- Changed
create_brand1 field changed- changed
Input schema / properties / tokens / descriptionPrevious 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)."
- Changed
update_brand1 field changed- changed
Input schema / properties / tokens / descriptionPrevious 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
- OleanderOAuthdev.oleander
The all-in-one data stack for agents. Upload files, run SQL, evolve tables, and render charts.
Clean messy tabular data and render publication-ready PNG charts from your AI assistant.
Push CSV, JSON, JSONL or Parquet from your agent and get a link a human can explore.
Renders interactive Chart.js charts and dashboards inline in AI conversations.
Related MCP Servers
- AlicenseBqualityFmaintenanceReal-time crypto, stock, and prediction-market data for agents — prices, indicators, funding rates, DeFi TVL, macro calendar, and an AI momentum score. Configure one Base wallet key and it just works. No signup, no dashboard, no subscription.2244 npmMIT

dynamicfeed-mcpofficial
AlicenseNot gradedqualityCmaintenance62 live, cryptographically signed data tools for AI agents and robots: weather, natural hazards, flights, shipping, space, CVEs, sanctions, software versions, sea ice and more. Every datapoint carries source, licence, timestamp and an Ed25519 signature.7 npmMIT- AlicenseAqualityCmaintenanceSimple and free publishing of content on the web for AI Agents24,774 npmMIT
- AlicenseNot gradedqualityFmaintenanceIntelligence exchange for AI agents. Contribute reasoning. Earn data. No keys required.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.