sec-ai: SEC EDGAR
PYPI · SEC-FINANCE-AI
SEC EDGAR in 22 tools: 10-K/10-Q/8-K text, XBRL facts, insider trades, 13F, full-text search.
Available components
Last scanned (10 hours ago)
Scores higher than 89% of PyPI servers
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 39 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to lkcair/sec-ai-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 14 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability66
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3414 tokens (~155/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management50
- Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 22 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +22
- Malware scan: unverified → pass ▲ security
- Stability: unverified → 0.50 ▲ functional
- 3 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- Security disclosure: unverified → fail ▼ functional
- 2 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- Security disclosure: fail → unverified ▼ functional
- 30 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 22 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 21 Oct 26 64
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed pypi/sec-finance-ai@2.0.5
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | lkcair/sec-ai-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/lkcair/sec-ai-mcp/.github/workflows/publish.yml@refs/tags/v2.0.5 |
| Rekor log index | 3349962231 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:f496055b31579bafce23be77b4afc8db7ee0dcd082c8c09ed70f6e69ca244059 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 39 packages
| Packages resolved | 39 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_8k_filing Analyze 8-K Filing ~47
Get and summarize the latest 8-K filing for a company. Returns: Dictionary containing 8-K summary with actual content
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker symbol |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
download_filing_text Download Filing Text ~229
Read or search the text of one SEC filing document. Three modes, chosen automatically: - mode 'text': returns `content` in pages of max_length characters. If has_more is true, call again with offset=next_offset to keep reading. - mode 'search': when `search` is given, returns snippets around each match with its position (use offset=position to read that part). - mode 'link_only': when the document is larger than the size limit, returns only the link and size so the user can open it. The exact size is checked BEFORE downloading. Returns: Dictionary with mode, filing_url, size_mb, total_characters and content/snippets
| Name | Type | Req | Description |
|---|---|---|---|
| filing_url | string | yes | Filing document URL (https://www.sec.gov/Archives/edgar/data/...) |
| max_length | integer | – | Characters per page (default 50,000) |
| offset | integer | – | Character position to start reading from (default 0) |
| search | – | – | Optional word or phrase to find inside the filing (case-insensitive) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
full_text_search Full Text Search ~163
Search the full text of every EDGAR filing since 2001 (words or "exact phrase"). Returns: Matching filings (newest first) with company, form, date and a link to the matching document
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | – | – | Optional YYYY-MM-DD (default: today) |
| form_type | – | – | Optional form filter, e.g. '8-K' or '10-K,10-Q' |
| limit | integer | – | Max results (1-100, default 20) |
| query | string | yes | Words to find, e.g. 'tariffs' or '"going concern"' for an exact phrase |
| start_date | – | – | Optional YYYY-MM-DD (default: one year ago; use '2001-01-01' for all history) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_13f_holdings 13F Holdings ~129
Get the latest 13F portfolio of an institutional investment manager. Returns: Report period, total value, top_issuers (one row per company, share classes combined; use this for "largest holdings") and top_positions (one row per security: CUSIP, share class, put/call)
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Number of top positions to return (default 25) |
| ticker_or_cik | string | yes | Manager ticker (e.g. 'BRK-B') or CIK (e.g. '1350694' for Bridgewater) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_available_metrics Available Metrics ~177
Discover available financial metrics for a company from SEC XBRL data. This function lists ALL available metrics that can be requested via specific_metrics. Useful for AI to find exactly which metrics are available before requesting them. Returns: Dict containing: - all_metrics: List of ALL available metric names - filtered_metrics: List of metrics matching search_term (if provided) - metric_categories: Organized by category (income, balance_sheet, cash_flow, etc) - total_available: Total number of available metrics - example_ttm_metrics: Example metrics useful for TTM calculations
| Name | Type | Req | Description |
|---|---|---|---|
| search_term | string | – | Optional search term to filter metrics (e.g., 'EBITDA', 'Revenue', 'Debt') |
| ticker | string | yes | Stock ticker symbol (e.g., 'GME', 'AAPL') |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_beneficial_ownership Beneficial Ownership ~91
Get beneficial ownership reports (13D, 13G) for a company. Returns: Dictionary containing beneficial ownership information
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Number of reports to return |
| schedule | string | – | 'all' (default), '13D' (activist or control intent) or '13G' (passive holder) |
| ticker | string | yes | Stock ticker symbol |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_company_concept Company Concept ~64
Get specific financial concept data for a company. Returns: Dictionary containing concept data over time
| Name | Type | Req | Description |
|---|---|---|---|
| concept | string | yes | XBRL concept (e.g., 'Revenues', 'NetIncomeLoss', 'Assets') |
| ticker | string | yes | Stock ticker symbol |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_company_facts Company Facts ~40
Get company facts from SEC XBRL data. Returns: Dictionary containing company facts and financial metrics
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker symbol |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_company_filings Company Filings ~140
Get SEC filings for a company by ticker symbol. Returns: Dictionary containing filing information
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | – | – | End date for filing search (YYYY-MM-DD format) |
| form_type | – | – | SEC form type (e.g., '10-K', '10-Q', '8-K'). Can be a single string or a list of strings. If None, returns all forms. |
| limit | integer | – | Maximum number of filings to return (default: 10) |
| start_date | – | – | Start date for filing search (YYYY-MM-DD format) |
| ticker | string | yes | Stock ticker symbol (e.g., 'AAPL', 'TSLA') |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_filing_content Filing Content ~614
Get SEC financial data - SMART & EFFICIENT dual-mode approach. GENERIC MODE (no specific_metrics parameter) - Returns 13 essential metrics for any financial analysis - 5 historical values per metric (sufficient for TTM calc) - Most token-efficient for general questions - Includes: Net Income, Revenues, Interest Expense, Taxes, Operating Income, Gross Profit, Assets, Liabilities, Equity, Depreciation, Shares Outstanding, Cash, Long-term Debt SPECIFIC MODE (provide specific_metrics parameter) - Returns ONLY the requested metrics you specify - Perfect for targeted analysis (TTM EBITDA, leverage ratios) - Minimal token usage - only fetch what you need - Example: ['NetIncomeLoss', 'DepreciationDepletionAndAmortization', 'InterestExpense', 'IncomeTaxExpenseBenefit'] - Use get_available_metrics(ticker) to discover all metrics WORKFLOW FOR TTM CALCULATIONS: 1. Call: get_available_metrics(ticker='GME', search_term='Depreciation') 2. Find needed metrics from results 3. Call: get_filing_content(ticker='GME', specific_metrics=['NetIncomeLoss', ...]) 4. Calculate TTM from 5 historical values (last 4 quarters + 1 prior) FILE HANDLING (get_full_content=True): - The exact document size is checked first (EDGAR filing index) - Up to 25MB: first 50,000 characters in full_content; if has_more, continue with download_filing_text(filing_url, offset=next_offset) or search it with search='keyword' - Over 25MB: link only (file_too_large=True), AI told via ai_note Returns: Dict containing: - ticker, cik, company_name: Company identification - financial_metrics: Dict of requested/essential metrics with 5 historical values each - filing_date, filing_type: Filing metadata - mode: "generic" or "specific" - metrics_returned, values_per_metric: Data shape info - content_mode: 'text' or 'link_only' - full_content, has_more, next_offset: first page of the filing text - file_size_mb, filing_url, ai_note: size, link and what to do next
| Name | Type | Req | Description |
|---|---|---|---|
| filing_type | string | – | Type of filing - '10-Q', '10-K', '8-K', etc. (None = get latest) |
| get_full_content | boolean | – | If True, check and optionally download full filing text |
| specific_metrics | array | – | List of specific metric names to fetch. If None, returns 13 essential metrics (generic mode). Example: ['NetIncomeLoss', 'Revenues', 'DepreciationDepletionAndAmortization'] Use get_available_metrics(… |
| ticker | string | yes | Stock ticker symbol (e.g., 'GME', 'AAPL') |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
get_filing_documents Filing Documents ~84
List every document in a filing (main document, exhibits, XBRL, XML) with sizes and links. Returns: Dictionary with the filing folder and its documents (name, size_bytes, url)
| Name | Type | Req | Description |
|---|---|---|---|
| filing_url | string | yes | Any URL inside the filing folder (https://www.sec.gov/Archives/edgar/data/CIK/ACCESSION/...) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_filing_size Filing Size ~100
Get the exact size of a filing document BEFORE downloading it. Use this to decide between reading the text (download_filing_text) and giving the user the link only. Sizes come from the EDGAR filing index. Returns: size_bytes, size_mb, recommendation ('read_text' or 'link_only') and filing_url
| Name | Type | Req | Description |
|---|---|---|---|
| filing_url | string | yes | Filing document URL (https://www.sec.gov/Archives/edgar/data/...) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_insider_transactions Insider Transactions ~59
Get insider trading transactions (Forms 3, 4, 5) for a company. Returns: Dictionary containing insider transaction information
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Number of transactions to return |
| ticker | string | yes | Stock ticker symbol |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_latest_10k Latest 10-K ~138
Get the latest 10-K filing for a company: filing link plus a SHORT preview of its text. The preview is only the first 10,000 characters (cover page and first statements). When preview_is_partial is true, follow read_more: download_filing_text(filing_url, offset=...) pages through the rest, download_filing_text(filing_url, search='...') jumps to a section. Returns: Dictionary with the 10-K filing: filing_url, content_preview, preview_characters, total_characters, preview_is_partial and read_more
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker symbol |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_latest_10q Latest 10-Q ~138
Get the latest 10-Q filing for a company: filing link plus a SHORT preview of its text. The preview is only the first 10,000 characters (cover page and first statements). When preview_is_partial is true, follow read_more: download_filing_text(filing_url, offset=...) pages through the rest, download_filing_text(filing_url, search='...') jumps to a section. Returns: Dictionary with the 10-Q filing: filing_url, content_preview, preview_characters, total_characters, preview_is_partial and read_more
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker symbol |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_proxy_statements Proxy Statements ~54
Get proxy statements (DEF 14A) for a company. Returns: Dictionary containing proxy statement information
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Number of proxy statements to return |
| ticker | string | yes | Stock ticker symbol |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_recent_8k_filings Recent 8-K Filings ~138
Get recent 8-K filings for a company with a SHORT preview of each. Each preview is only the first 5,000 characters. When preview_is_partial is true, follow read_more: download_filing_text(filing_url, offset=...) or download_filing_text(filing_url, search='...'). Returns: Dictionary with 8-K filings: filing_url, content_preview, preview_characters, total_characters, preview_is_partial, read_more and extracted items
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Number of recent 8-K filings to return |
| ticker | string | yes | Stock ticker symbol |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_recent_ipos Recent IPOs ~87
Get recent IPO activity from EDGAR. Returns: priced: final prospectuses (424B4, filed when an offering is priced) registrations: new S-1 / F-1 registration statements (companies preparing to list)
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Look-back window in days (default 30) |
| limit | integer | – | Max companies per list (default 20) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_sec_api_status SEC API Status ~25
Check SEC API status and connectivity. Returns: Dictionary containing API status information
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
get_xbrl_frames XBRL Frames ~159
Compare one financial concept across ALL reporting companies for one period. Returns: Companies ranked by value for that concept and period
| Name | Type | Req | Description |
|---|---|---|---|
| concept | string | yes | XBRL tag, e.g. 'Revenues', 'NetIncomeLoss', 'Assets' |
| limit | integer | – | Number of top companies to return (default 20) |
| period | string | yes | 'CY2024' (annual), 'CY2024Q3' (quarter) or 'CY2024Q4I' (balance-sheet instant) |
| taxonomy | string | – | 'us-gaap' (default), 'ifrs-full', 'dei' |
| unit | string | – | 'USD' (default), 'USD-per-shares', 'shares' |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
run_self_test Self-Test ~27
Run comprehensive self-test of all SEC-AI tools. Returns: Dictionary containing test results
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
search_filings Search Filings ~93
Search SEC filings by company name or other criteria. Returns: Dictionary containing search results
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | – | – | End date for search (YYYY-MM-DD) |
| form_type | – | – | SEC form type to filter by |
| limit | integer | – | Maximum number of results |
| query | string | yes | Search query (company name, ticker, etc.) |
| start_date | – | – | Start date for search (YYYY-MM-DD) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
How do I install the sec-ai: SEC EDGAR MCP server?
sec-ai: SEC EDGAR runs locally as a PyPI package, launched with uvx sec-finance-ai. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · sec-finance-ai
claude mcp add lkcair-sec-ai -- uvx sec-finance-ai
What is the sec-ai: SEC EDGAR MCP server?
sec-ai: SEC EDGAR is an MCP server listed in the public MCP registry as io.github.lkcair/sec-ai. SEC EDGAR in 22 tools: 10-K/10-Q/8-K text, XBRL facts, insider trades, 13F, full-text search. This page covers its PyPI package (sec-finance-ai).
Is the sec-ai: SEC EDGAR MCP server safe to use?
sec-ai: SEC EDGAR scores 86 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the sec-ai: SEC EDGAR MCP server expose?
sec-ai: SEC EDGAR exposes 22 tools: analyze_8k_filing, download_filing_text, full_text_search, get_13f_holdings, get_available_metrics, and 17 more. Their descriptions and schemas cost roughly 2,796 tokens of context every time the server is loaded.
Is the sec-ai: SEC EDGAR MCP server still maintained?
sec-ai: SEC EDGAR is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the sec-ai: SEC EDGAR MCP server under?
sec-ai: SEC EDGAR declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.