tradingview-mcp-server
The tradingview-mcp-server is an unofficial MCP server and CLI tool that connects AI assistants (like Claude) to TradingView's market screener API, enabling AI-powered investment research across stocks, forex, crypto, and ETFs.
Screening & Filtering
Screen stocks, forex, crypto, and ETFs using 100+ fundamental and technical fields (P/E, RSI, ROE, Piotroski F-Score, Graham Number, ATR, ADX, etc.) across 30+ global markets
Apply 18 filter operators including
greater,less,in_range,crosses_above/crosses_below(golden/death cross),above_percent,below_percent,has, andemptyCross-field comparisons (e.g., SMA50 crosses_above SMA200)
Pre-built Strategies & Discovery
Access 14 preset screening strategies covering value, growth, quality, GARP, momentum, dividend growth, breakouts, macro monitoring, and more
Discover all available screener fields by asset type and category (fundamental, technical, performance)
Retrieve market metadata for any screener (e.g., america, uk, germany)
Symbol Lookup & Search
Look up specific tickers and indexes (e.g.,
TVC:SPX) with comprehensive metrics (ATH, 52-week highs/lows, etc.) for up to 100 symbolsSearch for exact TradingView symbol identifiers by name, ticker, or description
Technical Analysis
Get TradingView-style buy/sell/neutral TA summaries across multiple timeframes (1m to 1M) for up to 50 symbols
Rank symbols by weighted TA scores to identify the strongest technical setups
Investor Workflows
Supports advanced workflows via Claude commands: due diligence reports, peer comparisons, sector rotation analysis, portfolio risk assessment, and macro dashboards
Output & Configuration
Dual mode: MCP server (for AI integration) or standalone CLI (
tradingview-cli)Output results as JSON, CSV, or human-readable tables
Configurable caching (
CACHE_TTL_SECONDS) and rate limiting (RATE_LIMIT_RPM)
Provides tools for market screening across stocks, forex, crypto, and ETFs, symbol discovery, technical analysis summaries, and pre-built investment strategies via the TradingView API.
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., "@tradingview-mcp-serverscreen stocks using the quality_stocks preset"
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.
Unofficial MCP server and CLI for TradingView's market screener API — stocks, forex, crypto & ETFs.
AI-powered investment research for patient, systematic investors.
Two modes, one package: Use as an MCP server with Claude, or as a standalone CLI tool that pipes to jq, csvtool, or any Unix workflow.
TradingView MCP Server
Table of Contents
Related MCP server: J-SQUAD TradingView MCP Combined
Demo
Features
Dual mode: MCP + CLI — use as an MCP server with Claude or as a standalone
tradingview-clicommand100+ screener fields including Piotroski F-Score, Altman Z-Score, Graham Number, analyst consensus, and dividend growth streaks
18 filter operators including
crosses_above/crosses_belowfor golden cross detection14 pre-built strategies covering value, growth, quality, GARP, deep value, breakouts, compounders, and macro monitoring
Symbol discovery — search for TradingView symbols by name, ticker, or description via
search_symbolsTechnical analysis — TradingView-style buy/sell/neutral summaries and multi-timeframe TA ranking via
get_ta_summaryandrank_by_taMarket metadata — discover available screener fields per market via
get_market_metainfo9 investor workflow commands — from
/due-diligenceto/macro-dashboard— built on top of the MCP toolsMulti-asset coverage — stocks, ETFs, forex, and crypto with asset-specific field discovery via
list_fieldsSmart caching and rate limiting — configurable TTL and requests-per-minute to keep usage responsible
Installation
Option 1: NPM (Recommended)
npm install -g tradingview-mcp-serverOption 2: Clone Repository (includes demo commands)
git clone https://github.com/fiale-plus/tradingview-mcp-server.git
cd tradingview-mcp-server
npm install
# Quick setup — creates project-level MCP config
./local-setup.sh # Linux/Mac
local-setup.bat # Windows
# Restart Claude Code and try: /market-regime or /run-screenerCLI Usage
After installing the package, the tradingview-cli command is available globally:
# List all pre-built screening strategies
tradingview-cli presets
# Screen stocks using a preset
tradingview-cli screen stocks --preset quality_stocks --limit 10
# Or load a strict versioned JSON preset file
tradingview-cli screen stocks --preset-file ./my-preset.json --limit 10
# Screen with custom filters
tradingview-cli screen stocks --filters '[{"field":"price_earnings_ttm","operator":"less","value":15}]'
# Look up specific symbols (indexes, stocks)
tradingview-cli lookup NASDAQ:AAPL TVC:SPX NYSE:MSFT
# Discover available screening fields
tradingview-cli fields --asset-type stock --category fundamental
# Search for a symbol
tradingview-cli search apple --exchange NASDAQ
# Get market metadata
tradingview-cli metainfo america --fields name,close,market_cap_basic
# Technical analysis summary
tradingview-cli ta NASDAQ:AAPL NASDAQ:NVDA
# Rank symbols by TA score
tradingview-cli rank-ta NASDAQ:AAPL NASDAQ:MSFT NASDAQ:NVDA --timeframes 60,1D --weights '{"1D":3}'Output Formats
# JSON (default) — pipe to jq
tradingview-cli screen stocks --preset value_stocks | jq '.stocks[].name'
# CSV — pipe to file or csvtool
tradingview-cli screen stocks --preset value_stocks -f csv > results.csv
# Table — human-readable terminal output
tradingview-cli screen stocks --preset value_stocks -f tableCLI Commands
Command | Description |
| Screen stocks by fundamental/technical criteria |
| Screen forex pairs |
| Screen cryptocurrencies |
| Screen ETFs |
| Look up specific symbols by ticker |
| Search for symbols by name, ticker, or description |
| Get metadata about a market screener |
| Get technical analysis summary for symbols |
| Rank symbols by weighted TA scores |
| List available screening fields |
| Get a preset strategy's details |
| List all available presets |
Screen Options
Flag | Description |
| Filter array as JSON string |
| Load a built-in preset (exclusive with |
| Load a strict |
| Market to screen (repeatable, stocks/etf only) |
| Sort by field |
| Sort direction |
| Max results (1-200, default 20) |
| Columns to include (repeatable) |
| Output: |
Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json on Mac:
{
"mcpServers": {
"tradingview": {
"command": "npx",
"args": ["-y", "tradingview-mcp-server"]
}
}
}Claude Code
Create .mcp.json in your project root:
{
"mcpServers": {
"tradingview": {
"command": "npx",
"args": ["-y", "tradingview-mcp-server"]
}
}
}Enable in .claude/settings.local.json:
{
"enableAllProjectMcpServers": true
}Environment Variables
Variable | Default | Description |
|
| How long to cache API responses. Valid range: |
|
| Maximum API requests per minute. Valid range: |
Invalid values fail before the MCP server starts. These limits protect TradingView's public endpoints; they do not provide a TradingView quota or guarantee availability.
Upstream limitations
This package is an unofficial client of TradingView's public scanner and symbol-search endpoints. The endpoints are unauthenticated, can change or reject traffic without notice, and may return delayed or incomplete market data. The server does not provide historical data, brokerage execution, alerts, or a TradingView data entitlement.
MCP Tools
The MCP server exposes twelve tools to any compatible MCP client. The Claude Code commands listed later are repository-local workflows built on top of these tools; they are not additional MCP tools.
Tool | Description | Key Parameters |
| Screen stocks by fundamental and technical criteria |
|
| Screen forex pairs by technical criteria |
|
| Screen cryptocurrencies by market and technical criteria |
|
| Screen ETFs by performance and technical criteria |
|
| Direct lookup by ticker — required for indexes like |
|
| Discover available fields for any asset type |
|
| Search for symbols by name, ticker, or description |
|
| Get metadata about a market screener and available fields |
|
| TradingView-style technical analysis summary (buy/sell/neutral) |
|
| Rank symbols by weighted TA scores across timeframes |
|
| Retrieve a pre-configured screening strategy by key |
|
| List all available preset strategies with descriptions | — |
Filter Structure
All screening tools accept filters in this shape:
{ "field": "return_on_equity", "operator": "greater", "value": 15 }
{ "field": "RSI", "operator": "in_range", "value": [40, 65] }
{ "field": "SMA50", "operator": "crosses_above", "value": "SMA200" }
{ "field": "exchange", "operator": "in_range", "value": ["NASDAQ", "NYSE"] }Cross-field comparison (second example above) enables golden cross / death cross detection without needing a value on the right-hand side.
Symbol Discovery
Use search_symbols to find exact TradingView identifiers before screening:
// Search for Apple
{ "query": "apple" }
// Narrow by exchange and type
{ "query": "bitcoin", "exchange": "BINANCE", "asset_type": "crypto" }Returns normalized symbols with exchange, type, and currency.
Market Metainfo
Use get_market_metainfo to discover available fields for a market:
// All fields for US stocks
{ "market": "america" }
// Specific fields only
{ "market": "america", "fields": ["name", "close", "market_cap_basic"] }
// Raw passthrough for debugging
{ "market": "america", "mode": "raw" }Technical Analysis Summary
Use get_ta_summary for TradingView-style buy/sell/neutral labels:
// Single symbol, default timeframes (60m, 4H, 1D, 1W)
{ "symbols": ["NASDAQ:AAPL"] }
// Multiple symbols with custom timeframes
{ "symbols": ["NASDAQ:AAPL", "NASDAQ:NVDA"], "timeframes": ["60", "240", "1D", "1W"] }Returns labels (strong_buy, buy, neutral, sell, strong_sell) plus raw scores based on oscillators and moving averages.
TA Ranking
Use rank_by_ta to compare symbols by weighted technical alignment:
// Equal-weight ranking
{ "symbols": ["NASDAQ:AAPL", "NASDAQ:MSFT", "NASDAQ:NVDA"] }
// Weight daily timeframe 3x more
{ "symbols": ["NASDAQ:AAPL", "NASDAQ:MSFT"], "weights": { "1D": 3, "1W": 2 } }Returns ranked list with per-timeframe breakdown, weighted average score, and structured metadata. See Response metadata and partial results below.
Response metadata and partial results
Screening, lookup, search, market metainfo, and TA/ranking responses include a metadata object:
{
"retrieved_at": "2026-08-16T00:00:00.000Z",
"source": "https://scanner.tradingview.com/global/scan",
"cache_hit": false,
"requested_count": 20,
"returned_count": 18,
"missing_symbols": []
}retrieved_atis the source-data retrieval time; cache hits preserve it so callers can assess data age.sourceidentifies the public endpoint used.cache_hitdistinguishes an in-memory response from a new upstream request.requested_countandreturned_countdescribe the requested items or limit and rows returned; consultunavailable_symbolsandexcluded_symbolsfor usable TA coverage.missing_symbolslists requested symbols absent from an upstream response. TA responses may also includeunavailable_symbolswhen symbols exist but have no usable score.rank_by_taadditionally returnsexcluded_symbolswithmissing_symbolorunavailable_tareasons. Missing data is never converted into a neutral score.
list_fields, get_preset, and list_presets return their documented collections without this metadata wrapper. Raw metainfo mode preserves the upstream payload under raw rather than normalizing it.
Screening Fields
Use list_fields to browse fields. Pass asset_type to get tailored lists for each asset class.
Stocks (104 fields in the built-in stock catalog)
Valuation
price_earnings_ttm, price_book_fq, price_sales_current, enterprise_value_current, enterprise_value_ebitda_ttm, enterprise_value_to_ebit_ttm, price_earnings_growth_ttm (PEG), ebitda
Profitability & Returns
return_on_equity, return_on_assets, return_on_invested_capital_fq, gross_margin_ttm, operating_margin_ttm, net_margin_ttm, after_tax_margin, pre_tax_margin_ttm, free_cash_flow_margin_ttm
Growth
total_revenue_yoy_growth_ttm, earnings_per_share_diluted_yoy_growth_ttm, revenue_per_share_ttm, total_revenue, net_income, earnings_per_share_diluted_ttm
Balance Sheet
debt_to_equity, total_debt, total_assets, current_ratio, free_cash_flow_ttm, free_cash_flow_fq
Dividends
dividend_yield_recent, dividends_yield_current, dividend_payout_ratio_ttm, continuous_dividend_payout_years, dps_yoy_growth_ttm
Composite Scores (unique differentiators)
Field | Description |
| 0–9 financial strength composite. Score ≥7 = strong, ≤2 = weak |
| Bankruptcy predictor. >2.99 = safe, 1.81–2.99 = grey zone, <1.81 = distress |
| Intrinsic value = sqrt(22.5 × EPS × BVPS). Price below = undervalued |
Analyst Data
Recommend.All (composite −1 to +1), analyst_recommendations_buy, analyst_recommendations_sell, analyst_recommendations_neutral, price_target_average, price_target_high, price_target_low
Technical
RSI, SMA50, SMA200, EMA10, VWAP, ATR, ADX, Volatility.M, beta_1_year, beta_3_year, beta_5_year, Recommend.MA, Recommend.Other
Performance & Price Levels
close, change, volume, average_volume_90d_calc, average_volume_30d_calc, relative_volume_10d_calc, Perf.5D, Perf.W, Perf.1M, Perf.3M, Perf.6M, Perf.Y, Perf.YTD, Perf.3Y, Perf.5Y, Perf.10Y, Perf.All, price_52_week_high, price_52_week_low, all_time_high, all_time_low, High.All
Metadata
sector, industry, exchange, market, is_primary, indexes, fundamental_currency_code, earnings_release_next_trading_date_fq
ETFs
expense_ratio, shares_outstanding, dividends_yield_current, close, volume, Perf.W through Perf.Y, RSI, ATR
Crypto
close, change, volume, market_cap_basic, RSI, ATR, Volatility.M, Perf.W through Perf.Y
Forex
close, change, volume, RSI, ATR, ADX, Volatility.D, SMA50, SMA200, Perf.W through Perf.3M
Pre-built Strategies
Retrieve any preset with get_preset or browse all with list_presets.
Key | Name | Style | What It Screens For |
| Quality Stocks (Conservative) | Quality | ROE >12%, low debt, low volatility, golden cross |
| Value Stocks | Value | P/E <15, P/B <1.5, ROE >10% |
| Dividend Stocks | Income | Yield >3%, large cap, D/E <1.0 |
| Momentum Stocks | Momentum | RSI 50–70, golden cross, 1M performance >5% |
| Growth Stocks | Growth | ROE >20%, operating margin >15% |
| Quality Growth Screener | Quality + Growth | 16 filters: ROE, margins, revenue growth, technicals, exchange filter |
| Quality Compounders (Munger/Buffett) | Compounder | Gross margin >40%, ROIC >15%, FCF margin >15%, growing revenue |
| GARP (Growth at Reasonable Price) | GARP | PEG <2, ROE >15%, revenue growth >10% |
| Deep Value (Contrarian) | Deep Value | P/E <10, P/B <1.5, positive FCF |
| Breakout Scanner | Momentum | Near 52-week high, golden cross, RSI 50–75, above-average volume |
| Earnings Momentum | Earnings | EPS growth YoY >20%, revenue growth >10%, RSI 45–70 |
| Dividend Growth (Compounding Income) | Dividend Growth | Yield 1–6%, payout ratio <70%, positive FCF, consecutive years paying |
| Macro Asset Monitor | Macro | VIX, DXY, 10Y yield, Gold, WTI Oil, Bitcoin — direct symbol lookup |
| Global Market Indexes | Market Regime | 13 global indexes (US, Europe, Asia, Nordic) with ATH and performance data |
Versioned preset files
The CLI also accepts a strict, portable JSON preset:
tradingview-cli screen stocks --preset-file ./presets/quality.json --limit 20The file must use schemaVersion: 1, include non-empty name and description, and define exactly one of filters or symbols. Optional keys are markets, sort_by, sort_order, limit (1–200), and columns; unknown keys, invalid operators, and invalid value shapes are rejected. --preset and --preset-file cannot be combined. Files are limited to 1 MiB. The CLI prints the file basename and SHA-256 to stderr after a successful load.
{
"schemaVersion": 1,
"name": "Quality with a tighter range",
"description": "A reproducible quality screen",
"filters": [
{ "field": "return_on_equity", "operator": "greater", "value": 15 }
],
"markets": ["america"],
"sort_by": "market_cap_basic",
"sort_order": "desc",
"limit": 20,
"columns": ["name", "close", "return_on_equity"]
}Investor Commands
The repository ships with 9 ready-to-use Claude Code commands in .claude/commands/. Clone the repo and run ./local-setup.sh to activate them.
Command | Usage | What It Does |
|
| Analyzes Nasdaq, OMX Stockholm 30, and Nikkei 225 vs ATH. Shows drawdown, RSI, and bull/correction/bear regime status |
|
| Interactive wizard to pick a preset strategy, run it, display a compact table, and save results to CSV |
|
| Structured due diligence report: valuation, quality, growth, balance sheet, dividends, technicals, performance, and checklist assessment |
|
| Side-by-side comparison of 2–5 stocks across valuation, quality, growth, and momentum with category rankings |
|
| Screens top stocks in all 11 GICS sectors, calculates average performance, assigns Accelerating/Decelerating signals, and recommends a preset |
|
| Determines current market regime (bull/correction/bear) from SPX, then auto-selects and runs the most appropriate preset |
|
| Multi-asset snapshot: US and global indexes, VIX, DXY, 10Y yield, Gold, Oil, BTC with auto-interpreted macro signals |
|
| Portfolio concentration risk, sector breakdown, beta analysis, and diversification recommendations |
|
| Data-driven investment thesis with bull/bear case, key metrics table, technical setup, entry/exit framework, and monitoring checklist |
Operators
All screening tools support the following operators in filter conditions:
Operator | Description | Example |
| Field > value |
|
| Field < value |
|
| Field >= value |
|
| Field <= value |
|
| Exact match |
|
| Not equal |
|
| Value within |
|
| Value outside range or list |
|
| Field crosses the reference (either direction) |
|
| Field crosses above the reference |
|
| Field crosses below the reference |
|
| Text contains substring |
|
| Field is N% above a reference field |
|
| Field is N% below a reference field |
|
| Field contains any listed value |
|
| Field contains none of the listed values |
|
| Field has no value |
|
| Field has a value |
|
String fields (sector, exchange, industry, market) use equal for single values and in_range for lists.
Development
npm install # Install dependencies
npm run build # Compile TypeScript to dist/
npm test # Run all tests
npm run test:watch # Run tests in watch mode
npm run dev # Run directly with tsx (no build step)Run a single test file:
npm test -- fields.test.tsAfter making changes, restart Claude to reload the MCP server (no hot-reload).
Adding a New Field
Add to
STOCK_FIELDSinsrc/tools/fields.tswithname,label,category,type,descriptionOptionally add to
EXTENDED_COLUMNSinsrc/tools/screen.ts
Adding a New Preset
Add to PRESETS in src/resources/presets.ts with filters, markets, sort_by, sort_order, and optional columns.
Adding a New Tool
Create implementation in
src/tools/Register in
ListToolsRequestSchemahandler insrc/index.tsAdd case in
CallToolRequestSchemahandler
Disclaimer
This is an unofficial tool. It is not affiliated with, endorsed by, or connected to TradingView. It uses TradingView's public scanner API, which may change without notice. No authentication is required; access level is the same as the TradingView website without login.
Not investment advice. Screening results are for informational and educational purposes only. All investment decisions are your sole responsibility. Past performance does not indicate future results. Consult qualified financial advisors before making investment decisions.
This software is provided "AS IS" under the MIT License, without warranty of any kind.
Links
Smarter screens, not faster trades.
Built with the Model Context Protocol
Available Tools
12 toolsget_market_metainfoARead-onlyIdempotent
Get metadata about a TradingView market screener, including available fields and their types. Useful for discovering what fields can be used in screening queries.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Output mode: 'summary' for normalized output (default), 'raw' for passthrough. | |
| fields | No | Optional: specific field names to look up. If omitted, returns all available fields. | |
| market | Yes | Market to get metainfo for (e.g., 'america', 'uk', 'germany', 'france') |
Output Schema
| Name | Required | Description |
|---|---|---|
| market | Yes | |
| metadata | Yes | |
| metainfo | No | |
| requested_fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds the detail that metadata includes field names and types, which is more about content than behavior. No additional behavioral traits like rate limits or auth are disclosed, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose and followed by a practical use case. Every word earns its place with no redundancy or fluff.
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?
With a full output schema and annotations covering safety and idempotency, the description is sufficiently complete for an agent to select and invoke the tool. It adds useful context about how the metadata relates to screening queries, which is not in the schema.
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 each parameter is well-documented in the schema. The description doesn't add meaningful parameter-level detail beyond the schema, so the 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 clearly states the tool gets metadata about a TradingView market screener, including available fields and types. It distinguishes from siblings by specifying 'market screener' context, though it doesn't explicitly contrast with similar tools like list_fields.
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 a clear usage scenario: 'Useful for discovering what fields can be used in screening queries.' This gives context for when to use it, but doesn't explicitly exclude alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presetARead-onlyIdempotent
Get a pre-configured screening strategy. Returns filter configuration for the strategy.
Available presets:
quality_stocks: High-quality low-volatility stocks (conservative)
value_stocks: Undervalued stocks with low P/E and P/B
dividend_stocks: High dividend yield with consistent payout
momentum_stocks: Strong recent performance and technical momentum
growth_stocks: High-growth companies with expanding revenue/earnings
quality_growth_screener: Comprehensive quality+growth screen with technical filters
market_indexes: Global market indexes for regime analysis (use lookup_symbols)
| Name | Required | Description | Default |
|---|---|---|---|
| preset_name | Yes | Key of preset to retrieve. See tool description for available keys. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description does not contradict these. It adds useful context by enumerating preset meanings and by drawing the boundary for market_indexes ('use lookup_symbols'), while clearly stating the tool returns filter configuration rather than executing a screen. This is more than a bare repeat of the annotations, though no deeper side-effect/rate-limit/auth notes are provided.
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 front-loaded with a one-sentence purpose, followed by a scannable bullet list of presets. Each bullet is compact and directly functional—there is no fluff, redundant text, or padding. The length is justified by the need to enumerate the presets.
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 simple single-parameter tool with read-only annotations and an output schema, the description is fully sufficient. It provides the complete set of accepted preset keys, each with descriptive context, and even supplies a cross-reference for the market_indexes edge case. Nothing material is missing for correct 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 coverage is 100%, and the schema itself refers to the tool description for available preset keys. The description fully compensates by listing all valid preset_name values and explaining their screening focus, which makes parameter selection straightforward and unambiguous.
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 an explicit verb and resource: 'Get a pre-configured screening strategy' and further clarifies the return value ('Returns filter configuration'). The phrase 'pre-configured screening strategy' distinguishes it from screen execution tools like screen_stocks, and the preset list makes the exact scope of the tool obvious.
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?
Usage context is implied by the listing of available presets and by the note to 'use lookup_symbols' for market_indexes, but there is no explicit explanation of when to use get_preset versus alternatives such as list_presets. The description does not state exclusions or recommend a workflow like 'retrieve a preset, then apply it to screen_stocks.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ta_summaryARead-onlyIdempotent
Get TradingView-style technical analysis summary for one or more symbols across multiple timeframes. Returns buy/sell/neutral labels and recommendation scores based on oscillators and moving averages.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Array of ticker symbols (e.g., ['NASDAQ:AAPL', 'NASDAQ:NVDA']). Maximum 50 symbols. | |
| timeframes | No | Timeframes for TA analysis. Valid: '1', '3', '5', '15', '30', '45', '60', '120', '180', '240', '1D', '1W', '1M'. Default: ['60', '240', '1D', '1W'] | |
| include_components | No | Include oscillator and moving average scores breakdown (default: true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbols | Yes | |
| metadata | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and idempotent behavior, and the description adds useful context by specifying the return content (labels, scores, oscillator/MA basis) and the multi-symbol/multi-timeframe scope. It does not contradict the annotations.
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?
Two concise, front-loaded sentences with no redundant or promotional language. Every clause adds information about scope, return format, or the basis of the scores.
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 the rich input schema, output schema, and read-only/idempotent annotations, the description is largely complete for a summary API. It omits explicit guidance on when to choose this over rank_by_ta or screen_stocks, but that is more of a usage-guideline gap than a completeness gap.
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 input schema already documents all three parameters with defaults, valid values, and maximum symbol count, so the description adds minimal parameter-level detail. Mention of oscillators and moving averages links loosely to include_components but does not exceed the schema's coverage.
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 tool returns TradingView-style buy/sell/neutral labels and recommendation scores for one or more symbols across multiple timeframes. It is specific about the resource and output, though it does not explicitly contrast itself with sibling tools like rank_by_ta.
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?
Usage context is implied: use when you need a technical analysis summary for specified symbols. There is no explicit when-to-use statement, exclusions, or guidance on when to prefer this over alternatives like rank_by_ta or screen_stocks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fieldsARead-onlyIdempotent
List available fields for filtering and display. Use this to discover what fields you can filter and sort by.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter fields by category. If omitted, returns all categories | |
| asset_type | No | Type of asset. Default: 'stock' |
Output Schema
| Name | Required | Description |
|---|---|---|
| fields | Yes | |
| category | Yes | |
| asset_type | Yes | |
| field_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is clear. The description adds that fields are intended for filtering and display, which is useful context, but it does not add much beyond that. No contradiction 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The purpose and usage are front-loaded, and every word adds value.
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 the simple two-parameter schema with full descriptions, an output schema, and safe annotations, the description fully covers what an agent needs to understand 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 description coverage is 100% with both parameters fully documented via descriptions and enums. The tool description adds no additional semantics beyond what the schema provides, so baseline 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 clearly states the tool lists available fields for filtering and display, distinguishing it from sibling screening and lookup tools. The verb 'List' and resource 'fields' are specific and unambiguous.
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 to use this to discover filterable/sortable fields, providing clear when-to-use context. However, it does not mention when not to use or name alternative tools, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsARead-onlyIdempotent
List all available preset screening strategies. Returns key, name, and description for each preset. Use the key with get_preset.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| presets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and idempotentHint, so the description does not need to reaffirm safety. It adds no behavioral detail beyond what is in the annotations (e.g., pagination or sorting), but the tool is simple and non-destructive, so this is acceptable.
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 concise sentences, front-loaded with the purpose. Every sentence adds value: the first defines the operation, the second explains the return and usage.
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 the tool has no parameters)Skip the description fully explains what is returned and how to consume the results. The presence of an output schema covers return details, and the description means the tool is complete for its simple purpose.
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 takes no parameters, and the schema has none. The description effectively covers the only relevant aspect—what the list contains and how to use the entries. The baseline for 0 params is 4, and the description meets that.
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 'List all available preset screening strategies' and specifies what each entry contains (key, name, description). It differentiates from siblings by mentioning the presets and how to use them with get_preset.
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 instructs to use the returned key with get_preset, providing a clear follow-up action. It does not explicitly exclude other contexts, but the guidance is sufficient for a simple enumeration tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_symbolsARead-onlyIdempotent
Look up specific symbols (stocks, indexes, ETFs) by ticker. Use this for direct symbol lookup including market indexes like TVC:SPX, TVC:DJI, OMXSTO:OMXS30 that cannot be found via screening. Returns comprehensive data including ATH, 52-week highs/lows.
| Name | Required | Description | Default |
|---|---|---|---|
| columns | No | Optional: specific columns to include. Default: name, close, change, volume, market_cap_basic, all_time_high, all_time_low, price_52_week_high, price_52_week_low. | |
| symbols | Yes | Array of ticker symbols (e.g., ['TVC:SPX', 'NASDAQ:AAPL', 'OMXSTO:OMXS30']). Maximum 100 symbols. |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbols | Yes | |
| metadata | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is established. The description adds valuable behavioral context by stating it 'Returns comprehensive data including ATH, 52-week highs/lows,' which is useful for output expectations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first clearly states purpose, second provides usage guidance and return info. Front-loaded and concise, with zero redundant phrasing. Every sentence serves a distinct purpose.
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?
With only 2 parameters (fully described in schema), an output schema, and strong annotations, the description covers purpose, usage, and return data. It also addresses the indexing edge case, providing enough context for an agent to decide appropriately. Complete for its scope.
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%, with both parameters (symbols and columns) fully described in the schema via descriptions. The description itself adds no parameter-level detail. Baseline of 3 is appropriate since the schema carries the burden.
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 ('Look up specific symbols by ticker') and the resource (stocks, indexes, ETFs). It explicitly distinguishes from screening tools by noting it handles indexes not found via screening, providing context on scope.
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?
Explicit guidance: 'Use this for direct symbol lookup including market indexes... that cannot be found via screening.' This gives specific when-to-use context and implicitly contrasts with screening tools. Alternative search_symbols is not mentioned, but the direct lookup focus is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_by_taARead-onlyIdempotent
Rank symbols by weighted technical analysis scores across timeframes. Useful for comparing which symbols have the strongest overall TA signals.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Array of ticker symbols to rank (e.g., ['NASDAQ:AAPL', 'NASDAQ:MSFT', 'NASDAQ:NVDA']). Maximum 50. | |
| weights | No | Per-timeframe weights for ranking. Unspecified timeframes default to weight 1. Example: {"1D": 3, "1W": 2} | |
| timeframes | No | Timeframes for TA analysis (default: ['60', '240', '1D', '1W']) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ranked | Yes | |
| weights | Yes | |
| metadata | Yes | |
| timeframes | Yes | |
| excluded_symbols | Yes | |
| requested_symbols | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to restate safety. It adds modest value by explaining the weighting/timeframe methodology, but does not disclose additional behavioral traits such as output ordering or limitations beyond what schemas/annotations provide.
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?
Two short, front-loaded sentences deliver the core action and purpose without filler. Every word earns its place, and the structure makes the tool's function immediately clear.
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 the detailed input schema, annotations, and output schema, the description provides sufficient context for an agent to understand the tool's purpose and main usage. The only minor gap is a lack of direct differentiation from sibling screening tools, but this is not a serious omission.
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 input schema already documents all three parameters. The description's mention of 'weighted' and 'across timeframes' reinforces the role of weights and timeframes, but it adds no parameter-specific detail beyond what the schema already provides.
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?
Description uses a specific verb ('Rank') and clearly identifies the resource ('symbols') and the method ('weighted technical analysis scores across timeframes'). It also states the intended comparison use case ('strongest overall TA signals'), which helps distinguish it from sibling screening/lookup 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?
Provides clear context: useful for comparing which symbols have the strongest overall TA signals. It does not explicitly name alternative tools or exclusions, but the stated use case makes it reasonably clear when to use this ranking tool versus the sibling screen/lookup tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_cryptoARead-onlyIdempotent
Screen cryptocurrencies based on technical and market criteria. Returns cryptocurrencies matching the specified filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return (1-200). Default: 20 | |
| columns | No | Optional: specific columns to include in results. If not provided, uses default columns. | |
| filters | No | Array of filter conditions to apply | |
| sort_by | No | Field to sort results by. Default: 'market_cap_basic' | |
| sort_order | No | Sort order. Default: 'desc' |
Output Schema
| Name | Required | Description |
|---|---|---|
| metadata | Yes | |
| total_count | Yes | |
| cryptocurrencies | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, and the description does not add meaningful behavioral context beyond restating that it screens and returns results. It provides no additional details about default limits, result structure, rate limits, or any side effects, which would have added value on top of the annotations.
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 immediately communicates the tool's purpose and primary output. Every word earns its place; there is no fluff or redundancy.
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 a rich input schema with examples and a dedicated output schema, the description need not explain mechanics. It correctly identifies the tool's domain and filter-based behavior, which is sufficient context for an agent to select the tool. The only minor gap is the lack of explicit guidance on sorting or default columns, but these are covered in the schema.
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 schema fully documents parameters like filters, limit, columns, sort_by, and sort_order. The description mentions 'specified filters' but adds no parameter-specific meaning, which matches the baseline of 3 for high schema coverage.
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 ('Screen') with an explicit resource ('cryptocurrencies') and scope ('technical and market criteria'). It also states the outcome ('Returns cryptocurrencies matching the specified filters'), clearly distinguishing it from sibling tools like screen_stocks and screen_forex by asset class.
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 clearly implies this tool is for screening cryptocurrency assets, but it does not explicitly state when to use it over alternatives or provide exclusion criteria. It lacks any mention of sibling tools such as screen_stocks or rank_by_ta, so guidance on when-not-to-use is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_etfARead-onlyIdempotent
Screen ETFs (Exchange-Traded Funds) based on performance and technical criteria. Returns ETFs matching the specified filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return (1-200). Default: 20 | |
| columns | No | Optional: specific columns to include in results. If not provided, uses minimal default columns. | |
| filters | No | Array of filter conditions to apply | |
| markets | No | Markets to scan. Valid values: america, uk, germany, france, italy, spain, sweden, norway, denmark, finland, brazil, india, japan, hongkong, china, australia, canada, turkey, uae, and 30+ more. Default: ['america'] | |
| sort_by | No | Field to sort results by. Default: 'market_cap_basic' | |
| sort_order | No | Sort order. Default: 'desc' |
Output Schema
| Name | Required | Description |
|---|---|---|
| etfs | Yes | |
| metadata | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety expectations. The description adds only that the tool returns ETFs matching filters, which is basic behavior. No additional behavioral traits (e.g., pagination, rate limits, data ties) are disclosed, but with this tool's simple read-only nature, a 3 is appropriate.
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 concise sentences that immediately state the tool's purpose and return behavior. No filler or redundant details; it 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?
For a read-only screening tool with a fully documented input schema and an output schema present, the description is complete enough. It conveys the core purpose and result, while the schema covers parameter details and the output schema covers return structure.
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 input schema already documents all parameter meanings and valid values. The description's phrase 'performance and technical criteria' provides a high-level hint but doesn't add details beyond the schema, so the baseline 3 applies.
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 tool screens ETFs based on performance and technical criteria and returns matching ETFs. The verb 'Screen' and specific resource 'ETFs' make its purpose unambiguous, and it is naturally distinguished from sibling tools like screen_stocks and screen_forex by the asset class.
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 clearly identifies the context: use when screening ETFs. No explicit when-not or alternative tool references are given, but the ETF-specific scope makes usage obvious. It lacks direct mentions of when to prefer other screen_* tools, so it doesn't reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_forexBRead-onlyIdempotent
Screen forex pairs based on technical criteria. Returns forex pairs matching the specified filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return (1-200). Default: 20 | |
| columns | No | Optional: specific columns to include in results. If not provided, uses default columns. | |
| filters | No | Array of filter conditions to apply | |
| sort_by | No | Field to sort results by. Default: 'volume' | |
| sort_order | No | Sort order. Default: 'desc' |
Output Schema
| Name | Required | Description |
|---|---|---|
| pairs | Yes | |
| metadata | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, and the description's 'Returns forex pairs' aligns with a read-only operation. The description adds minimal behavioral context beyond the annotations, such as the fact that it filters based on criteria, but does not disclose any edge cases like default limits or sorting behavior. No contradiction.
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 extremely concise at two sentences with no filler. It is front-loaded with the primary action and result. However, its brevity comes at the cost of missing usage context, so it earns a 4 rather than 5.
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 complex screening tool with a rich filter schema, multiple operators, and examples in the schema. The description provides only a high-level one-liner and does not orient the agent to the available filter fields, operators, or general workflow. Despite the output schema and annotations, the description is not sufficient for a tool of this complexity.
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%, with detailed parameter descriptions for limit, columns, filters, sort_by, and sort_order. The description adds no extra parameter semantics, but the schema carries the full burden. Baseline 3 is appropriate as the schema is self-explanatory.
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 identifies the tool as a screener for forex pairs using technical criteria. The verb 'screen' and the resource 'forex pairs' make the purpose unambiguous, and it differentiates from sibling tools that screen other asset classes. However, 'technical criteria' is generic and could be more specific about the indicators involved.
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 implies the tool is used for screening forex pairs, but it does not explicitly state when to use this tool versus alternatives like screen_stocks or screen_crypto. No exclusions or comparison to siblings are provided, leaving the agent to infer the asset class from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_stocksARead-onlyIdempotent
Screen stocks based on fundamental and technical criteria. Returns stocks matching the specified filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return (1-200). Default: 20 | |
| columns | No | Optional: specific columns to include in results. If not provided, uses minimal default columns. Presets may define extended column sets. | |
| filters | No | Array of filter conditions to apply | |
| markets | No | Markets to scan. Valid values: america, uk, germany, france, italy, spain, sweden, norway, denmark, finland, brazil, india, japan, hongkong, china, australia, canada, turkey, uae, and 30+ more. Default: ['america'] | |
| sort_by | No | Field to sort results by. Default: 'market_cap_basic' | |
| sort_order | No | Sort order. Default: 'desc' |
Output Schema
| Name | Required | Description |
|---|---|---|
| stocks | Yes | |
| metadata | Yes | |
| total_count | Yes |
TDQS
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 minimal behavioral context beyond purpose—it does not mention default behavior when no filters are provided, pagination, or rate limits. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and contains no filler or redundant information. Every word contributes to understanding the tool's purpose.
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 the rich input schema, output schema, and annotations, the description is sufficient as a high-level summary. It could mention default behavior or explicit alternatives, but the structured data carries the necessary detail for a complex screening tool.
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 description adds no additional parameter-level meaning beyond what the input schema already provides. The schema itself richly documents filters, operators, markets, sorting, and limits.
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 tool's function with a specific verb ('Screen'), a specific resource ('stocks'), and the criteria type ('fundamental and technical criteria'). It also states the outcome ('Returns stocks matching the specified filters'), and the resource 'stocks' distinguishes it from sibling tools like screen_forex, screen_crypto, and screen_etf.
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 implies usage for stock screening but does not explicitly state when to use this tool versus alternatives such as screen_etf or screen_forex. There are no exclusions, prerequisites, or alternative tool mentions, so guidance is only implicit through the word 'stocks'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_symbolsARead-onlyIdempotent
Search for TradingView symbols by name, ticker, or description. Discover exact symbol identifiers for stocks, forex, crypto, and more. Use this before screening when you need to find the correct symbol format.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (1-50, default: 20) | |
| query | Yes | Search query (e.g., 'apple', 'bitcoin', ' ethereum') | |
| start | No | Offset for pagination (default: 0) | |
| exchange | No | Filter by exchange (e.g., 'NASDAQ', 'NYSE') | |
| asset_type | No | Filter by asset type |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| symbols | Yes | |
| metadata | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safe, non-mutating behavior is covered. The description adds that this tool 'Discovers exact symbol identifiers' and searches by name/ticker/description, but doesn't elaborate on output shape, rate limits, or search behavior beyond that. This is adequate baseline transparency given the annotations, but not exhaustive.
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 three short, front-loaded sentences. The first states the primary action, the second mentions result types, and the third gives usage context. No wasted words exist, though the second sentence is slightly redundant with the asset_type enum. Overall, it's concise and readable.
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 covers the essential use case, references asset types, and tells the user to use it before screening. With an output schema available, the absence of a return-value description is acceptable. The only gap is the failure to differentiate from the similarly named sibling 'lookup_symbols', leaving some ambiguity for an AI agent in edge cases.
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 all parameters already have descriptions in the input schema (query, limit, start, exchange, asset_type). The tool description reinforces the concept of searching by name/ticker/description, but adds no new parameter semantics. Thus it meets the baseline for schema-heavy behavior but doesn't go beyond it.
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 a specific verb and resource: 'Search for TradingView symbols by name, ticker, or description.' It also frames the purpose relative to screening ('Use this before screening'), which distinguishes it from screen_* siblings. However, it does not differentiate it from the closely named sibling 'lookup_symbols', so it doesn't fully meet the strict 5 criterion.
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 gives explicit context for when to use this tool: 'Use this before screening when you need to find the correct symbol format.' This clearly signals a discovery/disambiguation role before other operations. It does not explicitly mention alternatives like lookup_symbols, so it lacks the when-not/alternative clarity of a top-tier guideline.
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. Dates show when Glama detected each change.
12 tool updates
v0.7.0- Changed
get_market_metainfo2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "market": { + "type": "string" + }, + "metadata": { + "additionalProperties": false, + "properties": { + "cache_hit": { + "type": "boolean" + }, + "missing_symbols": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requested_count": { + "minimum": 0, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "type": "string" + }, + "returned_count": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "unavailable_symbols": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "retrieved_at", + "source", + "cache_hit", + "requested_count", + "returned_count", + "missing_symbols" + ], + "type": "object" + }, + "metainfo": { + "additionalProperties": true, + "type": "object" + }, + "requested_fields": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "market", + "metadata" + ], + "type": "object" +}
- Changed
get_preset2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
- Changed
get_ta_summary2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "metadata": { + "additionalProperties": false, + "properties": { + "cache_hit": { + "type": "boolean" + }, + "missing_symbols": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requested_count": { + "minimum": 0, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "type": "string" + }, + "returned_count": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "unavailable_symbols": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "retrieved_at", + "source", + "cache_hit", + "requested_count", + "returned_count", + "missing_symbols" + ], + "type": "object" + }, + "symbols": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "symbols", + "metadata" + ], + "type": "object" +}
- Changed
list_fields2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "asset_type": { + "type": "string" + }, + "category": { + "type": "string" + }, + "field_count": { + "type": "integer" + }, + "fields": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "asset_type", + "category", + "field_count", + "fields" + ], + "type": "object" +}
- Changed
list_presets2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "presets": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "presets" + ], + "type": "object" +}
- Changed
lookup_symbols2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "metadata": { + "additionalProperties": false, + "properties": { + "cache_hit": { + "type": "boolean" + }, + "missing_symbols": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requested_count": { + "minimum": 0, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "type": "string" + }, + "returned_count": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "unavailable_symbols": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "retrieved_at", + "source", + "cache_hit", + "requested_count", + "returned_count", + "missing_symbols" + ], + "type": "object" + }, + "symbols": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": [ + "total_count", + "symbols", + "metadata" + ], + "type": "object" +}
- Changed
rank_by_ta2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "excluded_symbols": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "metadata": { + "additionalProperties": false, + "properties": { + "cache_hit": { + "type": "boolean" + }, + "missing_symbols": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requested_count": { + "minimum": 0, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "type": "string" + }, + "returned_count": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "unavailable_symbols": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "retrieved_at", + "source", + "cache_hit", + "requested_count", + "returned_count", + "missing_symbols" + ], + "type": "object" + }, + "ranked": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "requested_symbols": { + "type": "integer" + }, + "timeframes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "weights": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + }, + "required": [ + "requested_symbols", + "timeframes", + "weights", + "ranked", + "excluded_symbols", + "metadata" + ], + "type": "object" +}
- Changed
screen_crypto5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / filters / items / additionalPropertiesAdded value: +false - changed
Input schema / properties / filters / items / properties / value / descriptionPrevious value: -"Value to compare against. Not required for 'empty' and 'not_empty' operators. Use number, string, or [min, max] array for in_range. For above_percent/below_percent, use [field_name, percent_number] e.g. ['SMA200', 10]."New value: +"Value to compare against. Empty and not_empty omit value. above_percent and below_percent use [field, percent]. has and has_none_of use a non-empty string array." - added
Input schema / properties / filters / items / properties / value / oneOfAdded value: +[ + { + "type": "number" + }, + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "type": "string" + }, + { + "type": "number" + } + ], + "type": "array" + } +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "cryptocurrencies": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "metadata": { + "additionalProperties": false, + "properties": { + "cache_hit": { + "type": "boolean" + }, + "missing_symbols": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requested_count": { + "minimum": 0, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "type": "string" + }, + "returned_count": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "unavailable_symbols": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "retrieved_at", + "source", + "cache_hit", + "requested_count", + "returned_count", + "missing_symbols" + ], + "type": "object" + }, + "total_count": { + "type": "integer" + } + }, + "required": [ + "total_count", + "cryptocurrencies", + "metadata" + ], + "type": "object" +}
- Changed
screen_etf5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / filters / items / additionalPropertiesAdded value: +false - changed
Input schema / properties / filters / items / properties / value / descriptionPrevious value: -"Value to compare against. Not required for 'empty' and 'not_empty' operators. Use number, string, or [min, max] array for in_range. For above_percent/below_percent, use [field_name, percent_number] e.g. ['SMA200', 10]."New value: +"Value to compare against. Empty and not_empty omit value. above_percent and below_percent use [field, percent]. has and has_none_of use a non-empty string array." - added
Input schema / properties / filters / items / properties / value / oneOfAdded value: +[ + { + "type": "number" + }, + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "type": "string" + }, + { + "type": "number" + } + ], + "type": "array" + } +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "etfs": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "metadata": { + "additionalProperties": false, + "properties": { + "cache_hit": { + "type": "boolean" + }, + "missing_symbols": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requested_count": { + "minimum": 0, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "type": "string" + }, + "returned_count": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "unavailable_symbols": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "retrieved_at", + "source", + "cache_hit", + "requested_count", + "returned_count", + "missing_symbols" + ], + "type": "object" + }, + "total_count": { + "type": "integer" + } + }, + "required": [ + "total_count", + "etfs", + "metadata" + ], + "type": "object" +}
- Changed
screen_forex5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / filters / items / additionalPropertiesAdded value: +false - changed
Input schema / properties / filters / items / properties / value / descriptionPrevious value: -"Value to compare against. Not required for 'empty' and 'not_empty' operators. Use number, string, or [min, max] array for in_range. For above_percent/below_percent, use [field_name, percent_number] e.g. ['SMA200', 10]."New value: +"Value to compare against. Empty and not_empty omit value. above_percent and below_percent use [field, percent]. has and has_none_of use a non-empty string array." - added
Input schema / properties / filters / items / properties / value / oneOfAdded value: +[ + { + "type": "number" + }, + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "type": "string" + }, + { + "type": "number" + } + ], + "type": "array" + } +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "metadata": { + "additionalProperties": false, + "properties": { + "cache_hit": { + "type": "boolean" + }, + "missing_symbols": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requested_count": { + "minimum": 0, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "type": "string" + }, + "returned_count": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "unavailable_symbols": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "retrieved_at", + "source", + "cache_hit", + "requested_count", + "returned_count", + "missing_symbols" + ], + "type": "object" + }, + "pairs": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": [ + "total_count", + "pairs", + "metadata" + ], + "type": "object" +}
- Changed
screen_stocks5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / filters / items / additionalPropertiesAdded value: +false - changed
Input schema / properties / filters / items / properties / value / descriptionPrevious value: -"Value to compare against. Not required for 'empty' and 'not_empty' operators. Use number, string, or [min, max] array for in_range. For above_percent/below_percent, use [field_name, percent_number] e.g. ['SMA200', 10] means 10% above/below SMA200. For has/has_none_of, use an array of strings for set-type fields like typespecs."New value: +"Value to compare against. Empty and not_empty omit value. above_percent and below_percent use [field, percent]. has and has_none_of use a non-empty string array." - added
Input schema / properties / filters / items / properties / value / oneOfAdded value: +[ + { + "type": "number" + }, + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "type": "string" + }, + { + "type": "number" + } + ], + "type": "array" + } +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "metadata": { + "additionalProperties": false, + "properties": { + "cache_hit": { + "type": "boolean" + }, + "missing_symbols": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requested_count": { + "minimum": 0, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "type": "string" + }, + "returned_count": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "unavailable_symbols": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "retrieved_at", + "source", + "cache_hit", + "requested_count", + "returned_count", + "missing_symbols" + ], + "type": "object" + }, + "stocks": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": [ + "total_count", + "stocks", + "metadata" + ], + "type": "object" +}
- Changed
search_symbols2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "count": { + "type": "integer" + }, + "metadata": { + "additionalProperties": false, + "properties": { + "cache_hit": { + "type": "boolean" + }, + "missing_symbols": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requested_count": { + "minimum": 0, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "type": "string" + }, + "returned_count": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "unavailable_symbols": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "retrieved_at", + "source", + "cache_hit", + "requested_count", + "returned_count", + "missing_symbols" + ], + "type": "object" + }, + "query": { + "type": "string" + }, + "symbols": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "query", + "count", + "symbols", + "metadata" + ], + "type": "object" +}
12 tool updates
v0.0.0-dev- First observed
get_market_metainfo - First observed
get_preset - First observed
get_ta_summary - First observed
list_fields - First observed
list_presets - First observed
lookup_symbols - First observed
rank_by_ta - First observed
screen_crypto - First observed
screen_etf - First observed
screen_forex - First observed
screen_stocks - First observed
search_symbols
TDQS
Most tools are distinct by asset class and action (e.g., screen_stocks, screen_forex, screen_crypto, screen_etf). However, list_fields and get_market_metainfo both expose available fields, and lookup_symbols vs search_symbols overlap in symbol-finding, which may cause misselection without careful reading.
All tool names follow a consistent snake_case verb_noun pattern (screen_*, list_*, get_*, lookup_*, search_*, rank_*). The naming is predictable and uniform across the entire set.
With 12 tools, the server is well-scoped for a TradingView screener and TA analysis service. Each tool addresses a clear need, and the count feels appropriate without being bloated or thin.
The surface covers core workflows: screening across asset classes, preset discovery, field/metadata exploration, symbol lookup, and TA ranking. Minor gaps exist such as no create/update/delete for custom presets or a unified screening tool across all asset types, but these are not critical for the main purpose.
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
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Hosted MCP for stocks, options, Greeks, brokers, order previews, alerts, and workflows.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for screening Indian stocks and mutual funds by wrapping screener.in and Morningstar India, enabling fundamental queries from Claude or Cursor.-
- FlicenseNot gradedqualityBmaintenanceA comprehensive MCP server that integrates TradingView Desktop automation, screener API, Yahoo Finance, IDX/BEI tools, backtesting, news sentiment, trade math, and market sessions. It enables traders to perform technical analysis, backtest strategies, manage positions, and automate TradingView tasks through natural language.-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that lets AI assistants interact with TradingView for real-time quotes, historical OHLCV data, screener, alerts, watchlists, news, chart layouts, Pine scripts, and more. Connect it to Claude Desktop, Cursor, or any MCP-compatible client to control TradingView via natural language.5525-
- AlicenseBqualityCmaintenanceTradingView MCP server — real-time market data, technical indicators, screeners, and backtesting for Claude, ChatGPT, Cursor, Copilot, and any MCP client. Stocks, crypto, forex & futures across global exchanges.441MIT
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/fiale-plus/tradingview-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server