AntV Chart MCP
npm:@antv/mcp-server-chart@0.9.10
Severity breakdown
Worst finding
Tool `generate_area_chart` accepts unconstrained string input
· generate_area_chart
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
All 29 findings
- mediumTool `generate_area_chart` accepts unconstrained string input· generate_area_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_bar_chart` accepts unconstrained string input· generate_bar_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_boxplot_chart` accepts unconstrained string input· generate_boxplot_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_column_chart` accepts unconstrained string input· generate_column_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_district_map` accepts unconstrained string input· generate_district_mapunconstrained input
The following string parameter(s) have no `maxLength` constraint: `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_dual_axes_chart` accepts unconstrained string input· generate_dual_axes_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_fishbone_diagram` accepts unconstrained string input· generate_fishbone_diagramunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_flow_diagram` accepts unconstrained string input· generate_flow_diagramunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_funnel_chart` accepts unconstrained string input· generate_funnel_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_funnel_chart` description mentions money but no `money` side-effect is declared· generate_funnel_chartexcessive agency
Description: "Generate a funnel chart to visualize the progressive reduction of data as it passes through stages, such as, the conversion rates of users from visiting a website to completing a purchase." -- this references money/payment/refund/etc., but the declared side_effects ([]) don't include `money`. A capframe-bind policy that relies on declared side_effects to scope spend caveats will under-scope this tool.
fix: Add `money` to the tool's `side_effects` declaration, or rewrite the description to clarify that no actual money moves.
- mediumTool `generate_histogram_chart` accepts unconstrained string input· generate_histogram_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_line_chart` accepts unconstrained string input· generate_line_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_liquid_chart` accepts unconstrained string input· generate_liquid_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `shape`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_mind_map` accepts unconstrained string input· generate_mind_mapunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_network_graph` accepts unconstrained string input· generate_network_graphunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_organization_chart` accepts unconstrained string input· generate_organization_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `orient`, `theme`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_path_map` accepts unconstrained string input· generate_path_mapunconstrained input
The following string parameter(s) have no `maxLength` constraint: `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_pie_chart` accepts unconstrained string input· generate_pie_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_pin_map` accepts unconstrained string input· generate_pin_mapunconstrained input
The following string parameter(s) have no `maxLength` constraint: `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_radar_chart` accepts unconstrained string input· generate_radar_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_sankey_chart` accepts unconstrained string input· generate_sankey_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `nodeAlign`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_sankey_chart` description mentions money but no `money` side-effect is declared· generate_sankey_chartexcessive agency
Description: "Generate a sankey chart to visualize the flow of data between different stages or categories, such as, the user journey from landing on a page to completing a purchase." -- this references money/payment/refund/etc., but the declared side_effects ([]) don't include `money`. A capframe-bind policy that relies on declared side_effects to scope spend caveats will under-scope this tool.
fix: Add `money` to the tool's `side_effects` declaration, or rewrite the description to clarify that no actual money moves.
- mediumTool `generate_scatter_chart` accepts unconstrained string input· generate_scatter_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_treemap_chart` accepts unconstrained string input· generate_treemap_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_venn_chart` accepts unconstrained string input· generate_venn_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_violin_chart` accepts unconstrained string input· generate_violin_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_waterfall_chart` accepts unconstrained string input· generate_waterfall_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `axisXTitle`, `axisYTitle`, `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_word_cloud_chart` accepts unconstrained string input· generate_word_cloud_chartunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`, `title`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
- mediumTool `generate_spreadsheet` accepts unconstrained string input· generate_spreadsheetunconstrained input
The following string parameter(s) have no `maxLength` constraint: `theme`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
How this was scored
Source sandbox — live tools/list captured in an ephemeral Docker container (parameter schemas included → R1/R2/R4 fire). Findings are emitted by the public capframe.findings.v1 schema. Score = 100 − (10·Critical + 4·High + 2·Medium + 1·Low), clamped to [0, 100].
Disagree with a finding? Open an issue.