Skip to main content
Glama
stockmarketscan

stockmarketscan/mcp-server

Official

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/mcp

  • Transport: HTTP/SSE (Server-Sent Events)

  • Auth: BYOK — pass your personal sms_* API key as the X-API-Key header

  • Plan: 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)

list_screeners, get_screener_data, search_stocks_in_screeners

Chart Patterns (2)

get_chart_patterns, search_patterns

Options Flow (4)

get_options_flow_overview, get_options_flow_timeline, get_options_flow_signals, get_unusual_options_activity

Stock Info (2)

get_stock_info, get_candles

Composite (2)

get_stock_report, search_setups

Market Context (3)

get_market_momentum, get_trends, get_trend_connections

Education (1)

explain_concept

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

  • Windows: %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

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 :3333

Docker

docker build -t stockmarketscan-mcp .
docker run -p 3333:3333 -e MCP_TRANSPORT=http stockmarketscan-mcp

The 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 tools
explain_conceptA
Read-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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesTerm to explain, e.g. 'call_put_ratio', 'golden_cross', 'consecutive_days', 'strength_score', 'vol_oi_ratio', 'streak'

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_candlesA
Read-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}] }.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker
intervalNoDaily or weekly candles1d
rangeNoRange: 1d, 5d, 1y, 2y, 5y, max, or {N}mo (1-240)6mo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_patternsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker, e.g. AAPL, TSLA, MSFT
intervalNoChart interval1d

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_momentumA
Read-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+.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoSingle day (YYYY-MM-DD)
date_fromNoRange start
date_toNoRange end

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_overviewA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoTrading day (YYYY-MM-DD). Default = latest available day.
sortNoSort order: streak=longest streaks first, volume=highest volume, callput=most extreme C/P, premium=biggest dollarstreak
limitNoRows to return (max 500)

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_signalsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_fromNoStart date (YYYY-MM-DD)
date_toNoEnd date (YYYY-MM-DD)

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_timelineA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker
limitNoDays of history (max 365)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_dataA
Read-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] }.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe screener slug, e.g. 'hot-prospects', 'golden-cross', 'rsi-oversold'
pageNoPage number (1-based)
limitNoRows per page (max 500)

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_infoA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker, e.g. AAPL

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

For a single-parameter, read-only 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_reportA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker, e.g. AAPL
intervalNoPattern detection interval1d

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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

Given the tool's complexity (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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_connectionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
latestNo
dateNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_unusual_options_activityA
Read-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: [...] }.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNoFilter to one symbol
sideNoboth
min_vol_oiNo
min_premium_usdNo
max_dteNo
limitNo

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_screenersA
Read-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: [...] }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

pingA
Read-onlyIdempotent

Minimal sanity check. Returns { status, version, timestamp, cache_size }. No auth needed. Use this to verify the MCP server is reachable and responsive.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_patternsA
Read-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: [...] }.

ParametersJSON Schema
NameRequiredDescriptionDefault
screener_slugsYesScreener slugs to search within
pattern_idsNoPattern ids to filter by (e.g. 'head_shoulders', 'cup_handle'). Empty = all patterns.
intervalNoChart interval1d

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_setupsA
Read-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, ...}] }.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoSide of setups to returnbullish
limitNoMax setups to return

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_screenersA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
screener_slugsYesList of screener slugs to query (1-24)
modeNointersection = stocks in ALL screeners; union = stocks in ANY screenerintersection
limitNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 18 tool updatesv1.0.8
    • First observedexplain_concept
    • First observedget_candles
    • First observedget_chart_patterns
    • First observedget_market_momentum
    • First observedget_options_flow_overview
    • First observedget_options_flow_signals
    • First observedget_options_flow_timeline
    • First observedget_screener_data
    • First observedget_stock_info
    • First observedget_stock_report
    • First observedget_trend_connections
    • First observedget_trends
    • First observedget_unusual_options_activity
    • First observedlist_screeners
    • First observedping
    • First observedsearch_patterns
    • First observedsearch_setups
    • First observedsearch_stocks_in_screeners

TDQS

A4.4/5.0

Scored across 18 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Real-time financial market data MCP server. Stocks, crypto, technicals, sentiment, FDA calendar. No API keys required.
    -
  • A
    license
    C
    quality
    B
    maintenance
    Historical 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-safe
    22
    637 PyPI
    20
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A 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.
    39
    105 npm
    6
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables scanning and querying stock market data across thousands of US tickers and top cryptos, with tools for signal analysis, historical replay, and webhook subscriptions.
    35
    34 npm
    MIT