stockmarketscan/mcp-server
OfficialEnables stock market screening, options flow analysis, and chart pattern recognition within JetBrains IDEs via the Continue extension, allowing developers to access equity research tools alongside their code.
StockMarketScan MCP Server
Stock screeners, chart patterns, options flow, and signals — 18 tools for US equities research, inside your LLM client.
Server URL:
https://mcp.stockmarketscan.com/mcpTransport: HTTP/SSE (Server-Sent Events)
Auth: BYOK — pass your personal
sms_*API key as theX-API-KeyheaderPlan: Requires a Basic or Pro plan at stockmarketscan.com. Options flow tools require the Options Flow add-on.
Get your API key: stockmarketscan.com/settings
Full install guide & examples: stockmarketscan.com/mcp
What you get — 18 tools
Category | Tools |
Screeners (3) |
|
Chart Patterns (2) |
|
Options Flow (4) |
|
Stock Info (2) |
|
Composite (2) |
|
Market Context (3) |
|
Education (1) |
|
Plus ping for liveness checks.
Related MCP server: Chart Library
Install — Claude Desktop
Edit claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"stockmarketscan": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.stockmarketscan.com/mcp"],
"headers": {
"X-API-Key": "sms_your_key_here"
}
}
}
}Restart Claude Desktop. You should see stockmarketscan in the tool picker.
Install — Cursor
Settings → Features → Model Context Protocol → Add New MCP Server:
{
"name": "stockmarketscan",
"url": "https://mcp.stockmarketscan.com/mcp",
"headers": {
"X-API-Key": "sms_your_key_here"
}
}Install — Continue (VS Code / JetBrains)
Edit ~/.continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "sse",
"url": "https://mcp.stockmarketscan.com/mcp",
"headers": {
"X-API-Key": "sms_your_key_here"
}
}
}
]
}
}Example prompts
Drop these straight into Claude Desktop or Cursor once the server is connected:
"Which stocks appear in both hot-prospects and golden-cross today?"
"Show me AMD's options flow history for the last 30 days."
"Find hot-prospects that are forming a cup and handle pattern."
"Build a full stock report for NVDA — screeners, patterns, options flow, market context."
"What are today's strongest bullish options flow signals?"
"Which contracts traded today at vol/OI > 3 with over $1M premium?"
How auth works (BYOK)
The MCP server does not hold its own API key. Each client passes your personal sms_* key, the server validates it once per session, and then proxies tool calls to api/v1/* on your behalf. You stay in control of rate limits and quota, and you can rotate the key any time in Settings.
Rate limits
Plan | Per Minute | Per Day | Options Flow |
Free | — | — | — |
Basic | 15 | 500 | — |
Pro | 30 | 2,000 | ✓ |
Support
Install guide: stockmarketscan.com/mcp
Contact: contact@stockmarketscan.com
Running from source
git clone https://github.com/stockmarketscan/mcp-server.git
cd mcp-server
npm install
STOCKMARKETSCAN_API_KEY=sms_your_key_here npm run dev # stdio (for Claude Desktop local)
npm run dev:http # HTTP/SSE on :3333Docker
docker build -t stockmarketscan-mcp .
docker run -p 3333:3333 -e MCP_TRANSPORT=http stockmarketscan-mcpThe container listens on $PORT (Railway) or $MCP_PORT (local). Point your
MCP client at http://localhost:3333/mcp and pass your X-API-Key header.
Available Tools
18 toolsexplain_conceptARead-onlyIdempotent
Return a plain-language explanation of a platform-specific term, metric, or screener. Use ONLY for terms that are specific to StockMarketScan (e.g. 'strength_score' which is our internal scoring, or 'hot_prospects' which is our curated screener). Do NOT use for generic finance terms the model already knows — answer those directly. Returns { term, title, explanation, interpretation, related_terms }.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Term to explain, e.g. 'call_put_ratio', 'golden_cross', 'consecutive_days', 'strength_score', 'vol_oi_ratio', 'streak' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds that the tool returns a specific structure: '{ term, title, explanation, interpretation, related_terms }', and clarifies the scope of explanations. 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?
The description is three sentences: first states the action, second provides usage guidelines with examples, third gives output structure. Every sentence adds value, and the important information is front-loaded. No extraneous text.
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?
Despite the absence of an output schema, the description specifies the return format. It covers purpose, when to use, and what to expect. For a simple tool with one parameter, this is fully complete and leaves no ambiguity.
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 has 100% coverage with a description and examples for the single 'term' parameter. The description adds context by specifying that terms should be platform-specific and provides additional examples beyond those in the schema, enhancing the parameter's meaning.
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 verb 'Return a plain-language explanation' and identifies the resource as 'platform-specific term, metric, or screener'. It distinguishes from generic finance terms by specifying it is for StockMarketScan-specific terms, and provides examples like 'strength_score' and 'hot_prospects'.
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?
Explicitly states when to use: 'Use ONLY for terms that are specific to StockMarketScan'. Also states when not to use: 'Do NOT use for generic finance terms the model already knows — answer those directly'. This provides clear guidance and implies an alternative action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_candlesARead-onlyIdempotent
Return OHLCV price candles for a single stock. Use when you need price history to compute indicators or answer 'how much is X up this month'. time is a Unix epoch in seconds (UTC midnight for daily). Default range is 6mo. Use larger ranges like '1y' or '2y' only when the user explicitly asks for long history — max range is 20 years. Returns { symbol, interval, range, count, data: [{time, open, high, low, close, volume}] }.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker | |
| interval | No | Daily or weekly candles | 1d |
| range | No | Range: 1d, 5d, 1y, 2y, 5y, max, or {N}mo (1-240) | 6mo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds critical details: time format ('Unix epoch in seconds, UTC midnight for daily'), default range (6mo), max range (20 years), and return structure. 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?
Every sentence adds value. The description is front-loaded with the main purpose, followed by usage guidance, parameter clarifications, and return format. No redundant or vague statements.
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 3 parameters, no output schema, and a data-rich tool, the description covers purpose, usage, parameter constraints, and return shape comprehensively. Siblings are distinct, so no confusion.
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 has 100% coverage for all 3 parameters. Description adds extra context: default and max range for 'range', and explains the time format in the return data, which complements understanding of parameters. Slightly above baseline because of added constraints.
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 explicitly states 'Return OHLCV price candles for a single stock' with a clear verb and resource, and distinguishes it from sibling tools like get_stock_info or get_chart_patterns by focusing on price history.
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 explicit usage context: 'Use when you need price history to compute indicators or answer how much is X up this month.' Also advises on range selection ('Default range is 6mo', 'Use larger ranges like 1y or 2y only when the user explicitly asks for long history'). Lacks direct exclusion of alternatives but clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chart_patternsARead-onlyIdempotent
Return all chart patterns currently detected for a single stock symbol. Covers 25+ patterns including head_shoulders, cup_handle, wedge_rising/falling, asc/desc/sym_triangle, double_top/bottom, channel_up/down, cup_handle, harmonic patterns (gartley, butterfly, bat, crab). Use when the user asks 'what patterns does X have' or 'is X forming a head and shoulders'. Returns { symbol, interval, computedAt, candleCount, patterns: [...] }. Empty patterns array if none detected.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker, e.g. AAPL, TSLA, MSFT | |
| interval | No | Chart interval | 1d |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent, and open-world behavior. The description adds value by detailing the return format (symbol, interval, computedAt, candleCount, patterns array) and confirming empty arrays when no patterns are found. 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?
The description is extremely concise, with two sentences plus a return-format note. It front-loads the purpose and provides all necessary information without unnecessary words. Every sentence 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?
Despite lacking an explicit output schema, the description provides a complete picture: the tool's purpose, parameter usage (implied by examples), return structure, and behavioral semantics. It covers all aspects an agent needs 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?
Input schema has 100% coverage with descriptions for both parameters. The description does not add new semantic information beyond the schema; it merely restates the symbol pattern and interval default. Per guidelines, high coverage justifies a baseline of 3.
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 all chart patterns for a single stock symbol, lists specific patterns, and gives example user queries. It effectively distinguishes from siblings like search_patterns and search_setups by focusing on current detections for a single symbol.
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?
Includes explicit when-to-use examples (e.g., 'what patterns does X have'). It does not explicitly state when not to use or name alternatives, but the context of sibling tools implies alternatives like search_patterns for cross-symbol queries. The guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_momentumARead-onlyIdempotent
Return NYSE and NASDAQ market breadth data — advancing/declining issues, new highs/lows, percent advancing. Use when the user asks 'how's the market today' or 'is breadth strong'. Default (no params): last 7 trading days. Returns { dates, count, data: [{exchange, advancing_issues, declining_issues, new_highs, new_lows, percent_advancing_issues, data_date}] }. Two rows per date (NYSE + NASDAQ). Tier: Basic+.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Single day (YYYY-MM-DD) | |
| date_from | No | Range start | |
| date_to | No | Range end |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds beyond this by detailing the return structure, that two rows per date are returned (NYSE+NASDAQ), and the tier info. It aligns with annotations and provides useful behavioral context.
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 concise: two sentences plus a structured return note. It front-loads the purpose, then provides usage context, and finally enumerates the return format. Every sentence adds value without 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 the tool has no output schema, the description fully describes the return structure and default behavior. It is complete for a filtered-list tool with clear annotations.
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% (all three parameters have descriptions). The description adds the default behavior when no params are given, but does not add significant meaning beyond the schema. 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 returns NYSE and NASDAQ market breadth data with specific fields (advancing/declining issues, new highs/lows, percent advancing). The verb 'return' and resource 'market breadth data' are specific and distinguish it from sibling tools like get_candles or get_stock_info.
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 gives example user queries ('how's the market today', 'is breadth strong') to signal when to use the tool. It also mentions the default behavior (last 7 trading days), but does not specify when not to use it or offer alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_options_flow_overviewARead-onlyIdempotent
Return the daily options flow table for one trading day — aggregated call/put volume, premium, implied volatility, and consecutive-day streaks for every notable symbol. Use when the user asks 'what's the options flow today' or 'show me the top premium plays'. Each row includes call_put_volume_ratio (bullish if > 1.0), consecutive_days (streak length), total_premium (dollar size), call_avg_iv/put_avg_iv. Returns { date, sort, limit, data: [...], stats, dates }. Tier: Pro only — Basic users get 403.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Trading day (YYYY-MM-DD). Default = latest available day. | |
| sort | No | Sort order: streak=longest streaks first, volume=highest volume, callput=most extreme C/P, premium=biggest dollar | streak |
| limit | No | Rows to return (max 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent, and open-world. Description adds concrete output fields (call_put_volume_ratio, consecutive_days, total_premium, avg_iv), structure (data, stats, dates), and the 403 error for basic users. No contradictions.
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?
Four sentences with front-loaded purpose. No redundancy, but could be more structured (e.g., list). Still efficient and informative.
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 tool with 3 parameters and no output schema, the description covers return structure (data, stats, dates) and key fields. Missing details on stats/dates fields but overall sufficient for selection and 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% with adequate descriptions. The description clarifies sort enum meanings ('streak=longest streaks first') but adds no new parameter-level details beyond what the schema provides. 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 returns a daily options flow table with specific aggregated metrics (call/put volume, premium, IV, streaks). It uses a specific verb ('Return') and resource ('options flow table'), and distinguishes from sibling tools like get_options_flow_signals and get_options_flow_timeline by focusing on a single-day overview.
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 explicit example queries ('what's the options flow today', 'show me the top premium plays') and notes the tier restriction (Pro only). Lacks explicit when-not-to-use or direct comparisons to sibling tools, but the examples give clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_options_flow_signalsARead-onlyIdempotent
Return curated high-conviction options flow signals for a date range. These are the strongest setups filtered by long streaks, large premium, and screener confluence. Each signal includes performance tracking (max_high_pct, max_drawdown_pct). Use when the user asks 'what are today's signals' or 'show me bullish setups from last week'. If date_from/date_to omitted, returns last 60 days. Returns { count, signals: [...] }. Tier: Pro only.
| Name | Required | Description | Default |
|---|---|---|---|
| date_from | No | Start date (YYYY-MM-DD) | |
| date_to | No | End date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm readOnly and idempotent. Description adds valuable context: default to last 60 days if dates omitted, includes performance tracking fields, and restricts to Pro tier. 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?
Extremely concise: two sentences capture purpose, usage, defaults, and tier restriction. Every sentence adds value, and the structure is front-loaded with the core function.
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 no output schema, the description clearly outlines the return structure (count, signals array). Defaults, performance tracking, and tier restrictions are covered. Completely adequate for an agent to use 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 describes date parameters with format. Description adds default behavior (60 days) which is not in schema. Since schema coverage is 100%, the description adds useful extra context beyond the schema.
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?
Clearly states it returns 'curated high-conviction options flow signals for a date range' with specific filtering criteria. Distinguishes from siblings like get_options_flow_overview and get_options_flow_timeline by highlighting the curated and high-conviction nature.
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 explicit usage examples: 'what are today's signals' or 'show me bullish setups from last week'. This gives clear guidance on when to invoke the tool, effectively differentiating it from broader overview tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_options_flow_timelineARead-onlyIdempotent
Return the historical options flow for a single stock — most recent days first. Use when the user asks 'show me X's options flow history' or 'how long has X been bullish'. Returns { symbol, limit, count, data: [daily rows, newest first] }. Tier: Pro only.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker | |
| limit | No | Days of history (max 365) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds return order ('newest first') and structure, which are beneficial beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, usage examples, and tier/return format. Front-loaded and efficient, every sentence 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?
For a simple tool with two parameters and no output schema, the description is near complete, covering purpose, return structure, and usage. Missing details like pagination or error handling, but adequate for selection.
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 has 100% description coverage. Description adds 'Days of history (max 365)' which matches schema, and 'most recent days first' for ordering. Does not add significant new meaning beyond schema.
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?
States verb 'return', resource 'historical options flow', and scope 'single stock'. Distinguishes from siblings like get_options_flow_overview by specifying 'historical timeline' and 'most recent days first'.
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 usage examples: 'show me X's options flow history' and 'how long has X been bullish'. Also notes 'Tier: Pro only' as prerequisite, providing clear guidance on when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screener_dataARead-onlyIdempotent
Return the current rows of a single stock screener for its latest data date. Use this when the user asks about a specific screener like 'hot prospects' or 'golden cross'. Common slugs: hot-prospects, golden-cross, death-cross, rsi-oversold, rsi-overbought, defensive-stocks, dividend-prospects, j-pattern, nearing-6-month-highs, week-52-high-top-picks, top-penny-pops, strong-volume-gains, top-tech-stocks, fundamentally-fine, income-and-growth, best-reits. If you don't know the slug, call list_screeners first. Returns { screener, pagination, data: [stock rows] }.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The screener slug, e.g. 'hot-prospects', 'golden-cross', 'rsi-oversold' | |
| page | No | Page number (1-based) | |
| limit | No | Rows per page (max 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds context about 'latest data date' and return shape, but does not add significant new behavioral details beyond what 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?
The description is three sentences, each with a distinct purpose: purpose, usage context, and examples/fallback/return format. It is front-loaded and contains no superfluous text.
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 tool with 3 parameters and no output schema, the description adequately covers purpose, usage, parameter examples, error handling (unknown slug), and return format. No gaps are evident.
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% with good parameter descriptions. The description adds value by listing many common slug examples, helping the agent understand valid inputs beyond the schema's example. This slightly exceeds the baseline of 3.
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 current rows of a single stock screener for its latest data date, differentiating it from list_screeners and others. It provides specific examples of common slugs and explicitly says when to use it.
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 gives explicit guidance: 'Use this when the user asks about a specific screener' and provides a fallback instruction to call list_screeners if the slug is unknown. This effectively directs the AI agent on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_infoARead-onlyIdempotent
Return basic metadata for a stock — full company name, exchange, industry, last close price, and percent change. Use this when you first encounter a symbol and need to identify it. Lighter than get_stock_report (composite) or get_candles (full history). Returns { symbol, symbol_name, last_price, percent_change, exchange, industry }. Returns NOT_FOUND for unknown tickers.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker, e.g. AAPL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint). Description adds value by specifying return format and the NOT_FOUND error case, but does not reveal other potential behaviors like rate limits.
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?
Three sentences, front-loaded with purpose, then usage, then return format. No wasted words.
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 single-parameter, read-only tool with rich annotations, the description covers purpose, usage, output fields, and error case. No additional information is necessary.
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% with a clear parameter description. The tool description does not add further meaning beyond what the schema provides, so 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?
States clear verb 'Return basic metadata for a stock' and lists specific fields. Distinguishes from siblings by naming get_stock_report and get_candles with their differences.
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?
Explicitly says 'Use this when you first encounter a symbol and need to identify it.' and compares weight against alternatives, providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_reportARead-onlyIdempotent
Return a comprehensive report on a single stock in one call — metadata, screener appearances, chart patterns, options flow, signal status, price summary, and upcoming earnings. THIS IS THE PREFERRED FIRST TOOL when a user asks about a single stock. It replaces 5-7 separate tool calls (get_stock_info + get_chart_patterns + get_options_flow_timeline + get_options_flow_signals + screener lookups + get_candles). Do NOT also call the primitives after calling this — the composite already has everything. Parallel fetch under the hood, graceful partial failures (if one source errors, that section returns null with a note). Returns { symbol, info, screeners, patterns, options_flow, signal, candle_summary, upcoming_earnings, overall_bias }. overall_bias is a heuristic hint, not financial advice.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker, e.g. AAPL | |
| interval | No | Pattern detection interval | 1d |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. The description adds value by revealing parallel fetches, partial failure behavior (null with note), and the heuristic nature of overall_bias. 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?
The description is well-structured, front-loading the purpose and then detailing benefits, behavior, and return value. While long, every sentence earns its place. Slightly verbose but not wasteful.
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's complexity (composite of many sources) and lack of output schema, the description fully documents the return structure, partial failure handling, and heuristic hints. It provides sufficient context for an agent to use and interpret results.
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?
Input schema has 100% coverage with descriptions for both parameters ('symbol' and 'interval'). The description reinforces that symbol is for a single stock and interval for pattern detection, but adds little new semantic meaning beyond the schema. 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 returns a comprehensive report on a single stock, listing all components (metadata, screeners, patterns, options flow, etc.). It explicitly distinguishes from sibling tools by noting it replaces 5-7 separate calls, making the purpose 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?
The description explicitly recommends this as the preferred first tool for single-stock queries and warns against also calling primitive tools afterward. It provides clear when-to-use and when-not-to-use guidance, plus notes on graceful partial failures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trend_connectionsARead-onlyIdempotent
Return AI-computed connections between trending topics across categories (tech → patents, tech → funding, etc). Useful for spotting meta-trends. Use when the user asks 'what trends are connected' or 'show me cross-category signals'. Returns { count, connections: [{source_category, source_topic, target_category, target_topic, strength, rationale}] }. Tier: Pro only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| latest | No | ||
| date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds the return format structure and a Pro tier restriction, which are valuable beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-load purpose, then usage, then return format. No redundant information. Every sentence 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?
The output structure is documented but parameters are completely missing. For a tool with 3 parameters and no output schema, the description is incomplete. It provides enough context for basic use but lacks parameter guidance.
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 0% and the description does not document any parameter (days, latest, date). Given the low coverage, the description must compensate but fails entirely, leaving agents to guess parameter meaning.
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 it returns AI-computed connections between trending topics across categories, with specific examples like tech→patents. This distinguishes it from sibling get_trends which likely returns trends alone.
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 explicit use cases: when user asks 'what trends are connected' or 'show me cross-category signals'. This is strong guidance, though it doesn't include when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trendsARead-onlyIdempotent
Return AI-detected trending topics in tech & science, patents, or funding events. Use when the user asks 'what's trending in tech' or 'show me patent trends'. Returns { category, count, trends: [{date, topic, weight}] } where weight is 0-1. Tier: Pro only.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Trend category | techscience |
| days | No | Lookback window | |
| latest | No | If true, only return most recent day | |
| date | No | Exact date lookup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool is read-only, non-destructive, idempotent, and open-world. The description adds the return format structure and weight scale (0-1), plus the Pro tier restriction, providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences covering purpose, usage, return format, and access tier. No filler, front-loaded with the main action. Earns its sentences 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?
Given no output schema, the description provides the output format. It covers all necessary aspects: purpose, category options, date range, latest flag, exact date, return structure, and access level. Complete for an agent to use 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% with good parameter descriptions. The description adds usage examples ('what's trending in tech') but does not significantly enhance parameter meaning beyond what the schema 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?
The description clearly states the tool returns AI-detected trending topics in specific domains (tech/science, patents, funding events). It distinguishes itself from sibling tools like get_chart_patterns and get_options_flow_signals by focusing on trend categories.
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?
Explicitly says 'Use when the user asks...' with example queries, providing clear context for when to invoke this tool. Also notes 'Tier: Pro only', indicating access prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unusual_options_activityARead-onlyIdempotent
Return individual options contracts flagged as unusual (Vol/OI > 1.5). Each row is one contract, not one stock. Use when the user wants contract-level detail. Filter by symbol, side (call/put/both), minimum vol/oi, minimum premium, or max days to expiration. For aggregated stock-level flow use get_options_flow_overview instead. Returns { date, count, contracts: [...] }.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Filter to one symbol | |
| side | No | both | |
| min_vol_oi | No | ||
| min_premium_usd | No | ||
| max_dte | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds context about the response structure ({ date, count, contracts: [...] }) and emphasizes contract-level granularity, enhancing behavioral understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is four sentences, no redundant information, starts with the core purpose, and builds logically. Every sentence 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 no output schema and moderate parameter count, the description adequately covers the tool's purpose, filtering options, and return type. It lacks default values for some parameters but remains sufficient for agent selection.
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 17% (only 'symbol' parameter described). The description compensates by naming and briefly explaining key parameters: symbol, side (call/put/both), min vol/oi, min premium, and max days to expiration. However, it omits the 'limit' parameter and the default for 'min_vol_oi'.
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 clearly states the tool returns individual options contracts flagged as unusual (Vol/OI > 1.5), with each row representing one contract. It distinguishes itself from the sibling tool get_options_flow_overview, which provides aggregated stock-level data.
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 guidelines: 'Use when the user wants contract-level detail' and provides a direct alternative: 'For aggregated stock-level flow use get_options_flow_overview instead.' Also lists applicable filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_screenersARead-onlyIdempotent
Return metadata for all 24 stock screeners on the platform, including each screener's slug, name, description, category, and tier. Use this to discover which screeners are available before calling get_screener_data. Call this once per session — the list changes very rarely. Returns { tier, total, accessible, screeners: [...] }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it idempotent and read-only. The description adds valuable context: the exact count (24), return shape, and caching hint. 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?
Three sentences, zero waste. Purpose first, then usage guidance, then return format. Perfectly structured.
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 parameterless list tool with no output schema, the description covers everything: purpose, usage, return shape, and caching behavior. Completely sufficient.
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?
No parameters exist, so the description's job is minimal. It still clarifies the output structure, earning a baseline 4.
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?
Clearly states it returns metadata for all 24 stock screeners, specifying fields (slug, name, description, category, tier). Distinguishes from sibling get_screener_data by positioning as a discovery step.
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?
Explicitly advises to use before get_screener_data and to call once per session due to rare changes. No alternative tools needed for listing screeners, so guidance is complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingARead-onlyIdempotent
Minimal sanity check. Returns { status, version, timestamp, cache_size }. No auth needed. Use this to verify the MCP server is reachable and responsive.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by detailing return fields and confirming no authentication required. Annotations already indicate read-only and idempotent, so description complements well without 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?
Two concise sentences that deliver purpose, return type, and usage context upfront with no wasted words.
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 zero parameters and no output schema, the description fully covers what the tool does and how to use it. No additional information is needed.
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?
No parameters exist, and schema coverage is 100%. Description does not need to explain parameters, making this dimension automatically high.
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?
Clearly states it is a minimal sanity check returning specific fields like status, version, timestamp, cache_size. Distinguishes itself from sibling tools which focus on financial data.
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?
Explicitly says 'No auth needed' and 'Use this to verify the MCP server is reachable.' Provides clear context for when to use, though does not explicitly exclude scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_patternsARead-onlyIdempotent
Find all stocks across one or more screeners that currently exhibit specific chart patterns. Much faster than calling get_chart_patterns in a loop. Use when the user asks 'which stocks have a cup and handle' or 'find me hot prospects with bullish reversal patterns'. Returns { screeners_queried, patterns_queried, interval, count, matches: [...] }.
| Name | Required | Description | Default |
|---|---|---|---|
| screener_slugs | Yes | Screener slugs to search within | |
| pattern_ids | No | Pattern ids to filter by (e.g. 'head_shoulders', 'cup_handle'). Empty = all patterns. | |
| interval | No | Chart interval | 1d |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is clear. The description adds valuable behavioral context by stating the return structure ({ screeners_queried, patterns_queried, interval, count, matches: [...] }) and performance characteristic (much faster than a loop), which goes beyond what 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?
The description is only two sentences, with the first sentence clearly stating the purpose and the second giving usage examples and return format. Every sentence earns its place with no fluff. It is front-loaded and highly efficient.
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 no output schema, the description includes the return structure, which is helpful. The tool has 3 parameters all fully described in the schema. The description covers the main use case and distinguishes from a key sibling. It could be more complete by mentioning edge cases (e.g., no matches), but overall it is adequate.
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%, meaning all three parameters already have descriptions. The description does not add significant new information about parameters beyond what the schema provides. It implies that pattern_ids empty means all patterns and interval defaults to '1d', but these are already in the schema. Thus, 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 finds stocks with specific chart patterns across screeners, provides example user queries ('which stocks have a cup and handle'), and explicitly differentiates itself from get_chart_patterns by noting it's faster than a loop. This makes the purpose highly specific and distinguishable from siblings.
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 when-to-use context (e.g., 'when the user asks which stocks have a cup and handle') and suggests an alternative (get_chart_patterns) by saying it's faster than looping. It lacks explicit when-not-to-use or exclusion of other siblings, but the guidance is clear and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_setupsARead-onlyIdempotent
Find the strongest trading setups today by combining options flow signals and screener confluence into a ranked list. Use when the user asks 'what should I trade today', 'best setups', 'top bullish plays'. Returns a ranked list with a composite score (signal strength + screener confluence + streak length). Present the top 3-5 to the user with narrative context, don't dump the raw JSON. Use get_stock_report if the user wants to dig deeper into any specific result. Returns { side, date, count, setups: [{symbol, score, signal, screeners_hit, ...}] }.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | Side of setups to return | bullish |
| limit | No | Max setups to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, so the tool is safe and repeatable. The description adds value by detailing the composite score components (signal strength, screener confluence, streak length) and the return structure, but does not discuss potential edge cases or performance characteristics.
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 four sentences, front-loaded with purpose, then usage, presentation instruction, alternative tool, and output structure. Every sentence adds distinct value without 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?
The description provides the return structure and explains the composite score, which compensates for the lack of an output schema. It also specifies presentation guidelines. However, it does not mention handling of empty results or errors, leaving a minor 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?
Input schema coverage is 100%, so parameters are fully defined. The description does not add new context beyond the schema, only implicitly hinting at 'side' via 'top bullish plays'. Baseline score of 3 is appropriate as the schema carries the full 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 tool finds the strongest trading setups by combining options flow signals and screener confluence into a ranked list. It uses a specific verb 'Find' and resource 'trading setups', distinguishing it from siblings like get_options_flow_signals and get_screener_data.
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 specifies when to use the tool (e.g., 'what should I trade today', 'best setups', 'top bullish plays') and provides an alternative (get_stock_report for deeper analysis). It also instructs the agent to present top 3-5 results with narrative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_stocks_in_screenersARead-onlyIdempotent
Find stocks that appear in multiple screeners simultaneously. Powerful for high-confidence picks where the user wants confluence across strategies. Use when the user asks 'which stocks are in both X and Y' or 'find stocks in 3+ bullish screeners'. Returns { screeners_queried, mode, count, symbols: [{symbol, screeners, match_count}] }. Intersection mode returns only stocks in ALL listed screeners; union returns stocks in ANY.
| Name | Required | Description | Default |
|---|---|---|---|
| screener_slugs | Yes | List of screener slugs to query (1-24) | |
| mode | No | intersection = stocks in ALL screeners; union = stocks in ANY screener | intersection |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world. Description adds value by explaining the return structure and mode semantics, which are not covered by annotations. No mention of rate limits or auth, but annotations suffice for safety.
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?
Description is two sentences plus a return/mode explanation, all front-loaded with purpose. No redundant or vague phrasing. Every sentence 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?
Given 3 params and no output schema, description explains return format, modes, usage hints, and even notes the slug limit (from schema). It is complete for a search tool with clear semantics, especially with sibling tools available for more detail.
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 covers 2 of 3 parameters with descriptions (screener_slugs, mode). Description does not add per-parameter detail beyond schema; for 'limit' parameter, schema lacks description and description omits it. However, description explains overall behavior and return values, which aids parameter understanding.
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 finds stocks in multiple screeners, with specific use cases and modes (intersection/union). It distinguishes itself from sibling tools like get_screener_data by explicitly targeting confluence across strategies.
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?
Description gives concrete query examples ('which stocks are in both X and Y') implying when to use. It does not explicitly say when not to use, but sibling tools context provides contrast. Overall clear guidance for the target use case.
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.
18 tool updates
v1.0.8- First observed
explain_concept - First observed
get_candles - First observed
get_chart_patterns - First observed
get_market_momentum - First observed
get_options_flow_overview - First observed
get_options_flow_signals - First observed
get_options_flow_timeline - First observed
get_screener_data - First observed
get_stock_info - First observed
get_stock_report - First observed
get_trend_connections - First observed
get_trends - First observed
get_unusual_options_activity - First observed
list_screeners - First observed
ping - First observed
search_patterns - First observed
search_setups - First observed
search_stocks_in_screeners
TDQS
Scored across 18 tools
Each tool targets a distinct resource or action. Even closely related tools like options flow variants (overview vs signals vs timeline vs unusual activity) have clear differentiating descriptions. The search tools (search_patterns, search_setups, search_stocks_in_screeners) are well-separated from lookup tools.
All tool names follow a consistent verb_noun pattern with snake_case: get_*, search_*, list_*, explain_, ping. There is no mixing of styles or unclear verb usage.
18 tools is appropriate for a comprehensive stock scanning platform. The tool count covers all major dimensions (info, candles, patterns, screeners, options, trends) without feeling bloated or sparse.
The tool surface is remarkably complete for the domain. It provides CRUD-like operations (retrieve, search, explain) for each concept, and the composite get_stock_report consolidates many primitives. There are no obvious gaps for typical stock analysis tasks.
Maintenance
Related MCP Connectors
Hosted MCP for stocks, options, Greeks, brokers, order previews, alerts, and workflows.
27 live market-research tools for trading agents: scans, options flow, sentiment, valuation, alerts
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
Screen 11,000+ stocks using natural language and detect chart patterns via MCP.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceReal-time financial market data MCP server. Stocks, crypto, technicals, sentiment, FDA calendar. No API keys required.-
- AlicenseCqualityBmaintenanceHistorical stock pattern intelligence for AI agents. Search 24M pre-computed chart pattern embeddings across 15K stocks and 10 years. 19 tools: pattern similarity search, forward returns, regime analysis, anomaly detection, sector rotation, earnings reactions, correlation shifts, scenario analysis, and more. Returns what happened historically when charts looked like this — compliance-safe22637 PyPI20MIT
- AlicenseAqualityBmaintenanceA modular MCP server providing 64 tools across 13 modules for real-time stock and crypto market data, including scanning, technical analysis, options flow, insider trades, and personalized watchlists.39105 npm6MIT

Tickerbot MCP Serverofficial
AlicenseAqualityBmaintenanceEnables scanning and querying stock market data across thousands of US tickers and top cryptos, with tools for signal analysis, historical replay, and webhook subscriptions.3534 npmMIT