sec-filing-analyzer
Server Details
AI-analyzed SEC filings: filings, analysis, screening, 30-day signals, track record.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- kyliemckinleydemo/sec-filing-analyzer
- GitHub Stars
- 1
TDQS
Scored across 7 tools
Each tool targets a distinct resource or action: company snapshot, single-filing analysis, latest filings feed, model track record, top signals, company screener, and company search. The only mild overlap is between get_latest_filings and get_top_signals/get_company, all of which surface filing predictions, but their scopes and filters are clearly described.
All tools use a consistent snake_case verb_noun pattern: get_company, get_filing_analysis, get_latest_filings, get_model_track_record, get_top_signals, screen_companies, search_companies. The only variation is the verb prefix, which is predictable and readable.
Seven tools is well-scoped for a read-only SEC filing analysis server. Each tool covers a distinct analytical need—company lookup, screening, filing retrieval, model evaluation—without bloat or redundancy.
The core read-only workflow is covered: find and screen companies, retrieve a company snapshot, fetch recent filings and their AI analyses, and evaluate model performance. Minor gaps exist for historical filing retrieval or arbitrary date ranges beyond the latest filings, though accession-based lookup via get_filing_analysis provides a workaround.
Available Tools
7 toolsget_companyGet company snapshotBInspect
Return a company snapshot (financials, valuation, analyst data) and its most recent analyzed SEC filings by ticker.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker, e.g. "MSFT" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it usefully discloses the return payload but says nothing about read-only safety, permissions, error behavior on an unknown ticker, or freshness/latency of the snapshot. The disclosure of return content is genuine value, but key behavioral traits are absent.
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?
A single compact sentence that front-loads the tool's primary output and adds the filings detail second. No filler, no redundancy with the title.
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 read tool with no output schema, the description does the essential work of naming the returned fields, so an agent knows what it gets back. It is only incomplete in not distinguishing itself from the filing-oriented siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single ticker parameter, so the schema already defines it (with an example, 'MSFT'). The description's 'by ticker' restates that the ticker identifies the company without adding format or validation detail, matching the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Return') and resource ('company snapshot'), and enumerates the payload contents (financials, valuation, analyst data) plus recent analyzed SEC filings. It is clear what the tool yields, but it never distinguishes itself from overlapping siblings like get_latest_filings or get_filing_analysis, so an agent must infer the boundary.
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 phrase 'by ticker' hints that a ticker is the input, but there is no when-to-use statement and no mention of when to prefer get_latest_filings, get_filing_analysis, or search_companies instead. An agent gets no routing guidance among the several SEC-filing siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_filing_analysisGet filing analysisBInspect
Return the full AI analysis for a single SEC filing by accession number: executive summary, concern level, sentiment, EPS surprise, predicted 30-day alpha, and (if available) the realized outcome.
| Name | Required | Description | Default |
|---|---|---|---|
| accession_number | Yes | SEC accession number, dashed form e.g. "0000320193-24-000123" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full burden, and it does enumerate the response contents (summary, concern level, sentiment, EPS surprise, predicted alpha, realized outcome) and flags the conditional nature of the realized outcome with 'if available'. It says nothing about failure modes, what happens when a filing has no analysis, or auth requirements, so meaningful behavioral gaps remain.
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?
A single front-loaded sentence: verb and resource first, then the enumerated payload. Every clause (the field list, the conditional 'if available') conveys information an agent needs, with no 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?
Since no output schema exists, the description must describe returns and it does so thoroughly, including the conditional realized outcome. The remaining gaps are minor but real: how to obtain an accession number and what an empty/unanalyzed filing yields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema itself documents the accession_number format with a dashed example. The description restates the key ('by accession number') but adds no format, validation, or lookup-source detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return the full AI analysis for a single SEC filing') and pins the lookup key to accession number, which implicitly separates it from list-oriented siblings like get_latest_filings. It stops short of ever naming a sibling or explicitly contrasting scope, so it is clear but not fully differentiated.
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 offers no when-to-use guidance, no conditions, and no alternatives; it never says to call get_latest_filings first to obtain an accession number or when get_top_signals would be preferable. The only hint of usage is the phrase 'by accession number,' which leaves the agent to infer prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_filingsGet latest SEC filingsAInspect
Return the most recent SEC filings (10-K, 10-Q, 8-K) with AI analysis and 30-day alpha predictions. Optionally filter by ticker and/or form type.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max filings to return | |
| ticker | No | Stock ticker, e.g. "AAPL" | |
| filing_type | No | SEC form type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it does disclose what the results contain (filings plus AI analysis and 30-day alpha predictions), which is genuinely useful beyond structured fields. However, it omits ordering (are results newest-first?), default/cap behavior, and whether it is a pure read operation, leaving meaningful behavioral gaps for an unannotated 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?
Two sentences, front-loaded with the core action and result payload, then filters. No filler or redundancy; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should ideally describe the return shape more fully. It does convey that results include AI analysis and alpha predictions, which partially compensates, but omits sort order, default count, and any pagination behavior for a 3-parameter list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter is self-documented (limit with min/max/default, ticker example, filing_type enum). The description only repeats the filterable fields (ticker, form type) without adding format, default, or interaction details, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return the most recent SEC filings') and enumerates the covered form types (10-K, 10-Q, 8-K), plus the enrichment (AI analysis, 30-day alpha predictions). It is clearly distinct from `get_filing_analysis` in that it lists filings rather than analyzing one, but it never names the sibling or draws that boundary explicitly.
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?
'Optionally filter by ticker and/or form type' implies a list-and-filter use case, so usage is inferable. There is no when-not guidance and no routing hint to alternatives such as `get_filing_analysis` for deep analysis of a single filing, leaving the agent to guess between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_track_recordGet model track recordAInspect
Return the model's validated track record from strict 90-day walk-forward cross-validation, plus a live count of filings in the database that already have a realized 30-day outcome available for evaluation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the validation methodology ('strict 90-day walk-forward cross-validation') and that a live sample count of realized 30-day outcomes is included, which adds real context. But it gives no indication of the response shape or what metrics constitute the 'track record', and no output schema exists to fill that 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?
A single sentence, front-loaded with the primary return value and zero filler. The secondary clause about live filing counts earns its place because it distinguishes this from a pure historical stats endpoint.
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 read tool this is nearly adequate, but with no output schema and no annotations the agent still does not know what fields make up the track record (accuracy, precision, sample sizes, date ranges) or how the count relates to it. The description should say more about the return contents given nothing else documents them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing parameter-level for the description to clarify or compensate for.
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 names a specific resource ('the model's validated track record') and specifies the methodology (strict 90-day walk-forward cross-validation) plus a secondary live filing count. This is clearly distinct from siblings like get_company or get_latest_filings, though it never explicitly contrasts itself with 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?
Usage is implied: an agent can infer this is the tool to call when it needs confidence in the model's predictions before acting on signals. However, there is no explicit when-to-use statement, no prerequisites, and no mention of alternatives for evaluating model quality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_signalsGet top prediction signalsBInspect
Return the highest-conviction filing predictions from the last 90 days, ranked by |predicted 30-day alpha| weighted by confidence. These are the model's strongest current directional calls.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does disclose useful traits: 90-day window, |predicted 30-day alpha| ranking, confidence weighting, and that these are the model's strongest directional calls. It does not state read-only status, permission requirements, or whether results are paginated beyond the limit control.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the scoping and ranking information front-loaded. No sentence is wasted.
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 no-annotation, no-output-schema tool, the description explains the signal type, time window, and ranking method. It still omits usage routing and the only parameter's semantics, leaving an agent with gaps in invocation clarity.
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 never mentions the sole limit parameter. The schema supplies type, default, and min/max, but the description adds no meaning about what limit controls or how many signals are returned.
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?
It states a specific verb and resource: return filing predictions, plus scope (last 90 days) and ranking logic. It is clearly about model signals, but it never names or contrasts with siblings like get_model_track_record or get_latest_filings.
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 is returned but gives no explicit when-to-use guidance and no alternatives. It does not tell an agent when to call this instead of get_model_track_record, get_filing_analysis, or get_latest_filings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_companiesScreen companies by fundamentalsAInspect
Filter the tracked-company universe (800+ US companies, all S&P 500 constituents) by fundamentals: sector, minimum market cap, maximum P/E, minimum dividend yield, and minimum revenue growth. Mirrors the /screener tool. Returns matching companies with links to their pages.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order | marketcap |
| limit | No | ||
| max_pe | No | Maximum trailing P/E ratio | |
| sector | No | Exact sector name, e.g. "Information Technology", "Financials", "Energy" | |
| min_dividend_yield_pct | No | Minimum dividend yield in percent, e.g. 3 for 3% | |
| min_revenue_growth_pct | No | Minimum TTM revenue growth in percent, e.g. 20 for 20% | |
| min_market_cap_billions | No | Minimum market cap in USD billions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds real value by disclosing the universe (800+ US companies, all S&P 500) and the return shape (matching companies with links), but says nothing about result limits/defaults, pagination, or any access constraints, which matter for a list-returning 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?
Three front-loaded sentences with no filler: universe, filter dimensions, and return value. The 'Mirrors the /screener tool' clause is mildly redundant but does help an agent that knows the web 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?
No output schema exists, but the description covers the return value adequately (matching companies with page links), and the universe scope is stated. The main gap is that default/max result counts and pagination behavior are only discoverable from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents nearly every parameter with units and examples. The description restates the filter dimensions at a higher level but adds no syntax, units, or semantics beyond what the schema provides — the correct baseline when the schema does the heavy lifting.
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 (filter/screen) and resource (the tracked-company universe) and even enumerates the filter dimensions, so the agent knows exactly what this does. It does not explicitly contrast itself with the closest sibling, search_companies, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied: screening by fundamentals against a named universe. There is no explicit statement of when to prefer this over search_companies or get_company, nor any prerequisite or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companiesSearch companiesBInspect
Search tracked companies by ticker or name. Returns matching tickers with company names and sectors.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Ticker prefix or company name fragment |
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 does disclose the return shape (matching tickers with names and sectors), which helps, but says nothing about case sensitivity, prefix vs substring matching behavior, how 'tracked' scoping works, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the search scope front-loaded and the return content second. Nothing is wasted, though the second sentence is somewhat redundant with what a response schema would ideally convey.
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 tool this is nearly adequate: it covers purpose and return content. The gaps — undocumented limit semantics, no safety annotations, and no differentiation from screen_companies — leave meaningful room for an agent to guess wrong.
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 50%: the query parameter is documented in the schema, but limit is not described anywhere. The description's 'ticker or name' echoes the schema description rather than adding syntax or matching-rule detail, so it does not compensate for the coverage gap.
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+resource ('Search tracked companies') and the searchable fields (ticker or name), which is clear enough for selection. It does not distinguish itself from the sibling screen_companies, which is plausibly also a company-discovery tool, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'search by ticker or name' — an agent can infer this is a lookup for a known company. However, there is no explicit when/when-not guidance and no routing to screen_companies for criteria-based discovery, which is the main ambiguity given the sibling list.
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.
7 tool updates
- First observed
get_company - First observed
get_filing_analysis - First observed
get_latest_filings - First observed
get_model_track_record - First observed
get_top_signals - First observed
screen_companies - First observed
search_companies
Related MCP Connectors
SEC filings and insider trades in real-time. 10-K, 10-Q, 8-K, Form 4, and company lookup.
Financial intelligence: insider trades, SEC filings, 13F holdings, and market signals.
SEC filings, insider trades, and earnings data
Primary-source SEC filing intelligence for AI agents, with exact evidence and provenance.
Related MCP Servers
AlicenseAqualityCmaintenanceEnables AI clients to search and analyze SEC filings, financial statements, insider trades, and institutional holdings through natural language tools.915 npm1MIT- -licenseNot gradedqualityNot gradedmaintenanceEnables deep analysis of SEC EDGAR filings through universal company search, document content extraction, and advanced filing search capabilities. Provides AI-ready access to business descriptions, risk factors, financial statements, and full-text search across any public company's SEC documents.-
- AlicenseAqualityAmaintenanceReal-time SEC Form 4 insider trading data — transactions with post-trade returns, cluster-buy signals, Form 144 early warnings, and 13F institutional holdings. 27 tools + 6 research prompts; free tier available.36302 npm2MIT
- AlicenseNot gradedqualityDmaintenanceReal-time AI-summarised SEC filing intelligence for Claude, Cursor, and any MCP-compatible AI client.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.