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

- Trust score: 86/100 (high trust)
- Change this week: +7
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `sec-finance-ai`: 86/100 (this document), [markdown](https://verifymcp.io/servers/lkcair-sec-ai/sec-finance-ai.md), [page](https://verifymcp.io/servers/lkcair-sec-ai/sec-finance-ai)

## Channel facts

- Registry: `pypi`
- Package: `sec-finance-ai`
- Version: `2.0.5`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 1 of 39 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to lkcair/sec-ai-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 14 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 66/100
  - AI-judged instruction clarity (good).
  - 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.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 50/100
  - Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 22 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

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

### Claude

```bash
claude mcp add lkcair-sec-ai -- uvx sec-finance-ai
```

### Cursor

```json
{
  "mcpServers": {
    "lkcair-sec-ai": {
      "command": "uvx",
      "args": [
        "sec-finance-ai"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "lkcair-sec-ai": {
      "command": "uvx",
      "args": [
        "sec-finance-ai"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add lkcair-sec-ai -- uvx sec-finance-ai
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "lkcair-sec-ai": {
      "type": "local",
      "command": [
        "uvx",
        "sec-finance-ai"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add lkcair-sec-ai --command uvx --arg sec-finance-ai
```

### Hermes

```yaml
mcp_servers:
  lkcair-sec-ai:
    command: "uvx"
    args: ["sec-finance-ai"]
```

### Netclaw

```json
{
  "McpServers": {
    "lkcair-sec-ai": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "sec-finance-ai"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add lkcair-sec-ai -t stdio -c uvx -a sec-finance-ai
```

### Other

```json
{
  "mcpServers": {
    "lkcair-sec-ai": {
      "command": "uvx",
      "args": [
        "sec-finance-ai"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 86, +22)

- [security improvement] Malware scan: unverified → pass
- [functional improvement] Stability: unverified → 0.50

### 2026-11-03 (score 64, −15)

- [security regression] Malware scan: pass → unverified
- [functional regression] Security disclosure: unverified → fail

### 2026-11-02 (score 79, +15)

- [security improvement] Malware scan: unverified → pass
- [functional regression] Security disclosure: fail → unverified

### 2026-10-30 (score 64, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-22 (score 79, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-21 (score 64)

First indexed and scored.

## MCP tools (22)

### `analyze_8k_filing` (~47 tokens)

Analyze 8-K Filing

Get and summarize the latest 8-K filing for a company.

Returns: Dictionary containing 8-K summary with actual content

Input parameters:

- `ticker` (string, required): Stock ticker symbol

Output parameters:

- `result` (object)

### `download_filing_text` (~229 tokens)

Download Filing Text

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

Input parameters:

- `filing_url` (string, required): 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)

Output parameters:

- `result` (object)

### `full_text_search` (~163 tokens)

Full Text Search

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

Input parameters:

- `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, required): 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)

Output parameters:

- `result` (object)

### `get_13f_holdings` (~129 tokens)

13F Holdings

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)

Input parameters:

- `limit` (integer): Number of top positions to return (default 25)
- `ticker_or_cik` (string, required): Manager ticker (e.g. 'BRK-B') or CIK (e.g. '1350694' for Bridgewater)

Output parameters:

- `result` (object)

### `get_available_metrics` (~177 tokens)

Available Metrics

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

Input parameters:

- `search_term` (string): Optional search term to filter metrics (e.g., 'EBITDA', 'Revenue', 'Debt')
- `ticker` (string, required): Stock ticker symbol (e.g., 'GME', 'AAPL')

Output parameters:

- `result` (object)

### `get_beneficial_ownership` (~91 tokens)

Beneficial Ownership

Get beneficial ownership reports (13D, 13G) for a company.

Returns: Dictionary containing beneficial ownership information

Input parameters:

- `limit` (integer): Number of reports to return
- `schedule` (string): 'all' (default), '13D' (activist or control intent) or '13G' (passive holder)
- `ticker` (string, required): Stock ticker symbol

Output parameters:

- `result` (object)

### `get_company_concept` (~64 tokens)

Company Concept

Get specific financial concept data for a company.

Returns: Dictionary containing concept data over time

Input parameters:

- `concept` (string, required): XBRL concept (e.g., 'Revenues', 'NetIncomeLoss', 'Assets')
- `ticker` (string, required): Stock ticker symbol

Output parameters:

- `result` (object)

### `get_company_facts` (~40 tokens)

Company Facts

Get company facts from SEC XBRL data.

Returns: Dictionary containing company facts and financial metrics

Input parameters:

- `ticker` (string, required): Stock ticker symbol

Output parameters:

- `result` (object)

### `get_company_filings` (~140 tokens)

Company Filings

Get SEC filings for a company by ticker symbol.

Returns: Dictionary containing filing information

Input parameters:

- `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, required): Stock ticker symbol (e.g., 'AAPL', 'TSLA')

Output parameters:

- `result` (object)

### `get_filing_content` (~614 tokens)

Filing Content

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

Input parameters:

- `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, required): Stock ticker symbol (e.g., 'GME', 'AAPL')

Output parameters:

- `result`

### `get_filing_documents` (~84 tokens)

Filing Documents

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)

Input parameters:

- `filing_url` (string, required): Any URL inside the filing folder (https://www.sec.gov/Archives/edgar/data/CIK/ACCESSION/...)

Output parameters:

- `result` (object)

### `get_filing_size` (~100 tokens)

Filing Size

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

Input parameters:

- `filing_url` (string, required): Filing document URL (https://www.sec.gov/Archives/edgar/data/...)

Output parameters:

- `result` (object)

### `get_insider_transactions` (~59 tokens)

Insider Transactions

Get insider trading transactions (Forms 3, 4, 5) for a company.

Returns: Dictionary containing insider transaction information

Input parameters:

- `limit` (integer): Number of transactions to return
- `ticker` (string, required): Stock ticker symbol

Output parameters:

- `result` (object)

### `get_latest_10k` (~138 tokens)

Latest 10-K

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

Input parameters:

- `ticker` (string, required): Stock ticker symbol

Output parameters:

- `result` (object)

### `get_latest_10q` (~138 tokens)

Latest 10-Q

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

Input parameters:

- `ticker` (string, required): Stock ticker symbol

Output parameters:

- `result` (object)

### `get_proxy_statements` (~54 tokens)

Proxy Statements

Get proxy statements (DEF 14A) for a company.

Returns: Dictionary containing proxy statement information

Input parameters:

- `limit` (integer): Number of proxy statements to return
- `ticker` (string, required): Stock ticker symbol

Output parameters:

- `result` (object)

### `get_recent_8k_filings` (~138 tokens)

Recent 8-K Filings

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

Input parameters:

- `limit` (integer): Number of recent 8-K filings to return
- `ticker` (string, required): Stock ticker symbol

Output parameters:

- `result` (object)

### `get_recent_ipos` (~87 tokens)

Recent IPOs

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)

Input parameters:

- `days` (integer): Look-back window in days (default 30)
- `limit` (integer): Max companies per list (default 20)

Output parameters:

- `result` (object)

### `get_sec_api_status` (~25 tokens)

SEC API Status

Check SEC API status and connectivity.

Returns: Dictionary containing API status information

Output parameters:

- `result` (object)

### `get_xbrl_frames` (~159 tokens)

XBRL Frames

Compare one financial concept across ALL reporting companies for one period.

Returns: Companies ranked by value for that concept and period

Input parameters:

- `concept` (string, required): XBRL tag, e.g. 'Revenues', 'NetIncomeLoss', 'Assets'
- `limit` (integer): Number of top companies to return (default 20)
- `period` (string, required): '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'

Output parameters:

- `result` (object)

### `run_self_test` (~27 tokens)

Self-Test

Run comprehensive self-test of all SEC-AI tools.

Returns: Dictionary containing test results

Output parameters:

- `result` (object)

### `search_filings` (~93 tokens)

Search Filings

Search SEC filings by company name or other criteria.

Returns: Dictionary containing search results

Input parameters:

- `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, required): Search query (company name, ticker, etc.)
- `start_date`: Start date for search (YYYY-MM-DD)

Output parameters:

- `result` (object)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/lkcair-sec-ai/sec-finance-ai#diagnostics

## Score history

- 2026-11-05: 86
- 2026-11-04: 64
- 2026-11-03: 64
- 2026-11-02: 79
- 2026-11-01: 64
- 2026-10-31: 64
- 2026-10-30: 64
- 2026-10-29: 79
- 2026-10-28: 79
- 2026-10-27: 79
- 2026-10-26: 79
- 2026-10-25: 79
- 2026-10-24: 79
- 2026-10-23: 79
- 2026-10-22: 79
- 2026-10-21: 64

## Common questions

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

### What did VerifyMCP test on the sec-ai: SEC EDGAR MCP server?

VerifyMCP ran 16 checks on sec-ai: SEC EDGAR, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- PyPI project: https://pypi.org/project/sec-finance-ai/
- Socket report: https://socket.dev/pypi/package/sec-finance-ai
- Repository: https://github.com/lkcair/sec-ai-mcp
- Website: https://github.com/lkcair/sec-finance-ai
- Changelog RSS feed: https://verifymcp.io/servers/lkcair-sec-ai/sec-finance-ai.xml
- Changelog JSON feed: https://verifymcp.io/servers/lkcair-sec-ai/sec-finance-ai/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/lkcair-sec-ai/sec-finance-ai.json
- HTML version of this page: https://verifymcp.io/servers/lkcair-sec-ai/sec-finance-ai
