Skip to main content
Glama

chartlink

Server Details

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

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
oscarleoo/chartlink-agents
GitHub Stars
0

TDQS

A3.8/5.0

Scored across 25 tools

Disambiguation5/5

Each tool pairs a clear action with a distinct resource: asset lifecycle (create/get/update/delete/duplicate/publish/unpublish/upgrade), data sources (set/fetch/clear), brands, edit links, billing, and schema. Even the tightly-related data tools resolve cleanly — set_data_source attaches a URL, fetch_data_source runs a manual pull, clear_data_source removes it, and replace_asset_data swaps inline rows.

Naming Consistency4/5

Nearly all tools follow a consistent verb_noun snake_case convention (create_*, update_*, list_*, publish_asset, revoke_edit_link). Minor deviations: whoami breaks the verb-noun pattern, upgrade_to_premium inserts a preposition, and the data family alternates between data_source and asset_data as the object.

Tool Count3/5

25 tools sits at the very top of the 'feels heavy' band. The broad platform scope (assets, brands, data sources, billing, templates, edit links) justifies most of them, but several could be consolidated — e.g., fetch_data_source and clear_data_source are single operations that could fold into set_data_source.

Completeness4/5

The asset lifecycle is thoroughly covered from draft creation through iteration, publishing, unpublishing, duplication, and premium upgrade, with publish flags thoughtfully threaded through create/update/replace operations. Minor gaps: no delete_brand, edit links are only listable via a raw REST endpoint, and data source schedule changes require a clear+set dance rather than a direct update.

Available Tools

25 tools
clear_data_sourceDetach a chart's data sourceAInspect

Stops scheduled fetches; the chart keeps its current data.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior4/5

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

The annotation only provides openWorldHint: false, so the description carries most of the behavioral transparency burden. It does this well by disclosing that the tool stops scheduled fetches and retains existing chart data, which clarifies the side-effect profile. It does not mention reversibility or return behavior, but for a simple detach operation this is reasonably transparent.

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?

The description is two short sentences with no filler, and the primary behavior is front-loaded. Every word earns its place, making it easy for an agent to parse quickly.

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 a tool with one parameter and no output schema, the core behavior is conveyed effectively. However, the missing id semantics and lack of explicit usage guidance mean an agent would still need to infer the input and the appropriate scenario, making this only minimally viable.

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

Parameters2/5

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

The input schema provides only a required string id with no description, and schema description coverage is 0%. The description never explains whether id refers to the chart, the data source, or something else, though the title implies it is the chart id. Since the description must compensate for the missing schema detail but does not, parameter semantics are under-specified.

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 title 'Detach a chart's data source' and description 'Stops scheduled fetches; the chart keeps its current data' clearly identify the action, the resource, and the expected result. It is not tautological and effectively conveys that this is a non-destructive detach rather than a delete or replacement.

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 intended use case is implied by the description: use this tool to stop scheduled fetches while preserving current data. However, there is no explicit guidance about when to use this versus sibling tools like set_data_source or replace_asset_data, and no when-not-to-use conditions.

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

create_assetCreate a draft asset — returns an inline preview imageAInspect

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.

ParametersJSON 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.

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.

create_brandCreate a brand (reusable style token set)AInspect

A brand styles every asset that references it — and the workspace default brand styles everything created without an explicit brand. Create one, then render any asset with brand: "" to see it applied. Style only: brands can never inject data or text content.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
slugYesStable handle, e.g. "oscarleo"
tokensYesDefault 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).
isDefaultNoMake this the workspace default applied to all brand-less assets

TDQS

A4.2/5.0
Behavior4/5

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

With only openWorldHint:false in annotations, the description carries the behavioral disclosure burden. It adds valuable behavioral details: brands style assets they reference, the workspace default affects brand-less assets, and brands cannot inject data or text content. These go beyond the sparse annotation set.

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?

The main description is three concise sentences, front-loading the most important brand semantics before the create instruction and the style-only constraint. Every sentence earns its place with no repetition or filler.

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?

The description plus schema covers brand creation, application via slug, default-brand fallback, style-only restriction, and the token shape with resolution order. It does not explain the response format, but that is not required given no output schema and the tool's relatively straightforward create action.

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 75%, so most parameters are documented in the schema itself. The main description adds little parameter-specific detail beyond the style-only intent; the detailed tokens shape and resolution order live in the schema. The missing 'name' description is self-evident and not a significant gap.

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 states the exact action ('Create one'), the resource ('brand'), and the core purpose ('reusable style token set'). It also clearly separates brands from data-related operations by saying 'Style only: brands can never inject data or text content,' which distinguishes it from sibling tools that work with asset content.

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

Usage Guidelines4/5

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

The description explains when to create a brand ('Create one, then render any asset with brand: "<slug>"') and clarifies the default-brand behavior for assets without an explicit brand. It gives clear context but does not explicitly name alternatives like update_brand or state when not to use this tool.

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

delete_assetSoft-delete an assetA
Destructive
Inspect

Embeds go dark. Restorable via the REST API (POST /api/assets/{id}/restore).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already flag destructive behavior, and the description adds valuable context: the delete is soft, reversible via the REST API, and affects embeds. It could also mention permission requirements or whether the asset remains visible in listings, but the key behavioral traits are disclosed.

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 short sentences carry all the essential information: the effect on embeds and the restore path. There is no filler, and the most important behavioral facts are front-loaded.

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 simple one-parameter soft-delete operation, the description is complete enough: it covers the observable effect, reversibility, and the restore mechanism. The lack of an output schema is acceptable for a delete action, though a note on permissions or when to prefer unpublish_asset would strengthen it.

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

Parameters2/5

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

The input schema has a single required id with zero description coverage, and the tool description does not explain how id is used or what kind of asset identifier is expected. The parameter name is fairly self-evident, but the description does not compensate for the missing schema documentation.

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?

States the specific operation (soft-delete) and resource (asset), and clarifies the observable effect ('Embeds go dark') plus the recovery path. The title and description together clearly distinguish this from a permanent delete.

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

Usage Guidelines2/5

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

No guidance on when to use delete_asset versus sibling tools such as unpublish_asset, update_asset, or duplicate_asset. It describes the operation but not the conditions, prerequisites, or exclusions that should drive tool selection.

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

duplicate_assetDuplicate an asset into a new draftBInspect

New id, new embed URLs. Useful for rebranding a chart for another audience.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
brandNo
titleNo

TDQS

B3.3/5.0
Behavior3/5

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

The description adds some behavioral context beyond annotations: a new id and new embed URLs are created. However, it doesn't disclose whether the original asset is modified, whether the duplicate is unpublished until explicitly published, or any permission requirements. The annotation openWorldHint=false doesn't contradict this, but leaves room for more transparency.

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 short and front-loaded with the most important behavioral fact (new id, new embed URLs) followed by the primary use case. No filler exists, though the terse style contributes to the parameter-semantics gap. It earns its sentences.

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

Completeness2/5

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

With three parameters, no output schema, and minimal annotations, the description leaves significant gaps. It doesn't explain which asset is duplicated, the role of brand/title, or the lifecycle of the new draft. An agent would need to rely on the tool schema or external knowledge to call this correctly, making the description incomplete for the tool's complexity.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the three parameters id, brand, and title. It only hints that 'rebranding' relates to brand/title; it never states that id is the source asset id, what brand does, or what title controls. This is insufficient for an agent to confidently populate parameters without extra inference.

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 title and description together make it clear this duplicates an asset into a new draft. The description 'New id, new embed URLs' and 'rebranding a chart' indicate the duplication outcome and intent, though it doesn't explicitly name a sibling or say 'duplicate' in the description, so it stops short of full differentiation.

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

Usage Guidelines4/5

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

The description gives a clear use case: 'useful for rebranding a chart for another audience.' This tells an agent when to reach for this tool, but it doesn't mention when not to use it or propose alternatives like create_asset or update_asset, so no exclusions are provided.

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

fetch_data_sourceRefresh a chart from its data source right nowBInspect

Runs one fetch on top of the schedule. Returns {ok, rows, published, error}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.2/5.0
Behavior3/5

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

The description discloses the return shape '{ok, rows, published, error}' and clarifies that it is a one-off fetch rather than a schedule change. However, it does not explain side effects, failure semantics, error content, or access requirements. With only openWorldHint=false as an annotation, the description carries more responsibility and only partially meets it.

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?

The description is compact, front-loaded, and contains no filler. Both sentences earn their place: one states the action, the other the return contract.

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 a tool with a single parameter, no output schema, and minimal annotations, the description provides the return shape and scheduling context. However, it omits the meaning of the id parameter and the nature/format of the error field, leaving visible gaps for a caller.

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

Parameters1/5

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

Schema description coverage is 0%, and the description never explains what the required id parameter refers to. The name and title imply it is likely a data source or chart id, but the description itself adds no meaning to the schema's bare property definition.

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 and title clearly state the tool's action: 'Runs one fetch on top of the schedule' and 'Refresh a chart from its data source right now.' This differentiates it from related data-source tools like set_data_source or clear_data_source in practical terms, though it does not explicitly name any sibling tool.

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 phrase 'on top of the schedule' implies this is for on-demand refreshes outside the normal schedule, but the description does not explicitly state when to use this tool versus alternatives. No exclusions or alternative tool names are provided.

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

get_assetGet one asset (draft state)B
Read-onlyIdempotent
Inspect

Full asset envelope. includePreview=true also returns an inline PNG of the current draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesast_...
includeDataNo
includePreviewNo

TDQS

B3.4/5.0
Behavior4/5

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

The annotations already convey read-only, idempotent, and closed-world behavior effectively. The description adds real behavioral content by explaining that includePreview=true returns an inline PNG of the current draft)Skip and that the response is the full asset envelope. This supplements the annotations rather than contradicting them.

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 compact and front-loads the core behavior, with the conditional PNG behavior appended in the second sentence. No filler exists, though the phrase 'full asset envelope' is slightly cryptic and could be expressed more plainly.

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?

The tool is a simple read-by-id operation with strong annotations, so it is callable, but the lack of an output schema and the vague 'full asset envelope' leaves the expected response shape underspecified. includeData remains unexplained, and the draft-state limitation is not reinforced in the description, creating a moderate completeness 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 only 33%, so the description must compensate. It meaningfully explains includePreview, but includeData is left undocumented in both schema and description, and id is only given its 'ast_' prefix. Partial compensation with a clear remaining gap.

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 title states the verb and resource ('Get one asset') plus the draft-state qualifier, and the description clarifies it returns the full asset envelope with an optional PNG preview. It is clear enough to distinguish from list_assets, though it does not explicitly contrast with other getter-style siblings.

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

Usage Guidelines2/5

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

No explicit when-to-use or alternative guidance is provided. The description does not say when to prefer get_asset over list_assets or get_spec_schema, and the draft-state scoping appears only in the title rather than in the tool description, leaving selection to inference.

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

get_billingThis workspace's credit balance and asset capA
Read-onlyIdempotent
Inspect

Hosting is free (unlimited badged charts, live updates included). One credit makes one chart premium forever: 2400px, SVG, your own branding, no badge. Updates are never metered.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds valuable context: hosting is free, one credit permanently makes a chart premium, and updates are never metered, clarifying that the query is a status lookup and that usage doesn't consume credits. It doesn't mention rate limits or response details, but the annotation coverage lowers the bar.

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 concise: three sentences, no filler, and compact coverage of the credit model. However, the first sentence is background rather than tool behavior, and an explicit statement of what get_billing returns would make it better front-loaded.

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?

With no parameters and no output schema, the description could be complete by stating that the tool returns the current credit balance and asset cap. The title does this, but the description itself never names the output or clarifies whether balance is in credits or another unit. It is adequate but has a clear gap.

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?

The tool has zero parameters, so the baseline is 4. The description meaningfully explains what credits are and how they are consumed, which helps an agent interpret any returned billing data.

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 name and title clearly identify a read-only query for the workspace's credit balance and asset cap, and the description adds useful semantics about what a credit does. However, the description itself never explicitly states that calling this tool returns the balance/cap; it leaves that to the title and name.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use get_billing versus related tools like create_checkout_link or upgrade_to_premium. The credit explanation implies it may be used before purchasing, but there is no stated when-to-use or when-not-to-use condition.

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

get_spec_schemaGet the config schema + worked examples for a typeA
Read-onlyIdempotent
Inspect

Returns the JSON Schema for the type's config, the data schema, two worked examples (minimal + rich), and defaults — the complete config in force when nothing is set (every font, padding, color), which a brand and then the chart's own config merge over. Read this before your first create_asset of a given type; read a baseline value from defaults instead of guessing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYese.g. "line"

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool read-only, idempotent, and not open-world. The description adds meaningful behavioral context: the defaults represent the complete effective config when nothing is set, and the merge order (brand first, then chart config) is disclosed. It also clarifies that the response contains multiple parts, not just a schema.

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?

The description is two sentences, front-loaded with the return payload and then the usage rule. The parenthetical about defaults ('every font, padding, color') and merge order earns its place because it clarifies a non-obvious behavior without padding.

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

Completeness5/5

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

For a single-parameter, read-only, idempotent tool with no output schema, the description fully explains what comes back and how to use it. Nothing essential is missing: the schema, data schema, examples, defaults, merge semantics, and when to call it are all covered.

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?

The single parameter 'type' has 100% schema description coverage already ('e.g. "line"'). The description uses the parameter contextually as the asset type, but does not add new format, enumeration, or validation details beyond what the input schema provides. Baseline 3 is appropriate.

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 states a specific verb ('Returns') and a specific resource: the JSON Schema for the type's config, the data schema, two worked examples, and defaults. It clearly differentiates itself from create_asset by positioning this tool as the prerequisite read before first asset creation.

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?

Explicitly says when to use it: 'Read this before your first create_asset of a given type.' It also tells the agent to 'read a baseline value from defaults instead of guessing it,' giving an actionable rule for applying the returned defaults.

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

list_assetsList assetsA
Read-onlyIdempotent
Inspect

Filterable list; rows elide config/data. Use get_asset for full bodies.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
offsetNo
searchNoTitle substring
statusNo

TDQS

A3.8/5.0
Behavior4/5

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

Read-only and idempotent behavior are already declared by annotations, and the description adds useful disclosure that returned rows are elided and full content requires get_asset. This goes beyond the annotations without contradicting them.

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 short sentences carry both the core behavior and the routing to get_asset, with the list behavior front-loaded. No filler or redundant restatement of the tool name.

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 simple, zero-required-parameter list tool with read-only and idempotent annotations, the description is largely sufficient: filtering is noted, elision is disclosed, and the full-body alternative is named. The lack of an output schema makes a bit more return-format detail desirable, but the schema and annotations cover the essentials.

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

Parameters2/5

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

Schema description coverage is only 20% (only 'search' is described), so the description needed to compensate for type, status, limit, and offset. 'Filterable list' is the only parameter-relevant guidance and it does not explain which fields filter or how the enum behaves.

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 identifies a filterable list operation and distinguishes it from get_asset by noting that rows elide config/data. However, it relies on the tool name and title for the explicit resource ('assets'), so it is clear but slightly less self-contained than a fully specified statement.

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

Usage Guidelines4/5

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

It gives clear routing guidance: use this tool for a filtered list summary and get_asset when full bodies are needed. It does not spell out when to prefer other list siblings (e.g., list_asset_types, list_brands), so it stops short of fully explicit when-not guidance.

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

list_asset_typesList available asset typesA
Read-onlyIdempotent
Inspect

Chart/table types you can create, with links to per-type schemas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description does not need to restate safe behavior. It does add one useful behavioral detail: the result includes links to per-type schemas. Still, it says nothing about completeness, ordering, or response shape, though for a simple list endpoint this is a minor gap.

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?

The description is a single sentence with no wasted words. It front-loads the core purpose and appends the one meaningful detail about per-type schema links.

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

Completeness5/5

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

For a zero-parameter, read-only, idempotent list tool with no output schema, the description is complete enough. It tells the agent what will be returned (chart/table types) and that each entry links to a schema, which is sufficient for correct invocation.

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?

The tool has zero parameters and 100% schema description coverage, so there are no parameter semantics left undocumented. The description wisely spends no space on inputs, and the baseline for a zero-parameter tool is appropriate.

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 uses a specific verb-resource pair: 'list' + 'asset types,' and further clarifies them as 'chart/table types you can create.' This clearly differentiates the tool from siblings like list_assets or list_templates, and the title reinforces the same meaning.

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 phrase 'you can create' implies the tool is useful when deciding what asset types are available, likely before using create_asset. However, it does not explicitly state when to use this tool over alternatives such as list_templates or get_spec_schema, and no exclusions or routing guidance is provided.

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

list_brandsList brandsA
Read-onlyIdempotent
Inspect

Style-only token sets applied under your config. Pass a slug as brand on create_asset.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful behavioral context by clarifying that brands are style-only token sets scoped to the current config and that slug values are consumed by create_asset. No contradictions with annotations.

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 short sentences, each earning its place: one defines the resource scope, the other explains the practical use. No filler, no repetition of schema or annotation information.

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?

Given zero parameters, readOnly/idempotent annotations, and a simple list operation, the description is nearly complete. It tells the agent what brands are, confirms they are scoped under the config, and explains how slugs are used downstream. The only minor gap is not explicitly describing the return shape, but that is not necessary for a straightforward list tool.

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?

The tool has zero parameters, so the baseline is 4. The description adds meaning by explaining how the output (brand slugs) relates to a parameter on another tool (`brand` on create_asset), which is helpful context beyond the empty schema.

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 title supplies the action ('List') and the description defines the resource as 'style-only token sets applied under your config,' making it clear this tool returns the available brands. It does not explicitly state 'returns all brands,' but the combination of title and description is sufficient to distinguish it from create_brand/update_brand.

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

Usage Guidelines4/5

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

The description directly tells the agent when to use this tool: to obtain a slug to pass as `brand` on create_asset. It does not explicitly discuss alternatives like create_brand or list_assets, but the contextual instruction is concrete and actionable.

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

list_templatesCharts offered as templates — start a new chart from oneA
Read-onlyIdempotent
Inspect

Published charts their owners offered as starting points, each with urls.png (show a few to your human), the chart's type and title, and columns: the column ids your data must supply. Then create_asset with template: and your data — the whole design comes along. Any chart id you were shown works as a template too, not only these. The human-facing version is the gallery link in the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly this asset type, e.g. "bar"

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover read-only and idempotent behavior. The description adds meaningful behavioral detail: each result includes urls.png previews, chart type/title, required columns, and a human-facing gallery link. It also instructs the agent to 'show a few to your human', which is a useful interaction cue beyond annotations.

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

Conciseness3/5

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

Every sentence carries useful information, but the phrasing is awkward and somewhat rambling—e.g., 'Published charts their owners offered' and 'urls.png' without clear context. The content could be tightened without losing meaning, so it's not a model of concise structure.

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 simple read-only list with one optional parameter and no output schema, the description covers what items contain, how to use the returned ids with create_asset, and the fallback that any chart id works. Missing details like pagination or ordering are minor at this complexity level.

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?

The single optional `type` parameter is fully described in the schema ('Only this asset type, e.g. "bar"'), so schema coverage is 100%. The description adds no parameter-level information, which is acceptable given the baseline of 3 when the schema does the heavy lifting.

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 clearly identifies the resource ('Published charts their owners offered as starting points') and the tool's purpose (start a new chart from one). It frames list_templates as a distinct template subset relative to the sibling list_assets, though it doesn't explicitly name that sibling or contrast them.

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

Usage Guidelines4/5

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

The description provides concrete downstream guidance: 'Then create_asset with template: <id> and your data — the whole design comes along.' It also notes that any chart id works as a template, signaling that this tool is not strictly required if you already have a chart id. No explicit when-not versus list_assets is given, but the use case is well implied.

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

publish_assetPublish — snapshot a version and update every embedAInspect

Makes the draft live. Returns urls: paste urls.embedIframe on iframe platforms; on Substack insert urls.png as an image and link it to urls.page. Pinned history: urls.png + '?v=N'.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
noteNo
premiumNoSpend one paid credit to publish as premium (2400px, SVG, your branding, no badge) in this call

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses important behavioral traits: it makes the draft live, returns specific URLs, and explains how to use them on different platforms. It also mentions the pinned history behavior with '?v=N'. The annotation openWorldHint=false is minimal, but the description adds meaningful behavioral context beyond it. It doesn't mention side effects like whether it's reversible, but the core behavior is well covered.

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 concise and front-loaded with the main action ('Makes the draft live'). It then provides necessary usage details for the returned URLs. The title adds a clear summary. It's slightly dense but every sentence earns its place.

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 publish action with 3 parameters and no output schema, the description covers the main behavior and return value usage. It doesn't explain what happens to the draft after publishing or whether it can be unpublished, but the sibling unpublish_asset implies reversibility. The description is complete enough for an agent to call the tool and handle the response.

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 only 33% (only premium has a description). The description doesn't explain the 'id' or 'note' parameters, but the schema already provides their names and types. The description adds context for 'premium' by mentioning paid credit and features, but doesn't fully compensate for the lack of descriptions on the other two parameters. Baseline 3 is appropriate since the schema covers the basics.

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 title and description clearly state the action: 'Makes the draft live' and 'snapshot a version and update every embed'. This distinguishes it from siblings like unpublish_asset and update_asset. The description also specifies the resource (asset) and the effect (publishing a draft).

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

Usage Guidelines4/5

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

The description implies when to use it: when you want to make a draft live. It doesn't explicitly state when not to use it or mention alternatives, but the sibling list includes unpublish_asset, which provides context. The description gives clear usage context for the returned URLs, which helps the agent know what to do after calling.

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

replace_asset_dataReplace data rows — published assets auto-republish (live embeds update)AInspect

THE core flow for refreshing numbers. publish defaults to auto: a published asset republishes immediately (every embed/PNG updates); a draft stays draft. Set publish=false to stage instead. LIMITS: an asset holds up to 2 MB of data, but keep each tool call under ~100 KB of rows — for larger datasets chunk with mode: "append" (publish: "false" on every chunk but the last), or skip inline entirely with set_data_source (the server fetches a URL, up to the full 2 MB).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dataYes
modeNoappend adds rows after the existing ones (same columns required) — the chunking path
noteNoPublish note for the version history
publishNo

TDQS

A4.9/5.0
Behavior5/5

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

With only openWorldHint=false in annotations, the description carries the full burden and delivers: it discloses that publish defaults to auto, that published assets republish immediately affecting every embed/PNG, that drafts stay draft, and it states size limits (2 MB asset cap, ~100 KB per call). These are critical behavioral traits not visible in the schema.

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?

The description is dense but tightly organized: core purpose first, then publish semantics, then limits and chunking alternative. Every sentence adds decision-relevant information; no filler.

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

Completeness5/5

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

For a mutation tool with nested params and no output schema, the description covers the operational context: size limits, chunking strategy, publish behavior, and an alternative tool for URL-based data. An agent has enough to invoke it correctly and avoid common failure modes.

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 coverage is only 40%, but the description compensates by explaining publish's default ('auto') and staging behavior, and by giving mode='append' its chunking purpose. It does not add semantic detail for note or id, but those are self-evident or already described in the schema, so the gap is acceptable.

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 title and description state a specific action ('replace data rows' / 'refreshing numbers') on a clear resource (asset data), and the description differentiates from set_data_source by naming it as the alternative for large datasets. The auto-republish behavior is front and center, so an agent knows exactly what the tool does.

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 gives explicit guidance on when to use this tool ('THE core flow for refreshing numbers'), when to stage instead (publish=false), when to chunk (larger datasets with mode append), and when to choose set_data_source instead (skip inline entirely for datasets up to full 2 MB). This is strong routing guidance beyond the schema.

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

set_data_sourceMake a chart self-updating: attach a source URL, fetched on scheduleAInspect

The chart refetches this URL (CSV or JSON) hourly/daily/weekly, replaces its rows, and republishes itself if published — refreshes are free, updates are never metered. Columns stay as defined on the asset: CSV headers / JSON object keys match column ids or labels case-insensitively, with spaces, underscores and hyphens interchangeable (births_per_woman matches a column labeled 'Births per woman'). Fetches once immediately and returns that outcome — check fetch.ok and fix fetch.error before moving on. get_asset shows dataSource + dataSourceState when a source is attached. Clear with clear_data_source.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
urlYesPublic http(s) URL serving CSV, a JSON array of objects, or {rows:[[...]]}
formatNo
refreshNoDefault daily

TDQS

A4.6/5.0
Behavior5/5

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

Annotations are minimal (only openWorldHint false), so the description carries the full burden of behavioral disclosure. It discloses that fetches are immediate, that the tool returns an outcome to check (fetch.ok and fetch.error), that data is replaced and republished if published, and that refreshes are free. It also details column-matching rules (case-insensitive, space/underscore/hyphen interchangeable), which is critical for correct usage. No contradiction with annotations exists.

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?

The description is well-structured: it opens with the core action and schedule, then explains data mapping rules, then immediate fetch behavior and error handling, and finally related-tool pointers. Every sentence adds value, and the main behavior is front-loaded. It is appropriately sized for the tool's complexity without unnecessary fluff.

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?

The description covers the essential aspects for an agent: what the tool does, the matching rules, immediate fetch and error handling, and how to verify the attachment (get_asset). It does not explicitly describe the full response structure (only mentions fetch.ok and fetch.error), and it does not discuss edge cases like invalid URLs or what happens when the chart is unpublished. Given the lack of an output schema, slightly more detail on the immediate return would improve completeness, but it is largely sufficient.

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?

The schema covers only 50% of parameters (url and refresh have descriptions; id and format lack them). The description adds significant meaning for url (explains CSV/JSON formats and column-matching) and refresh (implies hourly/daily/weekly), and indirectly clarifies format via 'CSV or JSON'. However, it does not explicitly explain the id parameter or the exact syntax of format. The description compensates well for the coverage gap but leaves a couple of parameters under-explained.

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 the tool's purpose: making a chart self-updating by attaching a source URL that is fetched on a schedule. It explicitly names the resource (data source) and the action (set), and differentiates from siblings like clear_data_source and fetch_data_source. The core behavior is front-loaded, leaving no ambiguity about what the tool does.

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

Usage Guidelines4/5

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

The description gives clear context on when to use this tool (to attach a data source for self-updating) and mentions related tools for clearing (clear_data_source) and inspecting (get_asset). However, it does not explicitly state when to prefer alternatives like fetch_data_source (for a one-time fetch without attaching) or when not to use this tool. The usage guidance is implicit rather than explicit, but the context provided is strong enough for an agent to decide appropriately in most cases.

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

submit_feedbackReport a gap — don't silently give upAInspect

If a capability is missing, a schema fights you, or docs are wrong: record it here so the owner can fix it. One report per distinct issue, with a real description — reports get fixed same-day when they say what you tried, what you expected, and what happened (title-only reports can't be acted on).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
titleYes
assetIdNo
descriptionYesWhat you tried, what you expected, what happened instead — include the asset id if one is involved

TDQS

A4.2/5.0
Behavior4/5

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

With only openWorldHint=false in annotations, the description carries most of the behavioral burden. It discloses real behavioral consequences: title-only reports cannot be acted on, detailed reports get fixed same-day, and submissions should be unique per distinct issue. This goes beyond the annotations and gives the agent useful expectations about how the feedback will be handled.

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?

The description is two focused sentences with no filler. The most actionable guidance is front-loaded at the start, and each clause adds value: trigger conditions, per-issue cardinality, required detail level, and the outcome expectation.

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 simple submission tool with no output schema, the description covers the essential context: what to report, how to report it well, and what will happen afterward. It does not describe the submission response or explicitly state that the action is a write with no retrieval, but the schema and title cover most operational needs, leaving only minor gaps.

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 low at 25%, with only the description field explained. The tool description compensates by explaining what a good description must contain ('what you tried, what you expected, what happened') and by noting that title-only submissions are insufficient, which clarifies the title and description parameters. However, type and assetId receive no added semantic guidance beyond their schema names/enum, so the description only partially compensates for the coverage gap.

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 uses a specific verb ('record'), names the resource ('gap' or issue), and clearly states the tool's purpose: capturing missing capabilities, schema problems, or doc errors for the owner to fix. The title reinforces this and distinguishes it from the sibling asset management tools, which all perform CRUD or asset operations.

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

Usage Guidelines4/5

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

The description explicitly gives when to use the tool ('if a capability is missing, a schema fights you, or docs are wrong') and adds clear usage constraints: one report per distinct issue and a substantive description is required. It does not mention alternatives because none exist among the siblings; the only slight gap is an explicit 'when not to use' instruction, though the positive triggers are quite strong.

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

unpublish_assetTake an asset offlineA
Destructive
Inspect

Embeds and PNGs return 410 until republished.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.5/5.0
Behavior4/5

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

The annotations already flag destructiveHint=true, but the description adds useful specifics: unpublishing causes embeds and PNGs to return HTTP 410, and the effect lasts until republishing. This goes beyond generic destructiveness by clarifying the operation is reversible and what observable behavior occurs.

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 short sentence with no filler, and the key consequence is stated efficiently. It is less ideal because it leads with a side effect rather than an explicit action statement, but the title compensates for the missing verb.

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 one-parameter tool with destructiveHint already annotated, the description provides the essential behavioral context: the 410 status and reversibility. It does not explain the id parameter or mention permissions, but the operation is simple enough that the description is largely sufficient.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain what the required 'id' refers to beyond the schema's bare string type. The tool name and title imply it is an asset id, but the description itself adds no parameter meaning, creating a low-coverage gap.

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 title 'Take an asset offline' and the tool name make the core action clear, and the description adds a concrete behavioral consequence: embeds and PNGs return 410 until republished. This distinguishes it from delete_asset and connects it to publish_asset, though the description itself never explicitly states 'unpublish this asset.'

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 phrase 'until republished' implies a reversible lifecycle and hints that publish_asset is the complementary operation, which gives some usage context. However, it does not explicitly say when to choose unpublish_asset over delete_asset or any other alternative, nor does it state prerequisites.

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

update_assetUpdate a draft (deep-merge patch, or replace the config) — returns an inline preview imageAInspect

configPatch is DEEP-MERGED: objects merge recursively, arrays replace wholesale, null clears a key — send only what changes. To REMOVE keys (drop document.aspect, delete one of texts[]) pass config instead: it REPLACES the whole config (get_asset returns the current one to edit). data (if given) replaces rows wholesale. Requires expectedVersion from the last envelope; on 409 re-merge onto the returned current. Updating does NOT publish by default — pass publish: true to publish in the same call, or call publish_asset separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dataNo
brandNo
titleNo
configNoREPLACES the whole config — the way to remove keys; applied before configPatch if both are given
publishNotrue = publish immediately after this update succeeds (one call instead of two)
showcaseNoOffer this chart as a template in the public gallery and list_templates (once published). Workspace keys only.
configPatchNoDeep-merged onto the current config
expectedVersionYes

TDQS

A5/5.0
Behavior5/5

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

With only openWorldHint=false in annotations, the description carries the full behavioral burden and does so thoroughly. It discloses mutation behavior, deep-merge semantics, array replacement, null-clearing, config replacement for key removal, expectedVersion conflicts, 409 response recovery, and the non-publishing default. This goes well beyond the minimal annotation coverage.

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?

The description is dense but every sentence carries functional weight. It front-loads the central merge semantics, then covers removal, data replacement, versioning, and publishing without repetition. The structure is efficient for a tool with this many behavioral nuances.

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

Completeness5/5

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

Given the tool's complexity (9 parameters, nested objects, no output schema), the description is remarkably complete. It covers the key parameters, conflict handling, publishing behavior, and even preview output, leaving no critical gap an agent would need to resolve before invoking the tool correctly.

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

Parameters5/5

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

Schema coverage is only 44%, so the description must supply meaning, and it does. It explains that configPatch is deep-merged, config replaces the whole config and is the way to remove keys, data replaces rows wholesale, expectedVersion comes from the last envelope, and publish triggers publishing in the same call. These clarifications add real operational meaning beyond the raw schema.

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 title and description state a clear verb ('Update a draft') and resource, plus the two distinct modes (deep-merge patch vs. replace config). It also signals a concrete result ('returns an inline preview image'), making the tool's purpose unambiguous and distinguishable from siblings like publish_asset or update_brand.

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 gives explicit when-to-use guidance: use configPatch for deep-merging, config to remove keys, and data to replace rows wholesale. It also directs the agent to pass publish: true or call publish_asset separately, and explains expectedVersion handling and 409 recovery, so an agent knows exactly how to select and sequence this tool.

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

update_brandUpdate a brand (tokens deep-merge)AInspect

Deep-merges tokens (objects merge, arrays replace, null clears). Drafts restyle immediately; published assets pick the change up on their next publish. Requires expectedVersion from list_brands.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
tokensNoDefault 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).
idOrSlugYes
isDefaultNo
expectedVersionYes

TDQS

A4.4/5.0
Behavior5/5

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

Discloses important behavioral traits beyond annotations: deep-merge rules (objects merge, arrays replace, null clears), immediate restyling of drafts, and deferred effect on published assets until next publish. This is exactly the kind of context an agent needs.

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?

Three tight sentences with no filler. The most important behavioral rule (deep-merge semantics) is front-loaded, and every sentence adds value.

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 nested-parameter mutation tool with no output schema, the description covers the key operational concerns: merge semantics, side effects, and the version prerequisite. Minor gaps remain around acceptable idOrSlug formats and what the response contains, but these are not critical to invoking the tool correctly.

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 low (20%), but the description adds meaning for expectedVersion (sourced from list_brands) and clarifies tokens merge behavior. It does not add detail for name, isDefault, or idOrSlug, leaving those to the sparse schema.

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?

States a specific action ('Update a brand') plus the distinctive token deep-merge behavior in title and description. This clearly separates it from sibling tools like create_brand or update_asset.

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

Usage Guidelines4/5

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

Gives clear contextual guidance by stating that expectedVersion must come from list_brands, which tells the agent the prerequisite call. It does not explicitly mention when to prefer create_brand, but the update semantics are clear enough.

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

upgrade_to_premiumUpgrade a trial-hosted chart to premium (spends 1 paid credit)AInspect

Same URLs, instantly rebranded: badge removed, 2400px PNG and SVG unlocked, custom branding applies. Idempotent for already-premium charts.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesast_...

TDQS

A4.1/5.0
Behavior5/5

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

The description discloses several specific behavioral traits: same URLs, badge removed, 2400px PNG and SVG unlocked, custom branding applies, and idempotence. The title adds the credit cost, and there is no contradiction with the minimal annotations.

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?

The description is compact and front-loaded with the most important guarantee ('Same URLs, instantly rebranded'), then efficiently lists the unlocked benefits and idempotence. No wasted words.

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 one-parameter mutation tool with no output schema, the description covers purpose, effects, cost, and idempotence, which is nearly complete. The only minor gaps are the return shape and behavior when the chart is not trial-hosted.

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?

The single parameter `id` is fully documented in the schema with its 'ast_...' format, so the schema covers the meaning. The description does not add extra parameter-level detail, matching the baseline for 100% schema description coverage.

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 names a specific verb ('upgrade') and resource ('trial-hosted chart') and lists concrete outcomes such as badge removal and unlocking 2400px PNG/SVG. It does not explicitly distinguish from sibling tools like update_asset or publish_asset, so it stops short of a 5.

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

Usage Guidelines4/5

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

The title and description clearly imply the use case: upgrading a trial-hosted chart to premium, with a credit cost and idempotence for already-premium charts. No explicit alternatives or when-not-to-use conditions are given, but the context is clear enough for an agent.

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

whoamiVerify your API keyA
Read-onlyIdempotent
Inspect

Returns key name + workspace. Call this first — non-destructive auth check. Everything you write is stamped createdBy/updatedBy = key name.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful context beyond annotations: it explains that all writes are stamped with createdBy/updatedBy = key name, helping the agent understand why verifying the key first matters.

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?

The description is two short, information-dense sentences. The most important behavioral cues—return value and 'call this first'—are front-loaded, and every clause adds value.

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

Completeness5/5

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

For a zero-parameter identity/auth check tool, the description is complete: it names the return payload, explains the non-destructive nature, and gives clear invocation guidance. No output schema is necessary given the simple return value described.

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?

The tool has zero parameters, so there is no parameter meaning to clarify. The description appropriately focuses on return value and usage context instead, making the schema's empty properties object fully sufficient.

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?

States exactly what the tool does: 'Returns key name + workspace.' It is clearly distinguished from all sibling tools, which are CRUD/data operations rather than an authentication identity check. The title 'Verify your API key' reinforces the purpose.

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 says 'Call this first,' giving a direct usage directive. It also labels itself as a non-destructive auth check, which makes it obvious that this is a safe preliminary step before mutation tools. Given the sibling list is all write/read operations with no other auth tool, no alternative comparison is needed.

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

Tool Schema Changelog

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

  1. 25 tool updates
    • First observedclear_data_source
    • First observedcreate_asset
    • First observedcreate_brand
    • First observedcreate_checkout_link
    • First observedcreate_edit_link
    • First observeddelete_asset
    • First observedduplicate_asset
    • First observedfetch_data_source
    • First observedget_asset
    • First observedget_billing
    • First observedget_spec_schema
    • First observedlist_asset_types
    • First observedlist_assets
    • First observedlist_brands
    • First observedlist_templates
    • First observedpublish_asset
    • First observedreplace_asset_data
    • First observedrevoke_edit_link
    • First observedset_data_source
    • First observedsubmit_feedback
    • First observedunpublish_asset
    • First observedupdate_asset
    • First observedupdate_brand
    • First observedupgrade_to_premium
    • First observedwhoami

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI agents to generate beautiful, presentation-ready charts (SVG + PNG) with zero setup, supporting various chart types and styling options.
    25 npm
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to render branded charts as inline images and persistent hosted URLs, supporting explicit chart types and automatic chart suggestion from data.
    2
    20 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    TableCharts MCP Server gives any LLM assistant the ability to instantly convert tabular data into beautiful, hosted, interactive dashboards. Simply provide JSON rows, raw CSV text, or a public URL (Notion page, Google Sheet, or Salesforce report), and get back a shareable dashboard URL plus an embeddable iframe code — all in one tool call. Supports 6 chart types: bar, line, area, pie, scatter, a
    2
    13 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.