Finviz + SEC EDGAR MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Finviz + SEC EDGAR MCP Serverscreen for value stocks with P/E under 15"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Full Finviz screener with 67+ filters: P/E, ROE, margins, debt ratios, etc. |
| Quick value screen with sensible defaults |
| Paste any finviz.com screener URL and run it |
| Discover all available filter codes |
| 90+ data points for any ticker |
| Side-by-side fundamental comparison |
| List recent SEC filings (10-K, 10-Q, 8-K, etc.) |
| Read clean text of SEC filings (iXBRL properly stripped) |
| Historical revenue, net income, EPS from XBRL data |
| Historical per-share valuation inputs from SEC XBRL filings |
| Full income statement, balance sheet & cash flow from latest filing |
| Trailing twelve months for one or more companies |
| Compare a metric across multiple companies for a given year |
| SEC Form 3/4/5 insider filings with structured trade data |
| Sector-level comparison |
| Industry aggregate comparison |
| Compare one stock against its industry aggregates |
| Filter within a specific industry |
| Analyst price targets and ratings |
| Insider buy/sell activity |
| Recent news headlines |
| Earnings-related and transcript-related headlines |
| Annual high, low, and average close price history from Yahoo Finance |
| 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 --versionIf 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-remoteStep 3: Configure Environment
Copy the example env file and add your email (required by the SEC for EDGAR API access):
cp .env.example .envEdit .env and set your contact email:
SEC_EMAIL=your-email@example.comStep 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.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.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.comLocal Remote Run
finviz-sec-mcp-remoteThis exposes:
/mcp/healthz
Render Deployment
This repo includes a starter render.yaml that:
deploys the web service from GitHub
runs
finviz-sec-mcp-remotehealth-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 toolscompare_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).
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| metric | No | Revenues | |
| quarter | No | ||
| tickers | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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".
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | overview | |
| order | No | name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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".
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | overview | |
| order | No | name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| metrics | No | ||
| tickers | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| sections | No | Item 7,Item 1A | |
| form_type | No | 10-K | |
| max_chars_per_section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | Revenues | |
| ticker | Yes | ||
| periods | No | ||
| period_type | No | annual |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | Revenues | |
| tickers | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 YPEG basis defaults to industry
LTM EPS Diluted uses SEC TTM diluted EPS
JSON payload is omitted by default for readability; pass
include_json=Trueto 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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| peg_basis | No | industry | |
| price_years | No | ||
| include_json | No | ||
| fundamentals_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_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).
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| form_type | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It 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.
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.
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.
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.
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.
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").
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | Valuation | |
| industry | Yes | ||
| max_results | No | ||
| additional_filters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | -marketcap | |
| table | No | Valuation | |
| signal | No | ||
| filters | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| max_pe | No | u25 | |
| min_roe | No | o10 | |
| min_market_cap | No | mid | |
| max_debt_equity | No | u1 | |
| additional_filters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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").
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
24 tool updates
v1.2.0- First observed
compare_financials - First observed
compare_industries - First observed
compare_sectors - First observed
compare_stocks - First observed
get_analyst_ratings - First observed
get_annual_price_history - First observed
get_earnings_news - First observed
get_filing_text - First observed
get_financial_history - First observed
get_financial_snapshot - First observed
get_financial_ttm - First observed
get_inputs_tab_data - First observed
get_insider_activity - First observed
get_insider_filings - First observed
get_per_share_fundamentals - First observed
get_sec_filings - First observed
get_stock_fundamentals - First observed
get_stock_news - First observed
list_filter_options - First observed
screen_from_url - First observed
screen_industry - First observed
screen_stocks - First observed
screen_value_stocks - First observed
stock_vs_industry
TDQS
Scored across 24 tools
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.
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.
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.
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
Related MCP Connectors
Research-only MCP server: your AI as a quant research desk. 90 tools, no trades, no brokers.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
One MCP key: prices, fundamentals, SEC filings, insider/13F/congressional trades. 336 tools.
Financial data and research MCP for US/CN/JP equities: filings, statements, ownership, signals.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn 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.1751PythonMIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that exposes 16 free investment-research signals (insider trades, SEC filings, short data, and live quotes) to any MCP-compatible LLM.65 npm101MIT
- AlicenseAqualityDmaintenanceA comprehensive MCP server for stock analysis and trading insights, including stock screening, fundamental analysis, insider trading, options analysis, social media research, and news analysis.1075MIT
- AlicenseAqualityCmaintenanceComprehensive MCP server for real-time stock, cryptocurrency, options, and fundamental analysis, including SEC filings and insider trading data.26106 npmMIT