chart-img-mcp
Provides tools for generating TradingView chart snapshots via the CHART-IMG API, including support for various chart types, layouts, and exchange information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@chart-img-mcpGet a daily chart of AAPL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
chart-img-mcp
A Model Context Protocol (stdio) server for CHART-IMG — TradingView chart snapshots via https://api.chart-img.com. API reference: doc.chart-img.com.
Existing MCPs?
Public MCP listings include TradingView chart servers that drive a browser (e.g. Selenium) or QuickChart / ECharts — they are not the official CHART-IMG REST API. This package wraps chart-img.com similarly to how binance-mcp wraps the Binance SDK.
Related MCP server: RendShot MCP Server
Prerequisites
Node.js 20+
Install
cd chart-img-mcp
pnpm install
cp .env.example .env
# Set CHART_IMG_API_KEY in .env (from chart-img.com)
pnpm run buildRun (stdio)
pnpm start
# or
node dist/index.jsCursor / IDE
Add a server entry (do not commit real keys):
{
"mcpServers": {
"chart-img": {
"command": "node",
"args": ["/absolute/path/to/auto_trade/chart-img-mcp/dist/index.js"],
"env": {
"CHART_IMG_API_KEY": "your-api-key"
}
}
}
}Dev without building:
"command": "pnpm",
"args": ["exec", "tsx", "src/index.ts"],
"cwd": "/absolute/path/to/auto_trade/chart-img-mcp"MCP resources
URI | Purpose |
| Curated agent notes (resolution limits, auth, symbols, v3 caveats, errors) with links into doc.chart-img.com. Fetched via Resources: List / Read in MCP clients. |
Static snippets stay accurate for common bumps; the live manual remains the source of truth for full parameter lists and indicator/drawing schemas.
Tools
Name | Notes |
| Agent-friendly: v2 advanced chart → storage URL with safe defaults (symbol + interval + Volume + max dimensions). Prefer this for typical “show me this chart” requests. |
| GET v1 mini chart → storage JSON ( |
| GET v1 advanced chart → storage JSON |
| POST v2 advanced chart → storage JSON (preferred for large images). Width/height are clamped automatically. |
| POST v2 advanced chart → base64 PNG/JPEG (can be large). Width/height are clamped automatically. |
| POST v2 shared layout → storage JSON |
| POST v2 shared layout → base64 |
| GET v3 exchange id list |
| GET v3 symbols for an exchange (e.g. |
Resolution: v2 chart requests use CHART_IMG_MAX_WIDTH / CHART_IMG_MAX_HEIGHT (default 800×600) to clamp width/height before calling the API, avoiding HTTP 403 when the plan’s max resolution is exceeded. When clamping happens, the JSON response includes _chartimgMcp.dimensionClamps.
Optional v2 headers: tradingviewSessionId + tradingviewSessionIdSign for TradingView subscription data (see CHART-IMG docs).
If CHART_IMG_API_KEY is unset, only chartimg_tools_disabled is registered with a short hint.
Auth (per CHART-IMG)
v1:
Authorization: Bearer <key>(this server uses the header).v2 / v3:
x-api-key: <key>.
Limits
Rate limits, max image dimensions, and storage TTL depend on your CHART-IMG plan — see Request limits in the official docs.
License
MIT
Available Tools
9 toolschartimg_snapshotA
Preferred for agents: one-call TradingView snapshot (v2 advanced → storage). Supply a full symbol (e.g. BINANCE:BTCUSDT.P for Binance perp). Defaults: interval 5m, dark theme, candles, Volume on, size = max allowed (800×600 unless CHART_IMG_MAX_* set). Width/height are clamped automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | candle | |
| theme | No | dark | |
| width | No | Image width; defaults to max allowed (see CHART_IMG_MAX_WIDTH) | |
| format | No | png | |
| height | No | Image height; defaults to max allowed (see CHART_IMG_MAX_HEIGHT) | |
| symbol | Yes | Full TradingView symbol. Examples: BINANCE:BTCUSDT.P (Binance USDT-M perpetual), BINANCE:BTCUSDT (spot), BYBIT:BTCUSDT.P. | |
| interval | No | e.g. 1m, 5m, 15m, 1h, 4h, 1D | 5m |
| extraStudies | No | Extra v2 study objects after Volume, e.g. {"name":"MACD"} | |
| includeVolume | No | ||
| tradingviewSessionId | No | Optional TradingView cookie `sessionid` for subscription data (v2). | |
| tradingviewSessionIdSign | No | Optional TradingView cookie `sessionid_sign` — use with tradingviewSessionId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses defaults (5m, dark, candles, volume on) and automatic width/height clamping. However, it does not explain what 'storage' means in practice, such as where the snapshot is stored, whether existing entries are overwritten, or what the agent receives in return.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the agent-facing recommendation first and defaults grouped efficiently. Every sentence earns its place; there is no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no output schema and no annotations, the description is adequate for basic invocation but incomplete. It covers the critical symbol/defaults/clamping behavior yet omits the return value or storage location, and it doesn't explicitly situate this tool against the sibling v2 advanced chart tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 64%, so the description is not required to fully replace the schema. It adds useful semantics around full-symbol requirements and clamped max dimensions, but it adds little beyond the schema's own defaults and descriptions for parameters like interval, theme, extraStudies, and session cookies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the operation as a 'one-call TradingView snapshot' and specifies the pipeline 'v2 advanced → storage', which distinguishes it from image-only or storage-only siblings. It lacks an explicit verb like 'captures' and doesn't name a specific sibling, but the resource and flow are clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It opens with 'Preferred for agents' and 'one-call', signaling this is the convenient combined path, and instructs the agent to supply a full symbol. It doesn't explicitly state when to use the storage-only or image-only siblings instead, but the usage context is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chartimg_v1_advanced_chart_storageC
CHART-IMG v1: save an advanced chart to public storage; returns JSON with url (GET /v1/tradingview/advanced-chart/storage).
| Name | Required | Description | Default |
|---|---|---|---|
| logo | No | ||
| range | No | Overrides interval: 1D, 5D, 1M, ... | |
| style | No | ||
| theme | No | ||
| width | No | ||
| format | No | ||
| height | No | ||
| symbol | No | ||
| studies | No | Indicators, e.g. ["RSI","MACD","EMA:12"] | |
| interval | No | e.g. 1m, 5m, 1h, 4h, 1D — exchange dependent | |
| timezone | No | ||
| watermark | No | ||
| watermarkSize | No | ||
| watermarkOpacity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full disclosure burden. It does reveal meaningful behavior: the operation mutates state ('save'), the data lands in 'public storage' (a visibility/exposure fact), and it returns JSON with a `url` plus a retrieval endpoint. However, it omits idempotency/overwrite semantics, any auth or rate-limit caveats, and retention or exposure implications — material gaps for a storage-mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence: the verb 'save' and the resource appear immediately, followed by the output contract and endpoint. There is no filler, no repetition of schema content, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 14-parameter mutation tool with no annotations, no output schema, and almost no schema-level parameter descriptions. The description covers the purpose and the return shape but says nothing about how to select or format the numerous inputs. For an agent to invoke it correctly on a realistic call, the parameter semantics gap is critical and unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 21%, so 11 of 14 parameters (logo, style, theme, width, format, height, symbol, timezone, watermark, watermarkSize, watermarkOpacity) have no semantics anywhere. The description adds zero parameter guidance and thus fails to compensate for the low coverage, leaving an agent to guess at the meaning and format of most inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('save an **advanced** chart to public storage') and discloses the output contract (JSON with `url`). The qualifier 'advanced' and the version marker 'v1' implicitly separate it from siblings like chartimg_v1_mini_chart_storage and chartimg_v2_advanced_chart_storage, but no sibling is named explicitly and the boundary against v2/layout variants is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no named alternatives, and no conditions for choosing this over chartimg_v1_mini_chart_storage, chartimg_v2_advanced_chart_storage, or the _image variants. The word 'advanced' provides only an implied scoping signal; an agent must infer the choice from the tool name rather than from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chartimg_v1_mini_chart_storageB
CHART-IMG v1: save a TradingView mini chart to public storage; returns JSON with url (see GET /v1/tradingview/mini-chart/storage).
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | ||
| width | No | ||
| format | No | ||
| height | No | ||
| symbol | No | TradingView symbol, e.g. BINANCE:BTCUSDT | |
| interval | No | Mini chart intervals: 1D, 1M, 3M, 1Y, 5Y, ALL | |
| watermark | No | ||
| watermarkSize | No | ||
| watermarkOpacity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose the core side effect ('save ... to public storage') and the response format ('returns JSON with url'), which is useful. However, it omits behavioral details like whether existing files are overwritten, authentication requirements, storage limits, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the action, destination, return format, and a related retrieval route. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this tool has 9 parameters, no output schema, and no annotations, the description is too thin. It does not explain parameter defaults, which fields are essential for a valid save, or how this storage option differs from the advanced/layout/snapshot siblings. The GET endpoint hint is helpful but does not make the definition complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is very low and the description adds no parameter-level meaning. Only 'symbol' has a schema description; width, height, interval, watermark, watermarkSize, and watermarkOpacity remain unexplained. Theme and format enums help somewhat, but the description does not compensate for the missing semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('save'), the resource ('a TradingView mini chart'), and the destination ('public storage'), and also notes the return type ('JSON with url'). It distinguishes the tool from siblings via the 'mini' qualifier, but it does not explicitly name or contrast any sibling, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the advanced, layout, or snapshot siblings. It mentions a GET endpoint for retrieval, but it never states selection criteria, exclusions, or scenarios where another chart storage tool should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chartimg_v2_advanced_chart_imageA
CHART-IMG v2: POST advanced chart and return base64 image data (POST /v2/tradingview/advanced-chart). Responses can be large; prefer storage tools. Width/height in body are auto-clamped.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for POST /v2/tradingview/advanced-chart. Doc: https://doc.chart-img.com — Example (Binance USDT perp + volume): {"symbol":"BINANCE:BTCUSDT.P","interval":"5m","studies":[{"name":"Volume"}]}. Width/height are **auto-clamped** to CHART_IMG_MAX_WIDTH/HEIGHT (default 800×600) to avoid HTTP 403. | |
| tradingviewSessionId | No | Optional TradingView cookie `sessionid` for subscription data (v2). | |
| tradingviewSessionIdSign | No | Optional TradingView cookie `sessionid_sign` — use with tradingviewSessionId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It does so by revealing the return type, warning about response size, and explaining that width/height are auto-clamped to avoid HTTP 403. It does not cover rate limits or error cases, but the key behavioral traits are visible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and each sentence contributes distinct value: operation and endpoint, return format plus size warning, and clamping behavior. There is no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters, a nested body, and no output schema, the description and schema together cover the essential calling context: endpoint, example body, return format, clamping, and the storage-tool alternative. It stops short of addressing error behavior and rate limits, but nothing critical is missing for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The top-level description adds little parameter meaning beyond echoing the auto-clamping detail already present in the body parameter description. The detailed example and doc link live in the schema rather than the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation (POST advanced chart), a specific resource (/v2/tradingview/advanced-chart), and the concrete output format (base64 image data). It also separates itself from storage-oriented siblings by saying 'prefer storage tools', making the distinction clear even without naming the exact sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear practical directive: responses can be large, so prefer storage tools when that matters. It could be more explicit about when the base64 image version is the right choice versus the storage variant, but the guidance is still actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chartimg_v2_advanced_chart_storageA
CHART-IMG v2: POST advanced chart to storage; returns JSON with hosted image URL (POST /v2/tradingview/advanced-chart/storage). Prefer chartimg_snapshot for common cases. Width/height in body are auto-clamped.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for POST /v2/tradingview/advanced-chart. Doc: https://doc.chart-img.com — Example (Binance USDT perp + volume): {"symbol":"BINANCE:BTCUSDT.P","interval":"5m","studies":[{"name":"Volume"}]}. Width/height are **auto-clamped** to CHART_IMG_MAX_WIDTH/HEIGHT (default 800×600) to avoid HTTP 403. | |
| tradingviewSessionId | No | Optional TradingView cookie `sessionid` for subscription data (v2). | |
| tradingviewSessionIdSign | No | Optional TradingView cookie `sessionid_sign` — use with tradingviewSessionId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral load. It discloses the HTTP method, the hosted-URL return format, and the width/height auto-clamping safeguard that prevents HTTP 403. This goes beyond the schema fields by explaining why the clamp exists, which is genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main description is compact and front-loaded: action, storage target, return type, then routing advice. The auto-clamp behavior appears in both the main description and body schema description, which is a minor redundancy but not harmful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition covers the endpoint, return shape, an example body, optional cookie params, and a key error-avoidance behavior; for a no-output-schema tool that is reasonably complete. It could improve by explicitly stating that a chart body is expected despite the schema listing zero required parameters, so just short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The body property description adds a doc link, a concrete Binance example, and auto-clamp behavior, while the session cookie params are clearly labeled optional. This adds real guidance beyond the raw property definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: POST an advanced chart to storage and get back a hosted image URL. It names the endpoint explicitly and even points users to chartimg_snapshot for common cases, which helps differentiate among the sibling tools. The 'storage' wording and v2 marker make it distinct from image-returning or layout variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Prefer chartimg_snapshot for common cases', which gives a clear alternative and implies this tool is for advanced/stored chart cases. However, it doesn't provide a complete routing to all relevant siblings such as chartimg_v2_advanced_chart_image, so the guidance is good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chartimg_v2_layout_chart_imageA
CHART-IMG v2: POST shared layout chart image as base64 (POST /v2/tradingview/layout-chart/{layoutId}). Prefer storage variant. Width/height in body are auto-clamped.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Optional overrides: symbol, interval, width, height, format, etc. Width/height are auto-clamped like other v2 chart tools. | |
| layoutId | Yes | TradingView shared layout id from the chart URL. | |
| tradingviewSessionId | No | Optional TradingView cookie `sessionid` for subscription data (v2). | |
| tradingviewSessionIdSign | No | Optional TradingView cookie `sessionid_sign` — use with tradingviewSessionId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does mention that the output is base64 and that width/height are auto-clamped, which is useful. But it does not clarify whether the POST has side effects, what the response structure looks like beyond base64, or why the optional session cookies matter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core action, endpoint, and output format. The 'CHART-IMG v2:' prefix and the terse 'Prefer storage variant' add some noise, but overall the definition is efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives the endpoint, method, output format, and an input constraint, but no output schema is present and no annotations exist. It does not describe the response container, error cases, or when to supply the optional session cookies, leaving some important context for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the params are already well documented in the schema. The tool description only repeats the auto-clamping behavior already present in the schema's body description, adding minimal new parameter insight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation (POST), the resource (shared layout chart image), the endpoint, and the output format (base64). The phrase 'Prefer storage variant' also distinguishes it from the sibling storage tool, so an agent can tell what this tool does and what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names a preference for the storage variant, which helps an agent choose between the layout chart image and layout chart storage siblings. However, it does not elaborate on when to use this image tool over other image-generation tools or what specific conditions favor it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chartimg_v2_layout_chart_storageA
CHART-IMG v2: render a shared TradingView layout to storage (POST /v2/tradingview/layout-chart/storage/{layoutId}). Layout must be shared unless session cookies are provided. Width/height in body are auto-clamped.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Optional overrides: symbol, interval, width, height, format, etc. Width/height are auto-clamped like other v2 chart tools. | |
| layoutId | Yes | TradingView shared layout id from the chart URL. | |
| tradingviewSessionId | No | Optional TradingView cookie `sessionid` for subscription data (v2). | |
| tradingviewSessionIdSign | No | Optional TradingView cookie `sessionid_sign` — use with tradingviewSessionId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It discloses the auth requirement ('Layout must be shared unless session cookies are provided') and the auto-clamping behavior for width/height, while the POST endpoint and 'to storage' make the write nature clear. It does not describe the response or storage location in detail, but the key invocation behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences: first the purpose and endpoint, then the most important constraints. Every clause earns its place and there is no redundant elaboration or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations and no output schema, the description covers the endpoint, the required layoutId via the schema, optional overrides, the sharing/cookie prerequisite, and clamping behavior. It does not describe the return value or storage location in detail, but an agent has enough to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents each parameter, including the body overrides and the session cookie fields. The description adds the condition that session cookies can substitute for sharing and reiterates clamping, but does not substantially extend parameter meaning beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('render'), a specific resource ('shared TradingView layout'), and the storage target, reinforced by the explicit POST endpoint. This clearly differentiates it from siblings like chartimg_v2_layout_chart_image, which is about returning an image rather than storing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for shared TradingView layouts and gives a key precondition: 'Layout must be shared unless session cookies are provided.' However, it does not explicitly name alternatives or state when to prefer this tool over sibling storage/image tools, so the guidance is more implied than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chartimg_v3_exchange_listA
CHART-IMG v3: list TradingView exchange ids (GET /v3/tradingview/exchange/list).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does clarify that this is a GET request and a listing operation, implying a non-mutating read, but it does not mention authentication needs, response format, or any usage limits. This is acceptable for a zero-parameter list endpoint but still leaves some behavioral aspects implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or redundancy. It front-loads the core purpose and includes the exact endpoint, giving an agent all the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description is sufficiently complete: it names the resource, the operation, and the endpoint. Since the description explicitly states that it returns exchange ids, the agent has enough context to invoke it correctly and interpret the basic result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides no parameter semantics to clarify. The description appropriately focuses on the resource being listed rather than parameter details, which is the correct baseline for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('list') and a specific resource ('TradingView exchange ids'), making the tool's function immediately clear. It also distinguishes itself from sibling tools like chartimg_v3_exchange_symbols, which handles symbols rather than exchange ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as chartimg_v3_exchange_symbols. It simply states the endpoint without explaining the typical workflow context, prerequisites, or cases where a different tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chartimg_v3_exchange_symbolsA
CHART-IMG v3: symbols for an exchange (GET /v3/tradingview/exchange/{exchangeId}). Note: payload may be empty (plan or API); do not rely on it to discover symbols — use TradingView / CHART-IMG docs (e.g. BINANCE:BTCUSDT.P for Binance USDT perpetual).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter: spot, swap, futures, index, ... | |
| symbol | No | Filter by symbol substring | |
| exchangeId | Yes | Lowercase exchange id in the URL path, e.g. binance → GET .../exchange/binance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden; it deserves credit for the explicit warning that payload may be empty depending on plan/API and that it cannot be relied on for symbol discovery. But it omits the response shape, error cases, and any auth or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two compact sentences: purpose/endpoint up front, then a crucial caveat. There is no filler, redundancy, or unnecessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents all parameters and the note covers an important failure mode, but because there is no output schema or annotations, an agent is left without a clear picture of the non-empty response shape or how returned symbols map onto the documented formula. Adequate, with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already documented; the description only adds an example symbol format (BINANCE:BTCUSDT.P) rather than clarifying type or exchangeId beyond the schema. This is baseline utility, not added semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool returns ('symbols for an exchange') and pins it to a concrete endpoint (GET /v3/tradingview/exchange/{exchangeId}), which acts as the verb. This is clearly distinct from sibling tools such as chartimg_v3_exchange_list and the chart/storage tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call this when you need the symbol list for one exchange. However, the description never names sibling alternatives or conditions, and the caveat directs users to docs rather than explaining when to choose this tool over exchange_list or others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The exchange and layout tools are reasonably distinct, but v1_advanced_chart_storage, v2_advanced_chart_storage, and chartimg_snapshot all cover saving advanced charts to storage, creating real overlap. Versioning and 'prefer snapshot' guidance help, but agents may still misselect among them.
Most tools follow a predictable chartimg_{vX}_{feature}_{output} pattern, which makes versions and storage/image output modes easy to identify. chartimg_snapshot breaks the pattern, but it is the only notable deviation.
Nine tools is a reasonable size for a chart-image service, covering snapshots, storage, image output, and exchange metadata. The count is slightly padded by redundant v1/v2/snapshot storage variants, but still within an appropriate range.
Core workflows are covered: one-call snapshot, advanced and layout charts, storage URLs, base64 output, and exchange lookup. Minor gaps exist such as no direct mini-chart image output and the exchange-symbols payload being unreliable, but agents can work around these.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.
Screenshots, PDFs and Markdown from any URL or HTML for AI agents, via the SnapForge API
Screenshot any URL as a hosted image. No local browser; handles bot walls and full-page captures.
Screenshot any website with one API call PNG, JPEG, WebP, or PDF. Custom viewports, device emulation, ad blocking, dark mode, and smart caching.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to generate chart visualizations by interacting with QuickChart API, allowing users to create and retrieve chart image links through natural language requests.1244Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to generate images from HTML/CSS, capture URL screenshots, and manage reusable templates through the RendShot API. Provides tools for rendering visual content programmatically within AI workflows.14
- AlicenseAqualityDmaintenanceEnables AI agents to generate and render charts as PNG, SVG, or WebP images directly in chat interfaces. Supports Chart.js specifications and natural language descriptions for creating visualizations from data.3341MIT

site-shot-mcpofficial
AlicenseBqualityAmaintenanceEnables AI agents to capture full-page or viewport screenshots of any web page with options for ad removal, cookie banner blocking, and proxy country selection.21213MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/umer2001/chart-img-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server