Skip to main content
Glama
iabraham23

Finviz + SEC EDGAR MCP Server

by iabraham23

Finviz + SEC EDGAR MCP Server

A free MCP server for stock research using Finviz screening and SEC EDGAR filings. No paid subscriptions required.

Works with any MCP-compatible client: Claude Desktop, Claude Code, Cursor, Windsurf, Cline, Zed, and more.

https://financial-research-finviz-sec-mcp.onrender.com/mcp

Collaboration Preference

This project is released under the MIT license. If you build on it, I would highly prefer and appreciate active collaboration.

This is a request about how I would like collaboration to happen, not an additional license restriction.

Related MCP server: OpenInsider MCP

What You Get

24 tools accessible conversationally through any MCP client:

Tool

What it does

screen_stocks

Full Finviz screener with 67+ filters: P/E, ROE, margins, debt ratios, etc.

screen_value_stocks

Quick value screen with sensible defaults

screen_from_url

Paste any finviz.com screener URL and run it

list_filter_options

Discover all available filter codes

get_stock_fundamentals

90+ data points for any ticker

compare_stocks

Side-by-side fundamental comparison

get_sec_filings

List recent SEC filings (10-K, 10-Q, 8-K, etc.)

get_filing_text

Read clean text of SEC filings (iXBRL properly stripped)

get_financial_history

Historical revenue, net income, EPS from XBRL data

get_per_share_fundamentals

Historical per-share valuation inputs from SEC XBRL filings

get_financial_snapshot

Full income statement, balance sheet & cash flow from latest filing

get_financial_ttm

Trailing twelve months for one or more companies

compare_financials

Compare a metric across multiple companies for a given year

get_insider_filings

SEC Form 3/4/5 insider filings with structured trade data

compare_sectors

Sector-level comparison

compare_industries

Industry aggregate comparison

stock_vs_industry

Compare one stock against its industry aggregates

screen_industry

Filter within a specific industry

get_analyst_ratings

Analyst price targets and ratings

get_insider_activity

Insider buy/sell activity

get_stock_news

Recent news headlines

get_earnings_news

Earnings-related and transcript-related headlines

get_annual_price_history

Annual high, low, and average close price history from Yahoo Finance

get_inputs_tab_data

Consolidated extraction package for CWC specific valuation workbook

Data Sources

  • Finviz (free tier): Screener, fundamentals, news, insiders, analyst data. Delayed 15–20 min (irrelevant for value research).

  • SEC EDGAR (free, public): 10-K/10-Q/8-K filings, XBRL financial data, insider forms. No API key needed.


Setup Guide (macOS / Linux / Windows)

Step 1: Prerequisites

You need Python 3.10+ and pip. Check with:

python3 --version   # Should be 3.10 or higher
pip3 --version

If you don't have Python 3.10+, install it from python.org.

Step 2: Fork, Clone & Install

Preferred workflow: fork this repository on GitHub first, then clone your fork so improvements can flow back cleanly.

git clone https://github.com/YOUR_USERNAME/finviz-sec-mcp.git
cd finviz-sec-mcp

# Create a virtual environment
python3 -m venv venv

# Activate it
source venv/bin/activate        # macOS/Linux
# venv\Scripts\activate          # Windows

# Install the package
pip install -e .

For the remote server entrypoint, the package also installs:

finviz-sec-mcp-remote

Step 3: Configure Environment

Copy the example env file and add your email (required by the SEC for EDGAR API access):

cp .env.example .env

Edit .env and set your contact email:

SEC_EMAIL=your-email@example.com

Step 4: Test It Works

# Quick test — should print the current tool count
python -c "
from finviz_sec_mcp.server import server
print(f'{len(server._tool_manager._tools)} tools registered')
"

# Full test — runs a live value screen
python -c "
from finviz_sec_mcp.clients.finviz_client import FinvizClient
results = FinvizClient.screen(
    filters=['cap_largeover', 'fa_pe_u20', 'fa_roe_o15'],
    table='Valuation',
)
print(f'Found {len(results)} value stocks')
for s in results[:3]:
    print(f'  {s[\"Ticker\"]} — P/E: {s.get(\"P/E\")}')
"

Step 5: Configure Claude Desktop

Open your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Add the following (replace /path/to/ with your actual path):

{
  "mcpServers": {
    "finviz-sec": {
      "command": "/path/to/finviz-sec-mcp/venv/bin/finviz-sec-mcp"
    }
  }
}

Finding your actual path:

# Run this in the project folder to get the exact paths
echo "\"command\": \"$(pwd)/venv/bin/finviz-sec-mcp\""

Step 6: Restart Claude Desktop

Quit and reopen Claude Desktop. You should see a hammer icon (🔨) in the chat input area. Click it to see all 24 tools.


Remote Server Deployment

This repo can also run as a public remote MCP over FastMCP streamable HTTP. That is the preferred setup for org-wide use because the production service can deploy from GitHub main and users no longer need .mcpb uploads.

Remote Environment

Set the remote variables from .env.example:

MCP_HOST=0.0.0.0
MCP_PORT=8000
MCP_STREAMABLE_HTTP_PATH=/mcp
SEC_EMAIL=your-email@example.com

Local Remote Run

finviz-sec-mcp-remote

This exposes:

  • /mcp

  • /healthz

Render Deployment

This repo includes a starter render.yaml that:

  • deploys the web service from GitHub

  • runs finviz-sec-mcp-remote

  • health-checks /healthz

To keep production tied to GitHub main, configure the Render production service to deploy only from the main branch. Unpushed local changes will not affect the live server.

This public remote deployment does not require OAuth or a backing database. Anyone with the deployed /mcp URL can connect, so put rate limiting or basic WAF rules in front of it if you expect outside traffic.


Screener Table Views

The screen_stocks tool accepts a table parameter that controls which columns are returned. Each view shows different metrics:

View

Columns Returned

Overview

Company, Sector, Industry, Market Cap, P/E, Price, Change, Volume

Valuation

Market Cap, P/E, Fwd P/E, PEG, P/S, P/B, P/C, P/FCF, EPS This Y, EPS Next Y, EPS Past 5Y, EPS Next 5Y, Sales Past 5Y, Price, Change, Volume

Financial

Market Cap, Dividend, ROA, ROE, ROI, Current Ratio, Quick Ratio, LTDebt/Eq, Debt/Eq, Gross Margin, Oper Margin, Profit Margin, Earnings, Price, Change, Volume

Ownership

Market Cap, Outstanding, Float, Insider Own, Insider Trans, Inst Own, Inst Trans, Float Short, Short Ratio, Avg Volume, Price, Change, Volume

Performance

Perf Week, Perf Month, Perf Quart, Perf Half, Perf Year, Perf YTD, Volatility W, Volatility M, Recom, Avg Volume, Rel Volume, Price, Change, Volume

Technical

Beta, ATR, SMA20, SMA50, SMA200, 52W High, 52W Low, RSI, Price, Change, Volume

Default is Valuation. You can run the same screen with different views to get a fuller picture of the results.


Example Prompts

Once set up, you can just talk naturally:

"Find me undervalued large-cap stocks with strong margins and low debt"

"Compare AAPL, MSFT, and GOOGL on valuation and profitability metrics"

"Show me the most recent 10-K filing for Berkshire Hathaway"

"What's the historical revenue trend for NVDA from SEC filings?"

"Screen for dividend stocks with yield over 3%, payout under 60%, and ROE over 15%"

"Show me all consumer defensive stocks with P/E under 20"

"What are the latest insider trades for AAPL?"

"Get analyst price targets for META"


Troubleshooting

"No module named 'finviz'" → Make sure you activated the venv and ran pip install -e .

No module named 'src' or stale value-investor-mcp paths → You renamed the project but are still using an old editable install or old Claude config. Recreate the venv, reinstall with pip install -e ., and point Claude Desktop at venv/bin/finviz-sec-mcp.

Screener returns empty → Some filter combinations are too restrictive. Try list_filter_options to check valid codes.

SEC EDGAR rate limit → The client auto-throttles to 10 req/sec. If you hit issues, wait a few seconds.

Claude Desktop doesn't show the tools → Double-check the path in claude_desktop_config.json. The command should point to venv/bin/finviz-sec-mcp inside this project, not your system Python.

License

MIT. See LICENSE.

Available Tools

24 tools
compare_financialsA

Compare a financial metric across multiple companies using SEC XBRL data. Returns actual reported values from SEC filings.

Companies with non-December fiscal year ends are automatically handled — no ticker is silently dropped.

Args: tickers: Comma-separated ticker symbols, e.g. "AAPL,MSFT,GOOGL". metric: XBRL concept name. Common metrics: "Revenues" — Total revenue "NetIncomeLoss" — Net income "GrossProfit" — Gross profit "OperatingIncomeLoss" — Operating income "EarningsPerShareBasic" — Basic EPS "EarningsPerShareDiluted" — Diluted EPS "Assets" — Total assets "Liabilities" — Total liabilities "StockholdersEquity" — Shareholder equity "CashAndCashEquivalentsAtCarryingValue" — Cash on hand "LongTermDebt" — Long-term debt "CommonStockSharesOutstanding" — Shares outstanding "ResearchAndDevelopmentExpense" — R&D expense "SellingGeneralAndAdministrativeExpense" — SG&A expense year: Calendar year to compare (e.g. 2024). Defaults to previous year if not specified. quarter: Optional quarter (1-4). 0 = full year (default).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
metricNoRevenues
quarterNo
tickersYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are present, so the description carries the behavioral disclosure burden. It adds useful context about non-December fiscal year ends being handled automatically and about returning actual reported values, but it does not mention read-only status, error behavior, or data limitations.

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 purpose is front-loaded, and the Args/metric list is well-organized. The metric list is long but earns its place because XBRL concept names are not obvious and the schema provides no descriptions.

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 0% schema coverage and no annotations, the description is nearly complete: all four parameters are explained and the metric dictionary removes guesswork. It does not specify units/currency or invalid-ticker behavior, but the output schema covers return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description fully compensates: it explains tickers format, maps XBRL concept names to human-readable metrics, clarifies year default behavior, and defines quarter semantics. This goes well beyond the bare 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 a specific verb ('Compare'), a specific resource ('a financial metric across multiple companies'), and a data source ('SEC XBRL data'). It also clarifies that it returns actual reported values, which helps distinguish it from normalized or adjusted comparison tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the use case: cross-company metric comparison from SEC filings. However, it never explicitly states when to prefer this over siblings like compare_stocks, compare_sectors, or compare_industries, nor does it mention exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_industriesA

Compare all industries with aggregate metrics from Finviz. Returns industry-level aggregates for all ~144 industries. Data source: Finviz groups page (current snapshot). To screen stocks within a specific industry, use screen_industry.

Args: view: Data view — "overview", "valuation", or "performance". See compare_sectors for column details per view. order: Sort column — e.g. "name", "marketcap", "pe", "change", "volume", "dividendyield".

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNooverview
orderNoname

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It discloses the data source (Finviz groups page) and notes it is a 'current snapshot,' implying no historical data. However, it does not explicitly state read-only behavior, potential rate limits, or any other side effects, though these are not critical for a simple comparison tool.

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 and well-structured, leading with the core purpose and then detailing parameters in an Args section. There is no fluff; every sentence adds value, including the pointer to the alternative tool.

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?

With an output schema present, return values are covered elsewhere. The description covers the data source, parameter options, and the alternative tool. It does not mention default sorting behavior beyond the 'order' default, but this is minor. Overall, the description is sufficient for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the 'view' parameter with three enumerated values ('overview', 'valuation', 'performance') and the 'order' parameter with concrete examples ('name', 'marketcap', 'pe', etc.). It also points to compare_sectors for column details, providing actionable guidance beyond the bare 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?

The description clearly states the tool compares all industries and returns aggregate metrics, specifying the resource (industries) and the action (compare). It explicitly differentiates from the sibling screen_industry by directing users there for screening stocks within a specific industry, making the purpose distinct.

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 provides an explicit alternative: 'To screen stocks within a specific industry, use screen_industry.' This tells the agent when not to use this tool and what to use instead. The description also implies it is for broad industry-level comparison across all industries, giving clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_sectorsA

Compare all market sectors with aggregate metrics from Finviz. Returns sector-level aggregates (median P/E, total market cap, etc.) for all 11 sectors in a single view. Data source: Finviz groups page (current snapshot).

Args: view: Data view to return. Options: "overview" — Stocks, Market Cap, Dividend, P/E, Fwd P/E, PEG, LTDebt/Eq, Debt/Eq, Float Short, Recom, Change, Volume "valuation" — Market Cap, P/E, Fwd P/E, PEG, P/S, P/B, P/C, P/FCF, EPS past 5Y, EPS next 5Y, Sales past 5Y, Change, Volume "performance" — Perf Week, Perf Month, Perf Quart, Perf Half, Perf Year, Perf YTD, Avg Volume, Rel Volume, Change, Volume order: Sort column — e.g. "name", "marketcap", "pe", "change", "volume", "dividendyield".

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNooverview
orderNoname

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the data source (Finviz groups page) and that it returns a 'current snapshot', which gives some context about data freshness. However, it does not disclose any potential side effects, error conditions, or limitations beyond the snapshot nature. For a read-only tool, this is adequate but not rich; it lacks details on pagination or response quirks.

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 and front-loaded with a clear summary. The parameter documentation is detailed but necessary, and the formatting of view options is readable. It is slightly long due to the column lists, but every line earns its place. The order examples are concise 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?

The tool is relatively simple with two optional parameters, and the description covers the purpose, parameters, and data source. An output schema exists, so return values are handled. It does not explicitly mention that all 11 sectors are always returned or address potential edge cases, but for a comparison tool this is likely sufficient. Overall, the description is complete enough for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It thoroughly explains both parameters: 'view' lists all three options with the exact column sets included, and 'order' provides concrete examples of valid sort columns. This goes well beyond the schema, which only declares type and default, making it easy for an agent to select appropriate values.

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's function: comparing all market sectors with aggregate metrics from Finviz. It specifies that it returns sector-level aggregates for all 11 sectors in a single view, which distinguishes it from sibling tools like compare_industries or compare_stocks. The verb 'compare' and resource 'sectors' are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like compare_industries or compare_stocks. Usage is implied from the tool's name and purpose, but there is no direct guidance on when to choose this over a sibling. It does not mention any exclusions or alternative conditions, so it relies on the agent inferring the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_stocksA

Compare fundamental metrics across multiple stocks side-by-side. Uses Finviz current snapshot data (~15-20 min delayed). All values are point-in-time — for historical comparisons across years use compare_financials (SEC XBRL actuals) instead.

Args: tickers: Comma-separated tickers, e.g. "AAPL,MSFT,GOOGL" metrics: Optional comma-separated metric names to compare. If empty, uses default value-investing metrics: P/E, Forward P/E, P/B, P/FCF, PEG, ROE, ROA, Profit Margin, Oper. Margin, Debt/Eq, Current Ratio, Dividend %, EPS (ttm), EPS next Y, EPS past 5Y, Market Cap, Price

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsNo
tickersYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the data source (Finviz), the delay (~15-20 min), and the point-in-time nature of the data. It does not mention side effects, but a compare operation is inherently read-only and the data source disclosure is the most important 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 front-loaded with the core purpose, followed by data freshness and the key alternative. The args section is compact and informative, and every sentence earns its place without redundant filler.

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?

The description is complete for this tool's complexity: it covers purpose, data source, temporal scope, default behavior, and the alternative for historical comparisons. Since an output schema exists, the description does not need to explain return values, and nothing critical is missing.

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 0%, so the description must compensate. It explains tickers as comma-separated with an example, and explains metrics as optional comma-separated names with a clear default behavior and the full default metric list. It does not enumerate all possible custom metric names, but it provides enough for effective use.

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 states a specific verb and resource: 'Compare fundamental metrics across multiple stocks side-by-side.' It clearly distinguishes itself from compare_financials by emphasizing current snapshot data vs. historical SEC XBRL actuals, so an agent can differentiate between them.

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 explicitly says to use compare_financials for historical comparisons across years, giving a clear when-not-to-use condition. It also clarifies that all values are point-in-time, which guides when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_analyst_ratingsB

Get analyst price targets and ratings for a stock from Finviz. Shows date, analyst firm, rating action, and price target (from/to). Useful for gauging sell-side sentiment and consensus target price.

Args: ticker: Stock ticker symbol. count: Number of recent ratings to return (default 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It states the data source (Finviz) and what is shown, but does not clarify whether the operation is read-only (though likely), rate limits, or data freshness. It also doesn't explain what happens with invalid tickers or missing ratings.

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 concise and front-loads the purpose in the first sentence. The args section is clearly laid out and efficient, with no fluff.

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 tool is simple with 2 parameters and an output schema, so the description covers the essentials. However, it lacks guidance on edge cases (e.g., unknown ticker) and doesn't specify whether the output is ordered or limited, which could matter for agents.

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 0%, meaning the description must compensate. It describes the 'count' parameter as 'Number of recent ratings to return (default 10)', which is helpful. For 'ticker', it just says 'Stock ticker symbol'—minimal but adequate. No format details like uppercase or exchange suffix are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets analyst price targets and ratings for a stock from Finviz, listing the specific fields (date, analyst firm, rating action, price target). It is distinct from siblings like get_stock_news or get_insider_filings, though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions it is useful for gauging sell-side sentiment and consensus target price, implying a use case. However, it does not explicitly state when not to use it or name alternatives (e.g., when to use get_stock_news for news sentiment).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_annual_price_historyA

Get annual high, low, and average close prices for a stock. Returns one row per calendar year with the highest intraday price, lowest intraday price, and mean daily closing price.

Data source: Yahoo Finance (free, no API key). Prices are split-adjusted.

Args: ticker: Stock ticker symbol (e.g. "AAPL", "MSFT"). years: Number of years of history to fetch (default 11).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsNo
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Although no annotations exist, the description carries the behavioral burden well: it discloses the data source (Yahoo Finance), that no API key is needed, that prices are split-adjusted, and that results are aggregated per calendar year. It does not detail error handling for invalid tickers or rate limits, but for a free read-only lookup this is a minor gap.

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 compact and front-loaded with the core purpose, followed by aggregation details and data-source context. Minor redundancy exists between 'annual high, low, and average close prices' and the subsequent restatement as 'highest intraday, lowest intraday, and mean daily closing price,' but this is not harmful.

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 two-parameter read-only tool with an output schema, the description is nearly complete: it explains row granularity, source, split adjustment, and parameter meaning. Nothing an agent needs to invoke it correctly is missing; only edge-case behavior like unavailable tickers is left unspecified.

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 0%, so the description compensates by defining both parameters. ticker gets examples ('AAPL', 'MSFT'), and years is explained as the number of years of history with its default. It lacks constraints (e.g., positive integer), but the schema's integer type and default cover the basic contract.

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?

Uses a specific verb and resource: fetching annual high, low, and average close prices. The second sentence further specifies the output granularity (one row per calendar year, highest intraday, lowest intraday, mean daily close), which separates it from the fundamental-data tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly compare this tool to alternatives like get_financial_history or get_stock_fundamentals, nor does it state when not to use it. Usage is only implied by the tool's purpose: use when annual price summary data is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_earnings_newsA

Get earnings-related headlines for a stock from Finviz. Filters the full news feed to only headlines containing keywords: earnings, results, guidance, conference call, webcast, transcript. Use this for post-earnings analysis or when building an earnings update. For all news (not just earnings), use get_stock_news.

Args: ticker: Stock ticker symbol. count: Number of matching headlines to return (default 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

The description discloses the filtering behavior (applies keyword filter to the full news feed) and the source (Finviz), which is vital since no annotations are provided. However, it does not explicitly state that this is a read-only operation or mention any potential rate limits or data freshness caveats, but the 'get' verb implies read-only and the filtering detail is sufficient for basic understanding.

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 compact, front-loaded with the core purpose, then usage guidance, then parameter details. Every sentence adds value—no filler or redundancy, making it efficient for an agent to parse.

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 tool with only two parameters and a straightforward filtering operation, the description covers purpose, usage, filtering logic, and parameter semantics fully. The presence of an output schema means the description doesn't need to detail return format, and no critical gaps remain for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no descriptions for ticker or count, so the description's 'Args' section fully explains both: ticker as a symbol and count as the number of headlines with a default of 10. This compensates completely for the 0% schema coverage and adds meaning beyond the raw 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?

The description clearly states the tool fetches earnings-related headlines for a stock from Finviz, and lists the specific filtering keywords. This distinguishes it from the sibling get_stock_news, which returns all news. The verb 'get' and resource 'earnings-related headlines' are precise and 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?

Explicitly states when to use this tool ('post-earnings analysis' or 'building an earnings update') and when not to, directing users to get_stock_news for general news. This gives an agent clear routing logic without needing to infer from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_filing_textA

Fetch specific narrative sections from the most recent SEC filing. For 10-K and 10-Q filings, uses edgartools' structured TenK/TenQ objects to pull named items directly — no iXBRL overhead, no wasted character budget on table-of-contents boilerplate. For 20-F filings, uses edgartools markdown extraction from the primary filing HTML and slices by 20-F item headings. For other form types (8-K, etc.), falls back to full-text extraction.

Args: ticker: Stock ticker symbol. form_type: Form to fetch — "10-K", "10-Q", "8-K", etc. sections: Comma-separated list of items to retrieve. Default "Item 7,Item 1A" returns MD&A + Risk Factors for 10-K / 10-Q. For 20-F, useful sections include: "Item 3.D", "Item 4", "Item 5", "Item 18", plus aliases like "risk_factors", "business", "mda", "financial_statements". Supported formats: Full: "Item 1", "Item 1A", "Item 7", "Item 7A", "Item 8" Short: "1", "1A", "7", "7A" Aliases: "mda", "risk_factors", "business" Pass sections="" to get Item 7 + Item 1A (same as default). Use get_sec_filings first to confirm available items. max_chars_per_section: Max characters per section (default 8000). Each section is truncated independently.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
sectionsNoItem 7,Item 1A
form_typeNo10-K
max_chars_per_sectionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. It discloses extraction mechanisms (structured TenK/TenQ objects, markdown slicing for 20-F, full-text fallback), confirms no iXBRL overhead, and explains per-section truncation behavior. It does not mention error conditions or rate limits, but the disclosure is strong.

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 longer than average but densely packed with necessary detail, organized from purpose to form-type behavior to parameter documentation. Every sentence earns its place, and the key purpose is front-loaded.

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?

The tool is complex due to multiple form types and section-format variations, but the description covers all relevant scenarios, defaults, aliases, and the prerequisite flow. With an output schema present, the lack of explicit return-value documentation is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description fully compensates by documenting all four parameters in detail. It explains sections formats, aliases, defaults, the meaning of empty strings, and per-parameter truncation. This is far beyond the bare 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?

The description states a specific verb ('Fetch') and resource ('specific narrative sections from the most recent SEC filing'), and immediately differentiates behavior across 10-K/10-Q, 20-F, and other form types. This clearly identifies what the tool does and distinguishes it from siblings like get_sec_filings and get_stock_fundamentals.

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 clear context for when to use the tool across form types and provides an explicit prerequisite: 'Use get_sec_filings first to confirm available items.' It does not fully enumerate alternatives or say when not to use this tool, but the usage context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_financial_historyA

Get historical financial data from SEC XBRL filings. Returns actual reported values — not estimates or scraped data.

Args: ticker: Stock ticker symbol. metric: XBRL concept name. Common value-investing metrics: "Revenues" — Total revenue "NetIncomeLoss" — Net income "GrossProfit" — Gross profit "OperatingIncomeLoss" — Operating income "EarningsPerShareBasic" — Basic EPS (use unit "USD/shares") "EarningsPerShareDiluted" — Diluted EPS (use unit "USD/shares") "Assets" — Total assets "Liabilities" — Total liabilities "StockholdersEquity" — Shareholder equity "CashAndCashEquivalentsAtCarryingValue" — Cash on hand "LongTermDebt" — Long-term debt "CommonStockSharesOutstanding" — Shares outstanding (unit "shares") "ResearchAndDevelopmentExpense" — R&D expense "SellingGeneralAndAdministrativeExpense" — SG&A expense "InterestExpense" — Interest expense "IncomeTaxExpenseBenefit" — Income tax expense "DepreciationDepletionAndAmortization" — D&A "CapitalExpenditure" — Capital expenditures "NetCashProvidedByUsedInOperatingActivities" — Operating cash flow "Goodwill" — Goodwill (balance sheet) "IntangibleAssetsNetExcludingGoodwill" — Intangible assets net of goodwill "WeightedAverageNumberOfDilutedSharesOutstanding" — Diluted shares (unit "shares") periods: Number of recent periods to show (default 8). period_type: Controls which filings are included: "annual" — Annual filings (10-K / 20-F / 40-F). Clean year-over-year series. RECOMMENDED for financial modeling. "quarterly" — 10-Q only. Clean quarter-over-quarter series, useful for recent trend analysis. "interim" — Interim filings (10-Q / 6-K). Includes foreign private issuer interim XBRL when present. May include both ~3-month and ~6-month periods. "all" — Annual + interim filings mixed (not recommended for modeling).

ParametersJSON Schema
NameRequiredDescriptionDefault
metricNoRevenues
tickerYes
periodsNo
period_typeNoannual

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that values are 'actual reported values — not estimates or scraped data' and highlights quirks like interim filings possibly including both 3-month and 6-month periods. It also notes that 'all' mixes filing types. These are valuable behavioral insights, though it doesn't cover rate limits, errors, or pagination, which are minor for this data retrieval tool.

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 long but well-structured: a brief intro, then an Args section with bullet points. It is front-loaded with the core purpose and then provides necessary parameter details. Every metric line earns its place, though the metric list could potentially be condensed by referencing a full taxonomy. It is not excessively verbose given the complexity.

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?

An output schema exists, so return values are covered by that. The description thoroughly documents all four parameters and their nuances, including period_type behavior. It lacks details on edge cases like invalid tickers or error handling, but for a historical data retrieval tool with an output schema, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully compensate. It does: it explains ticker, lists over 20 common XBRL metrics with human-readable meanings, defines periods with a default, and details four period_type options with their filing sources and use cases. This exceeds what the bare schema provides and is essential for correct usage.

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's purpose: 'Get historical financial data from SEC XBRL filings.' It specifies the resource (SEC XBRL) and distinguishes it from estimates or scraped data, setting it apart from sibling tools like get_financial_ttm or get_financial_snapshot. The verb 'get' and the resource are explicit and unambiguous.

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 provides clear context on when to use different period_type values, with 'annual' recommended for financial modeling and 'quarterly' for recent trend analysis. It also warns that 'all' is not recommended for modeling. However, it does not explicitly name alternative tools or state when to avoid this tool entirely, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_financial_snapshotA

Get a complete financial snapshot from the latest SEC filing: income statement, balance sheet, and cash flow statement with multi-period comparison. Also includes quick-access metrics (revenue, net income, FCF, etc.).

This is the best starting point for company financial analysis. Returns actual XBRL-tagged data from SEC filings — not estimates. Powered by edgartools' Financials API.

Args: ticker: Stock ticker symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral disclosure burden. It states the data is actual XBRL-tagged data from SEC filings (not estimates) and mentions the underlying edgartools Financials API. It does not disclose any potential side effects, rate limits, or data freshness limitations, though as a read-only retrieval tool these are less critical.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with a direct first sentence, then a promotional sentence ('best starting point'), an implementation detail, and an Args section. The promotional and API-powered sentences add moderate noise but the overall length is acceptable.

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 the simple single-parameter input, the presence of an output schema, and a description that covers content and data source, the tool is adequately specified for an agent. It doesn't cover edge cases like invalid tickers or filing availability, but those are unlikely to be fully specified in any tool description.

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?

The input schema only provides a 'Ticker' title with no property description (0% coverage). The description adds 'Stock ticker symbol,' which clarifies the parameter type but provides no format examples or exchange details. For a single simple parameter, this is minimally sufficient.

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 states a specific verb ('Get') and a specific resource ('complete financial snapshot from the latest SEC filing') and enumerates the content (income statement, balance sheet, cash flow statement, quick-access metrics). It also clarifies the data source as actual XBRL-tagged data, not estimates, which helps distinguish it from estimation-based tools. Although it doesn't name sibling tools explicitly, the description itself is unambiguous.

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 a clear usage context: 'This is the best starting point for company financial analysis.' This tells an agent when to choose it. However, it doesn't mention when not to use it or name alternative tools for more specific historical or TTM data, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_financial_ttmA

Get Trailing Twelve Months (TTM) value for one or more companies. Sums the four most recent quarterly filings for income statement / cash flow metrics, or returns the latest quarter for balance sheet items. Useful for up-to-date analysis without waiting for the next annual filing.

Args: tickers: Comma-separated ticker symbols, e.g. "AAPL,MSFT,GOOGL". metric: XBRL concept name. Income statement / cash flow metrics (summed over 4 quarters): "Revenues" — Total revenue "NetIncomeLoss" — Net income "GrossProfit" — Gross profit "OperatingIncomeLoss" — Operating income "ResearchAndDevelopmentExpense" — R&D expense "SellingGeneralAndAdministrativeExpense" — SG&A "InterestExpense" — Interest expense "IncomeTaxExpenseBenefit" — Income tax "DepreciationDepletionAndAmortization" — D&A "CapitalExpenditure" — CapEx "NetCashProvidedByUsedInOperatingActivities" — Operating FCF Balance sheet metrics (latest quarter, no summing): "Assets", "Liabilities", "StockholdersEquity", "CashAndCashEquivalentsAtCarryingValue", "LongTermDebt"

ParametersJSON Schema
NameRequiredDescriptionDefault
metricNoRevenues
tickersYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses key behavioral traits: it sums four most recent quarterly filings for income statement/cash flow metrics, and returns the latest quarter for balance sheet items. It also lists the exact metric names accepted. Since no annotations are provided, the description carries the full burden, and it does a good job explaining the calculation logic. However, it doesn't mention potential edge cases like missing quarters, fiscal year alignment, or data availability for delisted companies.

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 with a clear opening sentence, a brief explanation of the calculation method, and a formatted list of metrics. It is somewhat long due to the metric list, but every line serves a purpose. The front-loading is good: the core purpose and calculation logic appear before the detailed metric enumeration.

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 is complete for a tool with 2 parameters and an output schema. It covers the input format, the metric options, and the calculation behavior. The output schema exists, so return values don't need explanation. Minor gaps: no mention of error handling for invalid tickers, no mention of data frequency or timezone, and no explicit statement about what happens if a company has fewer than four quarters of data.

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 0%, so the description must compensate. It does: it explains the 'tickers' parameter format ('Comma-separated ticker symbols, e.g. "AAPL,MSFT,GOOGL"') and provides a comprehensive list of valid 'metric' values with human-readable labels. The default value for 'metric' (Revenues) is not explicitly stated in the description, but the schema provides it. The description adds significant meaning beyond the bare 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?

The description clearly states the tool's purpose: 'Get Trailing Twelve Months (TTM) value for one or more companies.' It specifies the verb (get), the resource (TTM financial metrics), and the scope (one or more companies). It also distinguishes itself from related tools like get_financial_history and get_financial_snapshot by explaining the TTM calculation method (summing four quarters vs latest quarter for balance sheet).

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 explains when to use this tool: 'Useful for up-to-date analysis without waiting for the next annual filing.' It also provides a clear list of supported metrics and distinguishes between income statement/cash flow metrics (summed) and balance sheet metrics (latest quarter). However, it does not explicitly state when NOT to use it or name alternative tools for different use cases, such as get_financial_history for historical multi-year data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_inputs_tab_dataA

Get a structured extraction package for the valuation workbook INPUTS tab.

This tool consolidates the key MCP data needed for the workbook into one response, covering:

  • current company snapshot fields

  • current EPS / forward EPS / PEG / forward PE

  • historical annual price data

  • historical per-share fundamentals

  • true TTM diluted EPS

Conventions:

  • Current EPS uses Finviz EPS (ttm)

  • Forward EPS uses Finviz EPS next Y

  • PEG basis defaults to industry

  • LTM EPS Diluted uses SEC TTM diluted EPS

  • JSON payload is omitted by default for readability; pass include_json=True to append the raw structured payload

Args: ticker: Stock ticker symbol. price_years: Number of years for annual price history. fundamentals_years: Number of annual periods for per-share fundamentals. peg_basis: Currently supports "industry" only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
peg_basisNoindustry
price_yearsNo
include_jsonNo
fundamentals_yearsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses important behavioral details: JSON payload is omitted by default and can be appended with include_json, and it specifies conventions for EPS and LTM EPS sources. However, it does not explicitly state read-only nature, rate limits, or potential side effects. While the retrieval context implies read-only, the lack of explicit statement and any error behavior leaves some gaps.

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 organized with a clear lead sentence, a bullet list of covered items, and a conventions section. The additional details are purposeful and not redundant. It is slightly long but front-loaded with the primary action and scope. Every sentence contributes to understanding what the tool does and how to use it.

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 the tool has an output schema (so return format is covered externally) and no annotations, the description provides enough operational detail: parameter explanations, default behaviors, and conventions. It adequately prepares an agent to call the tool correctly. The only significant omission is explicit usage guidance versus alternatives, but that is covered under usage guidelines and does not impact the call itself.

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 0%, so the description must compensate. It does: each parameter is explained in the Args section beyond the schema's titles and defaults. For instance, it clarifies price_years as 'years for annual price history', fundamentals_years as 'annual periods for per-share fundamentals', and notes peg_basis supports only 'industry'. This adds significant value 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?

The description clearly states it retrieves a structured extraction package for the valuation workbook INPUTS tab. It enumerates the specific data included (company snapshot, EPS, price history, etc.), which makes its purpose concrete and distinguishes it from sibling tools that focus on narrower data points. This is not a tautology; it names a specific resource and scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool consolidates, implying it is a one-stop shop for the INPUTS tab. However, it does not explicitly state when to prefer this over alternatives like get_stock_fundamentals or get_financial_snapshot, nor does it mention when not to use it. There is no direct comparison to siblings, so the guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_insider_activityA

Get recent insider trading activity (buys/sells) from Finviz. Shows insider name, relationship to company, transaction type, date, share count, and dollar value. Useful for gauging management conviction. For SEC Form 3/4/5 filings with EDGAR links, use get_insider_filings.

Args: ticker: Stock ticker symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It states the data source (Finviz), the type of data returned, and the fields shown, which gives a reasonable picture of the tool's behavior. However, it does not disclose whether the data is delayed, whether it covers only recent activity vs. full history, or any rate limits or pagination behavior. For a read-only data retrieval tool, this is adequate but not rich.

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 concise and front-loaded with the core purpose, followed by the data fields and a use case. The Args section is minimal but appropriate for a single parameter. It earns a 4 rather than 5 because the use-case sentence and the sibling distinction could be slightly more integrated, but there is no waste.

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 tool has a single parameter, an output schema, and a clear sibling distinction. The description covers the data source, the fields returned, and the use case. It does not mention data freshness, pagination, or any limitations, but for a simple single-ticker lookup with an output schema, the description is largely complete. A 4 is appropriate because the missing behavioral details (e.g., how far back 'recent' goes) could matter to an agent.

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 0%, so the description must compensate. It does explain the single parameter 'ticker' as 'Stock ticker symbol' in the Args section, which adds minimal meaning beyond the schema's 'Ticker' title. Since there is only one parameter and it is a standard ticker symbol, the description is sufficient but not detailed (e.g., no format examples like 'AAPL' or 'MSFT').

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 retrieves recent insider trading activity (buys/sells) from Finviz, and lists the specific data fields returned (insider name, relationship, transaction type, date, share count, dollar value). It also distinguishes itself from the sibling get_insider_filings by noting that tool covers SEC Form 3/4/5 filings with EDGAR links.

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 provides a clear use case ('useful for gauging management conviction') and explicitly names the alternative for SEC filings (get_insider_filings). It does not state when not to use this tool beyond the SEC filings distinction, but the context is sufficient for an agent to choose between the two insider-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_insider_filingsA

Get insider trading SEC filings (Form 3, 4, 5) with structured data. Returns filing dates, insider names, positions, trade details, and direct EDGAR links. Powered by edgartools' Form4 parser.

For a human-readable summary of recent buys/sells with dollar values, use get_insider_activity (Finviz) instead.

Args: ticker: Stock ticker symbol. max_results: Number of filings to return.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are present, so the description must carry the behavioral burden. It usefully discloses the output contents and data source ('Powered by edgartools' Form4 parser'), but it does not explicitly state read-only/side-effect behavior, authentication needs, or pagination/limitations; for a get tool this is adequate but not complete.

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 compact and well-structured: purpose, output details, alternative usage, then parameter definitions. Every sentence earns its place and the key purpose is front-loaded.

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 two-parameter read tool with an output schema, the description covers the essential context: what filing types are returned, what data fields are included, the underlying parser, and the sibling alternative for human-readable data. It does not mention edge cases or limits, but these are less critical given the simple parameters and output schema.

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 0%, so the description must compensate for the bare property titles. The Args section adds functional meaning: ticker is a 'Stock ticker symbol' and max_results is the 'Number of filings to return.' This is sufficient for both parameters, though not deeply detailed.

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 opens with a specific verb and resource: 'Get insider trading SEC filings (Form 3, 4, 5) with structured data.' It names the exact form types and the structured-data nature, which distinguishes it from sibling tools like get_sec_filings and get_filing_text.

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 explicitly identifies an alternative: 'For a human-readable summary of recent buys/sells with dollar values, use get_insider_activity (Finviz) instead.' This gives agents a clear when-to-use/when-not-to-use rule without requiring them to inspect other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_per_share_fundamentalsA

Get historical per-share fundamentals from SEC XBRL filings. Returns annual series of key valuation inputs computed from actual reported values — replaces paid data services like SimFin.

Metrics returned per year:

  • Diluted Shares Outstanding (weighted average, millions)

  • Book Value per Share (Equity / Diluted Shares)

  • Tangible Book Value per Share ((Equity - Goodwill - Intangibles) / Shares)

  • Revenue per Share

  • Operating Cash Flow per Share

  • Diluted EPS (Net Income / Diluted Shares, split-adjusted)

  • Total Revenue (millions)

  • Operating Cash Flow (millions)

Args: ticker: Stock ticker symbol. periods: Number of annual periods (default 10, max ~10 years of data).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
periodsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the data source (SEC XBRL filings), the computation approach ('computed from actual reported values'), and a clear limitation ('max ~10 years of data'). This is meaningful behavioral context beyond a generic 'Get data' statement.

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 with a lead purpose sentence, a bulleted metric list, and an args section. The 'replaces paid data services like SimFin' note adds context without bloating the text, and each metric listed is distinct and useful.

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 presence of an output schema, the description need not explain return structure. It thoroughly covers purpose, parameters, data source, and limitations, leaving little for an agent to infer before making a correct call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description fully documents both parameters: 'ticker: Stock ticker symbol' and 'periods: Number of annual periods (default 10, max ~10 years of data).' This completely compensates for the schema's lack of property descriptions.

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 states a specific verb+resource: 'Get historical per-share fundamentals from SEC XBRL filings.' The detailed metric list (Diluted Shares, Book Value per Share, etc.) distinguishes it clearly from sibling tools like get_financial_history or get_stock_fundamentals, which cover broader or different financial metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by focusing on historical per-share fundamentals from SEC XBRL data, and notes it 'replaces paid data services like SimFin,' but it never names sibling tools or states when not to use it. An agent must infer when this is preferred over get_financial_history or get_stock_fundamentals.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sec_filingsA

List recent SEC filings for a company with EDGAR links. Use this to find filing dates and document URLs before calling get_filing_text. Data source: SEC EDGAR via edgartools.

Args: ticker: Stock ticker symbol. form_type: Filter by form type. Common options: "10-K" — Annual report (full financials, risk factors, MD&A) "10-Q" — Quarterly report "8-K" — Current report (material events) "DEF 14A" — Proxy statement (executive comp, governance) "4" — Insider trading (Form 4) "S-1" — IPO registration "" — All forms (default) max_results: Number of filings to return (default 15).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
form_typeNo
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral disclosure burden. It states the data source (SEC EDGAR via edgartools) and implies a read-only listing operation, but it does not explicitly declare that it has no side effects, nor does it disclose any limitations like pagination or rate limits. The description is adequate but not richly transparent about edge behaviors.

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 structured with a purpose sentence, a usage sentence, and a well-organized Args list. It is longer than minimal due to the form_type explanations, but every sentence adds value and the critical information (purpose and usage) is front-loaded. No fluff is present.

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 tool with 3 parameters, no annotations, and no schema descriptions, the description covers everything an agent needs: purpose, usage context, parameter semantics, and data source. Since an output schema exists, return values need not be described. It is fully complete for correct invocation and selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides no parameter descriptions (coverage 0%), so the description fully compensates. It explains ticker as a stock ticker symbol, form_type with a list of common values and their meanings (including the default ''), and max_results with its default. This is exemplary parameter documentation.

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 opens with 'List recent SEC filings for a company with EDGAR links,' which is a specific verb (List) plus resource (SEC filings) and scope (for a company). It further clarifies the purpose by stating it is used to find filing dates and document URLs, and it distinguishes itself from the sibling get_filing_text by positioning itself as the prerequisite step.

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 says 'Use this to find filing dates and document URLs before calling get_filing_text,' giving clear when-to-use context. It also details form_type options with their meanings. However, it does not mention when not to use it or alternatives like get_insider_filings, so it lacks explicit exclusions but provides sufficient guidance for typical usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_fundamentalsA

Get comprehensive fundamental data for a stock from Finviz. Returns a current snapshot (~15-20 min delayed) covering valuation ratios, profitability metrics, balance sheet highlights, ownership, and technical indicators across 90+ fields.

Data source: Finviz (current snapshot). For historical time-series data use get_financial_history or get_financial_ttm.

Args: ticker: Stock ticker symbol (e.g. "AAPL", "BRK-B").

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the data source (Finviz), the snapshot nature, and the approximate delay (~15-20 min), which are meaningful behavioral traits. It does not mention rate limits or auth requirements, but for a read-only single-ticker snapshot tool, the key behavioral context is present.

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 and front-loaded: purpose, return content, source, alternatives, and args. There is minor redundancy in repeating 'Finviz' and 'current snapshot' in the 'Data source' line, but overall every section earns its place and the length is appropriate.

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 one-parameter snapshot tool with an output schema present, the description is complete. It covers what the tool returns, the data source, the delay, the scope of fields, and the key alternative for historical data. Nothing an agent needs to invoke it correctly is missing.

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 0%, so the description must compensate. It does so by documenting the ticker parameter with a clear definition and examples ('AAPL', 'BRK-B'), which adds format and usage nuance beyond the bare schema. The guidance is brief but sufficient for a single required parameter.

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 opens with a specific verb and resource: 'Get comprehensive fundamental data for a stock from Finviz.' It lists concrete coverage areas (valuation, profitability, balance sheet, ownership, technical indicators) and explicitly distinguishes itself from historical data tools by calling itself a current snapshot. This makes it easy to separate from siblings like get_financial_history and get_financial_ttm.

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 clearly states when not to use this tool: 'For historical time-series data use get_financial_history or get_financial_ttm.' It also implies the use case—current snapshot fundamental data—through the delay and coverage wording. It does not explicitly compare against get_financial_snapshot or get_per_share_fundamentals, but the 'comprehensive' and '90+ fields' framing provides enough context for an agent to choose correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_newsA

Get recent news headlines for a stock from Finviz. Returns headlines with source, timestamp, and URL. For earnings-specific headlines only, use get_earnings_news.

Args: ticker: Stock ticker symbol. count: Number of headlines to return (default 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the return content (headlines with source, timestamp, URL) which is useful, but it does not mention any side effects, potential errors, rate limits, or confirm it is read-only. Since it's a 'get' operation, read-only is implicit, but the description doesn't explicitly state it or any other behavioral nuances.

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 compact and front-loaded. It starts with the purpose, then the return format, then the alternative, then the Args section. Each sentence serves a distinct function with no redundancy. The structure is easy to scan and parse.

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?

With an output schema present, return values are covered. The description explains both parameters, the purpose, and the distinction from a sibling. It could mention any constraints on the count (e.g., maximum) or note that it is a live fetch, but these are minor gaps given the overall completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% – the schema only provides parameter names and types, no descriptions. The description compensates fully by explaining both parameters: 'ticker: Stock ticker symbol' and 'count: Number of headlines to return (default 10)'. This adds clear semantic meaning 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?

The description states a specific verb (get), resource (recent news headlines for a stock), and source (Finviz), and clarifies what is returned (headlines with source, timestamp, URL). It explicitly differentiates from the sibling get_earnings_news, so an agent can distinguish it without opening schemas.

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 an explicit when-not condition: for earnings-specific headlines, use get_earnings_news. This clearly routes away from the tool in that case. However, it does not explicitly state when to use this tool beyond the general definition, but that is implied by the purpose and the alternative, so it's adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_filter_optionsA

List all available Finviz screener filter categories and their codes. Call this whenever you need to look up a valid filter code before calling screen_stocks or screen_industry. Returns ~67 categories with valid code values (e.g. cap_largeover, fa_pe_u20, sec_technology).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It discloses that the tool returns roughly 67 categories with valid code values and provides concrete examples. It does not explicitly state read-only behavior, but the verb 'List' and the lookup purpose make that sufficiently clear.

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, each earning its place: purpose, usage trigger, and return detail. The most important scoping information is front-loaded, and there is no filler or repetition of schema content.

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 zero-parameter lookup tool with an output schema, the description is complete. It explains what the tool returns, gives representative examples, and tells the agent exactly when to invoke it relative to sibling tools.

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 tool has zero parameters, so the schema fully covers the parameter space. The description adds useful examples of return values, but no parameter semantics are needed; the baseline for zero-parameter tools is 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?

The description uses a specific verb and resource: 'List all available Finviz screener filter categories and their codes.' It clearly differentiates this lookup tool from the screening tools it supports by naming screen_stocks and screen_industry as the downstream consumers.

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 states when to use this tool: 'Call this whenever you need to look up a valid filter code before calling screen_stocks or screen_industry.' This gives an unambiguous trigger condition and names the relevant alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_from_urlA

Run a Finviz screener from a URL copied directly from finviz.com. Useful when the user has built a custom screen in the Finviz UI and wants to replicate it here without translating filter codes manually.

Args: url: Full Finviz screener URL, e.g. "https://finviz.com/screener.ashx?v=111&f=cap_largeover,fa_pe_u20"

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the operation is read-only, what it returns, or any side effects. The only behavioral hint is that it 'runs' a screener, leaving the agent to infer the result shape from the output schema.

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, with two sentences plus a clearly formatted Args section. The primary purpose is front-loaded, and the example is placed in the parameter documentation, avoiding unnecessary verbosity.

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 single-parameter tool with an output schema, the description covers the essential input format and use case. It lacks explicit notes on errors, rate limits, or output behavior, but these are partially covered by the output schema and the simplicity of the tool.

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 schema provides only 'type: string' with no description, so the description must add meaning. It does so by specifying that the URL must be a full Finviz screener URL and gives a concrete example, which gives the agent enough to construct a valid input.

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 states a specific verb 'Run' and resource 'Finviz screener from a URL', and distinguishes itself from manual filter input by noting it replicates a custom screen from the UI. This makes the tool's purpose unambiguous and clearly differentiates it from sibling screen tools like screen_stocks.

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 states when to use this tool: when the user has built a custom screen in the Finviz UI and wants to replicate it without translating filter codes. It implies that alternatives like screen_stocks are for manual filter entry, providing clear context, though it doesn't name them explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_industryA

Screen stocks within a specific industry using Finviz. Convenience wrapper around screen_stocks that pre-applies the ind_ filter. Useful for peer group analysis or sector deep-dives. Use list_filter_options to look up valid industry codes.

Args: industry: Finviz industry code, e.g.: "banksregional", "biotechnology", "semiconductors", "softwareinfrastructure", "oilgasep", "drugmanufacturers", "insurancelife", "medicaldevices", "reitsdiversified", "aerospacedefense", "automanufacturers"

    Use list_filter_options to see all available industries.
table: Metric view — "Valuation", "Financial", etc.
additional_filters: Extra Finviz filter codes (comma-separated).
max_results: Max stocks to return.
ParametersJSON Schema
NameRequiredDescriptionDefault
tableNoValuation
industryYes
max_resultsNo
additional_filtersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool pre-applies the industry filter, which is a key behavioral trait. However, it does not explicitly state that the operation is read-only or non-destructive, nor does it mention any side effects, rate limits, or error behavior. The output format is not described, though an output schema exists. This is adequate but not exceptional.

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 and well-structured. It begins with a clear one-sentence summary, followed by a brief rationale, then a structured 'Args:' block with per-parameter explanations. Every sentence earns its place, with no repetition of schema information. It front-loads the core purpose and immediately provides actionable guidance.

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 enough information to call the tool correctly: it details all parameters, gives examples, and points to a companion tool for valid industries. Since an output schema exists, the description does not need to explain return structure. It could mention any limits or edge cases, but for a straightforward screening tool, the coverage is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description compensates for the absence of schema descriptions by explaining all four parameters clearly. It gives concrete examples for 'industry' (e.g., 'banksregional', 'biotechnology'), clarifies that 'table' is a metric view like 'Valuation', specifies 'additional_filters' as comma-separated Finviz codes, and defines 'max_results' as the maximum number of stocks. This adds substantial meaning beyond the bare schema titles.

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's verb and resource: 'Screen stocks within a specific industry using Finviz.' It distinguishes itself from siblings by explicitly labeling it a 'convenience wrapper around screen_stocks that pre-applies the ind_ filter,' which immediately clarifies its scope. The use case (peer group analysis, sector deep-dives) further anchors its purpose.

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 provides direct guidance on when to use this tool: it is a wrapper around screen_stocks specifically for industry filtering, which clearly differentiates it from the general screener. It also instructs to use list_filter_options to look up valid industry codes, establishing a prerequisite action. This makes the selection criteria unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_stocksA

Screen stocks using Finviz filter codes. Primary tool for finding investment candidates. Uses Finviz current snapshot data (~15-20 min delayed). Returns a filtered list with the metric columns selected by the 'table' parameter. Use list_filter_options to discover all valid filter codes.

Args: filters: Comma-separated Finviz filter codes. VALUE INVESTING EXAMPLES: "cap_largeover,fa_pe_u20,fa_roe_o15" → Large cap, P/E < 20, ROE > 15% "fa_pb_u2,fa_curratio_o1.5,fa_debteq_u0.5" → P/B < 2, current ratio > 1.5, debt/equity < 0.5 "fa_div_o3,fa_payoutratio_u60,fa_roe_o15" → Dividend > 3%, payout < 60%, ROE > 15% "fa_pfcf_u15,fa_opermargin_o15,fa_epsyoy1_o10" → P/FCF < 15, op margin > 15%, EPS growth > 10%

    USE TOOL: list_filter_options TO SEE ALL FILTERS 
    
    COMMON FILTER PREFIXES:
      cap_     : Market cap (nano/micro/small/mid/large/mega)
      fa_pe    : P/E ratio (u = under, o = over)
      fa_fpe   : Forward P/E
      fa_peg   : PEG ratio
      fa_ps    : Price/Sales
      fa_pb    : Price/Book
      fa_pc    : Price/Cash
      fa_pfcf  : Price/Free Cash Flow
      fa_roe   : Return on equity
      fa_roa   : Return on assets
      fa_roi   : Return on investment
      fa_curratio  : Current ratio
      fa_quickratio: Quick ratio
      fa_debteq    : Debt/Equity
      fa_ltdebteq  : Long-term Debt/Equity
      fa_grossmargin : Gross margin
      fa_opermargin  : Operating margin
      fa_netmargin   : Net profit margin
      fa_div   : Dividend yield
      fa_epsyoy5     : EPS growth past 5 years
      fa_salesqoq    : Sales growth QoQ
      sec_     : Sector (technology, healthcare, etc.)
      ind_     : Industry
      sh_avgvol: Average volume
      ta_sma200: Price vs 200-day SMA

table: Data view that controls which columns are returned.
       Each view returns different metrics per stock:

       "Overview" — Company, Sector, Industry, Market Cap, P/E,
           Price, Change, Volume
       "Valuation" — Market Cap, P/E, Fwd P/E, PEG, P/S, P/B,
           P/C, P/FCF, EPS This Y, EPS Next Y, EPS Past 5Y,
           EPS Next 5Y, Sales Past 5Y, Price, Change, Volume
       "Financial" — Market Cap, Dividend, ROA, ROE, ROI,
           Curr R (Current Ratio), Quick R, LTDebt/Eq, Debt/Eq,
           Gross M, Oper M, Profit M, Earnings, Price, Change, Volume
       "Ownership" — Market Cap, Outstanding, Float, Insider Own,
           Insider Trans, Inst Own, Inst Trans, Float Short,
           Short Ratio, Avg Volume, Price, Change, Volume
       "Performance" — Perf Week, Perf Month, Perf Quart,
           Perf Half, Perf Year, Perf YTD, Volatility W,
           Volatility M, Recom, Avg Volume, Rel Volume,
           Price, Change, Volume
       "Technical" — Beta, ATR, SMA20, SMA50, SMA200,
           52W High, 52W Low, RSI, Price, Change, Volume

       Use "Valuation" for value metrics, "Financial" for margins/ROE.
order: Sort column. Prefix with '-' for descending.
       e.g. "-marketcap", "pe", "-dividendyield"
signal: Optional Finviz signal preset, e.g. "ta_topgainers".
max_results: Max stocks to return (default 30).

Returns: Formatted screening results with key metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderNo-marketcap
tableNoValuation
signalNo
filtersYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well by disclosing the ~15-20 min delayed Finviz snapshot data source and that results are a filtered list with columns determined by the table parameter. It also enumerates exact columns per table view. It does not mention rate limits or error behavior, but for a read-only screening tool the key behavioral traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but organized into labeled sections (examples, prefixes, table views) and front-loaded with purpose. Some redundancy exists, such as the final 'Returns' line and the repeated instruction to use list_filter_options, but the length is largely justified by the parameter complexity.

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?

All five parameters are documented with examples and defaults, the data source and delay are stated, and an output schema exists so return-value detail is not required. The only gap is sibling-tool selection guidance, which is more a usage-guidelines issue than a completeness issue for invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does thoroughly. Filters are explained with value-investing examples and a prefix reference; table lists all six views with their columns; order and signal get examples; max_results gets a default. This goes far beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Screen stocks using Finviz filter codes' and positions itself as the primary tool for finding investment candidates. It clearly separates itself from list_filter_options, but does not explicitly differentiate from sibling screen_value_stocks or screen_from_url, so it stops short of full sibling differentiation.

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 gives actionable context: use list_filter_options to discover filter codes, and choose 'Valuation' for value metrics or 'Financial' for margins/ROE. It does not state when to prefer screen_value_stocks or screen_from_url over this tool, so exclusions are missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_value_stocksA

Quick value stock screener with sensible defaults. Convenience wrapper around screen_stocks — use that tool for full control over filters. Useful for fast idea generation.

Args: min_market_cap: Minimum market cap — "small", "mid", "large", "mega". Maps to: small=cap_smallover, mid=cap_midover, large=cap_largeover, mega=cap_mega max_pe: Max P/E — e.g. "u20" for under 20, "u15" for under 15. min_roe: Min ROE — e.g. "o10" for over 10%, "o15" for over 15%. max_debt_equity: Max debt/equity — e.g. "u1" for under 1, "u0.5". additional_filters: Extra raw filter codes (comma-separated). e.g. "fa_div_o2,sec_consumerdefensive"

ParametersJSON Schema
NameRequiredDescriptionDefault
max_peNou25
min_roeNoo10
min_market_capNomid
max_debt_equityNou1
additional_filtersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only operation via 'screener' but does not explicitly state it is non-mutating or disclose other behavioral traits like rate limits or auth needs. The mention of 'sensible defaults' adds some behavioral context, but the description could be more explicit about 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?

The description is succinct and well-organized: a one-line summary, usage guidance, then an annotated Args list. Every sentence adds value, and the structure makes it easy to scan.

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 having no annotations and 0% schema coverage, the description covers purpose, usage, all parameters, and examples. With an output schema present, return values are covered elsewhere. The description is complete enough for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates fully. Each parameter is explained with examples, and the min_market_cap mapping to raw filter codes is especially valuable. This goes far beyond the schema's bare titles.

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 is a 'Quick value stock screener with sensible defaults', specifying the verb and resource. It explicitly contrasts with the sibling screen_stocks, saying it is a 'Convenience wrapper' for 'full control', making the distinction 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?

Provides explicit guidance: 'Convenience wrapper around screen_stocks — use that tool for full control over filters. Useful for fast idea generation.' This tells the agent when to use this tool (quick screens, idea generation) and when to use the alternative (full control), leaving no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stock_vs_industryA

Get a stock's valuation and fundamentals relative to its industry. Compares the stock's metrics against industry aggregates across overview (P/E, PEG, Debt, Dividend), valuation (P/S, P/B, P/FCF, EPS growth), and performance (weekly through YTD returns). Shows absolute stock value, industry median, and delta for each metric. Data source: Finviz (current snapshot for both stock and industry).

Args: ticker: Stock ticker symbol (e.g. "AAPL", "BRK-B").

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It discloses the data source (Finviz), the temporal nature ('current snapshot'), and the output shape (absolute stock value, industry median, and delta for each metric). It does not mention auth, rate limits, or invalid-ticker behavior, but for a read-only retrieval tool this is reasonably transparent.

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 front-loaded with the main purpose, then lists metric categories, output elements, data source, and the single argument. It is compact and every sentence contributes useful information, though the metric-category list adds some length without being essential.

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 one-parameter tool with an output schema, the description covers the use case, metrics, output structure, data source, and ticker argument. It lacks explicit usage-vs-alternatives guidance and caveats about snapshot freshness beyond 'current snapshot', but it is complete enough for an agent to invoke the tool 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 description coverage is 0% and the schema only labels the parameter as 'Ticker'. The description compensates by defining the parameter as a stock ticker symbol and providing concrete examples including 'BRK-B', which signals how to format tickers. This adds real meaning 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?

The description opens with a specific verb and resource: 'Get a stock's valuation and fundamentals relative to its industry.' It clearly distinguishes the tool from siblings like compare_stocks (peer comparison) and compare_industries (industry aggregates) by emphasizing stock-to-industry comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied clearly: use this when you need a stock's metrics against its industry. However, there is no explicit guidance about when not to use it or which alternative tools to prefer for peer-stock comparison, industry-only aggregates, or screening. The context is present but exclusions and alternatives are left to the agent to infer.

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. 24 tool updatesv1.2.0
    • First observedcompare_financials
    • First observedcompare_industries
    • First observedcompare_sectors
    • First observedcompare_stocks
    • First observedget_analyst_ratings
    • First observedget_annual_price_history
    • First observedget_earnings_news
    • First observedget_filing_text
    • First observedget_financial_history
    • First observedget_financial_snapshot
    • First observedget_financial_ttm
    • First observedget_inputs_tab_data
    • First observedget_insider_activity
    • First observedget_insider_filings
    • First observedget_per_share_fundamentals
    • First observedget_sec_filings
    • First observedget_stock_fundamentals
    • First observedget_stock_news
    • First observedlist_filter_options
    • First observedscreen_from_url
    • First observedscreen_industry
    • First observedscreen_stocks
    • First observedscreen_value_stocks
    • First observedstock_vs_industry

TDQS

A4/5.0

Scored across 24 tools

Disambiguation4/5

Tools are mostly distinct, with detailed cross-references preventing misselection. However, several clusters (screen_stocks vs screen_value_stocks vs screen_from_url vs screen_industry, and get_financial_history vs get_financial_ttm vs get_financial_snapshot vs get_stock_fundamentals) require careful reading to distinguish, so one or two pairs could be confused.

Naming Consistency4/5

The set follows a mostly consistent snake_case verb_noun pattern (screen_*, get_*, compare_*). Minor deviations like stock_vs_industry (noun_vs_noun) and screen_from_url (verb_preposition) break the pattern slightly, but overall the naming is predictable and readable.

Tool Count4/5

24 tools is on the heavier side but reasonable for a combined Finviz + SEC EDGAR server covering screening, fundamentals, filings, comparisons, insider data, news, and price history. Many tools are purposeful wrappers rather than redundant additions, though a few (screen_value_stocks, screen_from_url) could be considered optional conveniences.

Completeness5/5

The tool surface is remarkably complete for value-investing workflows: screening, industry/sector comparisons, SEC filing lookup and section extraction, historical/trailing financials, per-share metrics, insider activity, analyst ratings, news, and price history are all covered. There are no obvious dead ends; even niche needs like TTM calculation and workbook input assembly have dedicated tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that provides comprehensive financial insights and analysis by leveraging real-time market data, news, and advanced analytics for stocks, options, financial statements, and economic indicators.
    17
    51
    Python
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that exposes 16 free investment-research signals (insider trades, SEC filings, short data, and live quotes) to any MCP-compatible LLM.
    65 npm
    101
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A comprehensive MCP server for stock analysis and trading insights, including stock screening, fundamental analysis, insider trading, options analysis, social media research, and news analysis.
    10
    75
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Comprehensive MCP server for real-time stock, cryptocurrency, options, and fundamental analysis, including SEC filings and insider trading data.
    26
    106 npm
    MIT